Class HuckelAnalysisPlugin

All Implemented Interfaces:
TaggedCalculator, chemaxon.license.Licensable

@PublicAPI public class HuckelAnalysisPlugin extends MajorMicrospeciesAccessorPlugin
Plugin class for Huckel Analysis calculation.

API usage example:

    // create plugin
    HuckelAnalysisPlugin plugin = new HuckelAnalysisPlugin();

    // read target molecule
    MolImporter mi = new MolImporter("target.mol");
    Molecule mol = mi.read();
    mi.close();

    // set plugin parameters
    Properties params = new Properties();
    params.put("type", "hmoorder,hmolocalizationEnergy,hmopiEnergy,hmoelectronDensity,hmochargeDensity");
    plugin.setParameters(params);

    // optional: take major microspecies at pH=7.4
    // skip this if you want to calculate Huckel analysis for the input molecule as it is
    plugin.setpH(7.4);

    // set target molecule
    plugin.setMolecule(mol);

    // run the calculation
    plugin.run();

    // get results
    double piEnergy = plugin.getTotalPiEnergy();
    System.out.println("pi energy: "+piEnergy);
    System.out.println();

    // get and print atomic results in a table
    System.out.println("atom\torder E(+)\torder Nu(-)\tenergy E(+)\tenergy Nu(-)\telectron dens.\tcharge dens.");
    int count = mol.getAtomCount();
    for (int i=0; i < count; ++i) {
       int orderE = plugin.getHMOElectrophilicOrder(i);
       int orderN = plugin.getHMONucleophilicOrder(i);
       double energyE = plugin.getHMOElectrophilicEnergy(i);
       double energyN = plugin.getHMONucleophilicEnergy(i);
       double electronDensity = plugin.getHMOElectronDensity(i);
       double chargeDensity = plugin.getHMOChargeDensity(i);

       String str = ""+(i+1);
       str += "\t";
       str += (orderE != -1) ? ""+orderE : "-";
       str += "\t";
       str += (orderN != -1) ? ""+orderN : "-";
       str += "\t";
       str += !Double.isNaN(energyE) ? plugin.format(energyE) : "-";
       str += "\t";
       str += !Double.isNaN(energyN) ? plugin.format(energyN) : "-";
       str += "\t";
       str += !Double.isNaN(electronDensity) ? plugin.format(electronDensity) : "-";
       str += "\t";
       str += !Double.isNaN(chargeDensity) ? plugin.format(chargeDensity) : "-";
       System.out.println(str);
    }
 

For concurrent plugin example applications using ChemAxon's concurrent framework, refer to the Concurrent plugin examples.

Since:
Marvin 3.4
  • Constructor Details

    • HuckelAnalysisPlugin

      public HuckelAnalysisPlugin()
      Constructor. Creates the Huckel analysis calculator object.
  • Method Details

    • isLicensed

      public boolean isLicensed()
      Returns true if the plugin is licensed. The license checking is based on the product name, returned by getProductName().
      Specified by:
      isLicensed in interface chemaxon.license.Licensable
      Overrides:
      isLicensed in class MajorMicrospeciesAccessorPlugin
      Returns:
      true if the plugin is licensed
    • getProductName

      public String getProductName()
      Returns the product identifier of the plugin as given by LicenseManager.
      Specified by:
      getProductName in class CalculatorPlugin
      Returns:
      The identifier LicenseManager.HUCKEL_ANALYSIS_PLUGIN
    • setParameters

      public void setParameters(Properties params) throws PluginException
      Sets the input parameters for the plugin. Huckel analysis and value ranges:
      • type:
        • hmoorder: Aromatic E(+)/Nu(-) order
        • hmoorder:e: Aromatic E(+) order
        • hmoorder:n: Aromatic Nu(-) order
        • hmolocalizationEnergy: Localization energy L(+)/L(-)
        • hmolocalizationEnergy:e: Localization energy L(+)
        • hmolocalizationEnergy:n: Localization energy L(-)
        • hmopiEnergy: Pi energy
        • hmoeigenValue: eigenvalue
        • hmoeigenVector: eigenvector
        • hmoorbitals: huckel orbital coefficients
        • hmoelectronDensity: electron density
        • hmochargeDensity: charge density
        • order: Aromatic E(+)/Nu(-) order
        • order:e: Aromatic E(+) order
        • order:n: Aromatic Nu(-) order
        • localizationEnergy: Localization energy L(+)/L(-)
        • localizationEnergy:e: Localization energy L(+)
        • localizationEnergy:n: Localization energy L(-)
        • piEnergy: Pi energy
        • eigenValue: eigenvalue
        • eigenVector: eigenvector
        • orbitals: huckel orbital coefficients
        • electronDensity: electron density
        • chargeDensity: charge density
      • precision: 0-8 or inf (default: 2) (number of displayed fractional digits, inf for unrounded value)

      Types starting with "hmo" are calculated using standard HMO parameters.

      Overrides:
      setParameters in class MajorMicrospeciesAccessorPlugin
      Parameters:
      params - is the parameter table
      Throws:
      PluginException - on error
    • setInputMolecule

      protected void setInputMolecule(Molecule mol) throws PluginException
      Sets the input molecule.
      Specified by:
      setInputMolecule in class CalculatorPlugin
      Parameters:
      mol - is the input molecule
      Throws:
      PluginException - on error
    • run

      public boolean run() throws PluginException
      Runs the Huckel analysis calculation.
      Specified by:
      run in class CalculatorPlugin
      Returns:
      true if the calculation was successful, false on calculation error
      Throws:
      PluginException - on error
      See Also:
    • getErrorMessage

      public String getErrorMessage()
      Returns the calculation error information message if run() returned false (calculation error): hydrogen valence error.
      Overrides:
      getErrorMessage in class MajorMicrospeciesAccessorPlugin
      Returns:
      the calculation error information message
    • getWarningMessage

      public String getWarningMessage()
      Returns the calculation warning information message.
      Overrides:
      getWarningMessage in class CalculatorPlugin
      Returns:
      the calculation warning information message
    • getElectrophilicOrder

      @Deprecated public int getElectrophilicOrder(int atom)
      Returns the electrophilic order of an atom, -1 for no value.
      Parameters:
      atom - is the atom index
      Returns:
      the electrophilic order of an atom
    • getHMOElectrophilicOrder

      public int getHMOElectrophilicOrder(int atom)
      Returns the electrophilic order of an atom, -1 for no value. Standard HMO parameters are used in calculation.
      Parameters:
      atom - is the atom index
      Returns:
      the electrophilic order of an atom
      Since:
      Marvin 5.3
    • getNucleophilicOrder

      @Deprecated public int getNucleophilicOrder(int atom)
      Returns the nucleophilic order of an atom, -1 for no value.
      Parameters:
      atom - is the atom index
      Returns:
      the nucleophilic order of an atom
    • getHMONucleophilicOrder

      public int getHMONucleophilicOrder(int atom)
      Returns the nucleophilic order of an atom, -1 for no value. Standard HMO parameters are used in calculation.
      Parameters:
      atom - is the atom index
      Returns:
      the nucleophilic order of an atom
      Since:
      Marvin 5.3
    • getElectrophilicEnergy

      public double getElectrophilicEnergy(int atom)
      Returns the electrophilic energy (localization energy L+) of an atom, Double.NaN for no value.
      Parameters:
      atom - is the atom index
      Returns:
      the electrophilic energy of an atom
    • getHMOElectrophilicEnergy

      public double getHMOElectrophilicEnergy(int atom)
      Returns the electrophilic energy (localization energy L+) of an atom, Double.NaN for no value. Standard HMO parameters are used in calculation.
      Parameters:
      atom - is the atom index
      Returns:
      the electrophilic energy of an atom
      Since:
      Marvin 5.3
    • getNucleophilicEnergy

      public double getNucleophilicEnergy(int atom)
      Returns the nucleophilic energy (localization energy L-) of an atom, Double.NaN for no value.
      Parameters:
      atom - is the atom index
      Returns:
      the nucleophilic energy of an atom
    • getHMONucleophilicEnergy

      public double getHMONucleophilicEnergy(int atom)
      Returns the nucleophilic energy (localization energy L-) of an atom, Double.NaN for no value. Standard HMO parameters are used in calculation.
      Parameters:
      atom - is the atom index
      Returns:
      the nucleophilic energy of an atom
      Since:
      Marvin 5.3
    • getTotalPiEnergy

      @Deprecated public double getTotalPiEnergy()
      Deprecated.
      Returns the total pi energy of the input molecule.
      Returns:
      the total pi energy of the input molecule
    • getHMOTotalPiEnergy

      public double getHMOTotalPiEnergy()
      Returns the total pi energy of the input molecule. Standard HMO parameters are used in calculation.
      Returns:
      the total pi energy of the input molecule
      Since:
      Marvin 5.3
    • getRealEigenValue

      @Deprecated public double[] getRealEigenValue()
      Deprecated.
      Returns the real part of the eigenvalue.
      Returns:
      the real part of the eigenvalue
      Since:
      Marvin 5.1
    • getHMORealEigenValue

      public double[] getHMORealEigenValue()
      Returns the real part of the eigenvalue. Standard HMO parameters are used in calculation.
      Returns:
      the real part of the eigenvalue
      Since:
      Marvin 5.3
    • getEigenVector

      @Deprecated public double[][] getEigenVector()
      Deprecated.
      Returns the eigenvector.
      Returns:
      the eigenvector
      Since:
      Marvin 5.1
    • getHMOEigenVector

      public double[][] getHMOEigenVector()
      Returns the eigenvector. Standard HMO parameters are used in calculation.
      Returns:
      the eigenvector
      Since:
      Marvin 5.3
    • getHuckelOrbitalCoefficients

      @Deprecated public double[][] getHuckelOrbitalCoefficients()
      Returns the huckel orbital coefficients.
      Returns:
      the huckel orbital coefficients
      Since:
      Marvin 5.1.3
    • getHMOHuckelOrbitalCoefficients

      public double[][] getHMOHuckelOrbitalCoefficients()
      Returns the huckel orbital coefficients. Standard HMO parameters are used in calculation.
      Returns:
      the huckel orbital coefficients
      Since:
      Marvin 5.3
    • getElectronDensity

      public double getElectronDensity(int atom)
      Returns the electron density of an atom calculated with HMO, Double.NaN for no value.
      Parameters:
      atom - is the atom index
      Returns:
      the electron density of an atom
      Since:
      Marvin 5.1
    • getHMOElectronDensity

      public double getHMOElectronDensity(int atom)
      Returns the electron density of an atom calculated with HMO, Double.NaN for no value. Standard HMO parameters are used in calculation.
      Parameters:
      atom - is the atom index
      Returns:
      the electron density of an atom
      Since:
      Marvin 5.3
    • getChargeDensity

      public double getChargeDensity(int atom)
      Returns the total charge density of an atom calculated with HMO, Double.NaN for no value.
      Parameters:
      atom - is the atom index
      Returns:
      the total charge density of an atom
      Since:
      Marvin 5.1
    • getHMOChargeDensity

      public double getHMOChargeDensity(int atom)
      Returns the total charge density of an atom calculated with HMO, Double.NaN for no value. Standard HMO parameters are used in calculation.
      Parameters:
      atom - is the atom index
      Returns:
      the total charge density of an atom
      Since:
      Marvin 5.3
    • getResultTypes

      public Object[] getResultTypes()
      Returns the result types.
      Overrides:
      getResultTypes in class CalculatorPlugin
      Returns:
      the result types
    • getTypeString

      public String getTypeString(Object type)
      Returns a string representation of the given type.
      Overrides:
      getTypeString in class CalculatorPlugin
      Parameters:
      type - is the type object
      Returns:
      the type string
    • getResultDomain

      public int getResultDomain(Object type)
      Returns the calculation domain CalculatorPlugin.ATOM or CalculatorPlugin.MOLECULE.
      Overrides:
      getResultDomain in class CalculatorPlugin
      Parameters:
      type - is the result type
      Returns:
      CalculatorPlugin.ATOM for all types except for "pienergy"
      See Also:
    • getResultCount

      public int getResultCount(Object type)
      Returns the number of result items for the given result key. pKa returns the atom count.
      Overrides:
      getResultCount in class CalculatorPlugin
      Parameters:
      type - is the result type
      Returns:
      the number of result items
      See Also:
    • getResult

      public Object getResult(Object type, int index) throws PluginException
      Returns the result item for the specified key and index.
      Overrides:
      getResult in class CalculatorPlugin
      Parameters:
      type - is the result type
      index - is the result index
      Returns:
      the result item for the specified key and index
      Throws:
      PluginException - if the result cannot be returned
      See Also:
    • getResultAsString

      public String getResultAsString(Object type, int index, Object result) throws PluginException
      Returns the specified result in String format. This is the rounded charge value in string format: the value is rounded using the 'precision' input parameter that determines the number of fractional digits displayed. If the result is Double.NaN then returns the empty string.
      Overrides:
      getResultAsString in class CalculatorPlugin
      Parameters:
      type - is the result type
      index - is the result index
      result - is the result item
      Returns:
      the specified result in String format
      Throws:
      PluginException - if an invalid result item is given
    • getResultsAsString

      public String getResultsAsString(Object type, int index, Object result) throws PluginException
      Returns the specified results in String format.
      Overrides:
      getResultsAsString in class CalculatorPlugin
      Parameters:
      type - is the result type
      index - is the result index
      result - is the result item
      Returns:
      the specified result in String format
      Throws:
      PluginException - if an invalid result item is given
    • getResultsAsRGB

      public long getResultsAsRGB(Object type, int index, Object result) throws PluginException
      Returns the specified result color(s) as int format (alpha<<24 + red<<16 + green<<8 + blue).
      Overrides:
      getResultsAsRGB in class CalculatorPlugin
      Parameters:
      type - is the result type
      index - is the result index
      result - is the result item
      Returns:
      the specified result in color as int
      Throws:
      PluginException - if an invalid result item is given
    • getResultMolecule

      public Molecule getResultMolecule() throws PluginException
      Returns the result molecule for display. Atomic results are stored in atom extra labels (MolAtom.getExtraLabel()). Molecular results are stored in molecule properties with keys being the result types (MPropHandler.convertToString(MPropertyContainer, String)).
      Overrides:
      getResultMolecule in class CalculatorPlugin
      Returns:
      the result molecule
      Throws:
      PluginException - on error
      Since:
      Marvin 4.0