chemaxon.marvin.calculations
Class HuckelAnalysisPlugin

java.lang.Object
  extended by chemaxon.marvin.plugin.CalculatorPlugin
      extended by chemaxon.marvin.calculations.MajorMicrospeciesAccessorPlugin
          extended by chemaxon.marvin.calculations.HuckelAnalysisPlugin
All Implemented Interfaces:
chemaxon.license.Licensable

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
Version:
Marvin 5.3, 11/12/2009
Author:
Nora Mate, Zsolt Mohacsi

Nested Class Summary
 
Nested classes/interfaces inherited from class chemaxon.marvin.plugin.CalculatorPlugin
CalculatorPlugin.HydrogenData
 
Field Summary
 
Fields inherited from class chemaxon.marvin.calculations.MajorMicrospeciesAccessorPlugin
ionizer
 
Fields inherited from class chemaxon.marvin.plugin.CalculatorPlugin
ATOM, BLUE, CALCRGB_OFF, COVALENT_HYDRATION_ERROR_REMARK, CRITICAL_ERROR_MSG, EPSILON, explicitHydrogens, INCORRECT_AROMATIC_NITROGEN_REMARK, INSTABLE_TAUTOMERIC_FORM_REMARK, KEEP_HYDROGENS, keepHydrogens, licenseEnvironment, MOLECULE, MOLECULES, NAN, PLUGIN_CLASS_KEY, PLUGIN_DIR, RED, TRUE
 
Constructor Summary
HuckelAnalysisPlugin()
          Constructor.
 
Method Summary
 double getChargeDensity(int atom)
          Returns the total charge density of an atom calculated with HMO, Double.NaN for no value.
 double[][] getEigenVector()
          Deprecated. Use getHMOEigenVector()
 double getElectronDensity(int atom)
          Returns the electron density of an atom calculated with HMO, Double.NaN for no value.
 double getElectrophilicEnergy(int atom)
          Returns the electrophilic energy (localization energy L+) of an atom, Double.NaN for no value.
 int getElectrophilicOrder(int atom)
          Deprecated. Use getHMOElectrophilicOrder(int)
 java.lang.String getErrorMessage()
          Returns the calculation error information message if run() returned false (calculation error): hydrogen valence error.
 double getHMOChargeDensity(int atom)
          Returns the total charge density of an atom calculated with HMO, Double.NaN for no value.
 double[][] getHMOEigenVector()
          Returns the eigenvector.
 double getHMOElectronDensity(int atom)
          Returns the electron density of an atom calculated with HMO, Double.NaN for no value.
 double getHMOElectrophilicEnergy(int atom)
          Returns the electrophilic energy (localization energy L+) of an atom, Double.NaN for no value.
 int getHMOElectrophilicOrder(int atom)
          Returns the electrophilic order of an atom, -1 for no value.
 double[][] getHMOHuckelOrbitalCoefficients()
          Returns the huckel orbital coefficients.
 double getHMONucleophilicEnergy(int atom)
          Returns the nucleophilic energy (localization energy L-) of an atom, Double.NaN for no value.
 int getHMONucleophilicOrder(int atom)
          Returns the nucleophilic order of an atom, -1 for no value.
 double[] getHMORealEigenValue()
          Returns the real part of the eigenvalue.
 double getHMOTotalPiEnergy()
          Returns the total pi energy of the input molecule.
 double[][] getHuckelOrbitalCoefficients()
          Deprecated. Use getHMOHuckelOrbitalCoefficients()
 double getNucleophilicEnergy(int atom)
          Returns the nucleophilic energy (localization energy L-) of an atom, Double.NaN for no value.
 int getNucleophilicOrder(int atom)
          Deprecated. Use getHMONucleophilicOrder(int)
 java.lang.String getProductName()
          Returns the product identifier of the plugin as given by LicenseManager.
 double[] getRealEigenValue()
          Deprecated. Use getHMORealEigenValue()
 java.lang.Object getResult(java.lang.Object type, int index)
          Returns the result item for the specified key and index.
 java.lang.String getResultAsString(java.lang.Object type, int index, java.lang.Object result)
          Returns the specified result in String format.
 int getResultCount(java.lang.Object type)
          Returns the number of result items for the given result key.
 int getResultDomain(java.lang.Object type)
          Returns the calculation domain CalculatorPlugin.ATOM or CalculatorPlugin.MOLECULE.
 Molecule getResultMolecule()
          Returns the result molecule for display.
 long getResultsAsRGB(java.lang.Object type, int index, java.lang.Object result)
          Returns the specified result color(s) as int format (alpha<<24 + red<<16 + green<<8 + blue).
 java.lang.String getResultsAsString(java.lang.Object type, int index, java.lang.Object result)
          Returns the specified results in String format.
 java.lang.Object[] getResultTypes()
          Returns the result types.
 double getTotalPiEnergy()
          Deprecated. Use getHMOTotalPiEnergy()
 java.lang.String getTypeString(java.lang.Object type)
          Returns a string representation of the given type.
 java.lang.String getWarningMessage()
          Returns the calculation warning information message.
 boolean isLicensed()
          Returns true if the plugin is licensed.
 boolean run()
          Runs the Huckel analysis calculation.
protected  void setInputMolecule(Molecule mol)
          Sets the input molecule.
 void setParameters(java.util.Properties params)
          Sets the input parameters for the plugin.
 
Methods inherited from class chemaxon.marvin.calculations.MajorMicrospeciesAccessorPlugin
checkMolecule, createModifiedInputMolecule, getIonizerErrorMessage, getpH, setpH, standardize
 
Methods inherited from class chemaxon.marvin.plugin.CalculatorPlugin
arrangeHydrogenIncerments, canRepeat, checkLicense, checkType, containsCoordinateBond, containsMulticenterSgroup, containsPseudoAtom, containsSRUSgroup, create, createStandardizedMolecule, createStandardizedMolecule, dehydrogenize, format, format, format, format, getAtomCount, getAtomIndex, getCalcMolecule, getDisplayMolecule, getDocument, getDoublePrecision, getExplicitHydrogenData, getInputMolDim, getMainMolecule, getPluginResource, getQueryMoleculeErrorMessage, getRemark, getResult, getResult, getResult, getResultAsRGB, getResultAsRGB, getResultAsString, getResultCount, getResultDomain, getResultMessage, getResultMolecules, getResultsAsRGB, getResultsAsString, getResultSource, handlesMultiFragmentMolecules, isInputMoleculeAromatized, isMsCalc, isMultiThreadedRunEnabled, isNegligibleResult, isOK, isRgrouped, loadClass, readAttribute, removeWhitespace, restoreExplicitHydrogens, setDoublePrecision, setDoublePrecision, setDoublePrecision, setKeepHydrogens, setLicenseEnvironment, setMolecule, setMolecule, setMolecule, setMolecule, setProgressMonitor, standardizeIonicGroups, standardizeNeutralGroups
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

HuckelAnalysisPlugin

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

Method Detail

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 java.lang.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(java.util.Properties params)
                   throws PluginException
Sets the input parameters for the plugin. Huckel analysis and value ranges:

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:
CalculatorPlugin.getErrorMessage()

getErrorMessage

public java.lang.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 java.lang.String getWarningMessage()
Returns the calculation warning information message.

Overrides:
getWarningMessage in class CalculatorPlugin
Returns:
the calculation warning information message

getElectrophilicOrder

public int getElectrophilicOrder(int atom)
Deprecated. Use getHMOElectrophilicOrder(int)

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

public int getNucleophilicOrder(int atom)
Deprecated. Use getHMONucleophilicOrder(int)

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

public double getTotalPiEnergy()
Deprecated. Use getHMOTotalPiEnergy()

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

public double[] getRealEigenValue()
Deprecated. Use getHMORealEigenValue()

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

public double[][] getEigenVector()
Deprecated. Use getHMOEigenVector()

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

public double[][] getHuckelOrbitalCoefficients()
Deprecated. Use getHMOHuckelOrbitalCoefficients()

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 java.lang.Object[] getResultTypes()
Returns the result types.

Overrides:
getResultTypes in class CalculatorPlugin
Returns:
the result types

getTypeString

public java.lang.String getTypeString(java.lang.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(java.lang.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:
getResultTypes()

getResultCount

public int getResultCount(java.lang.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:
getResultTypes()

getResult

public java.lang.Object getResult(java.lang.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:
getResultTypes()

getResultAsString

public java.lang.String getResultAsString(java.lang.Object type,
                                          int index,
                                          java.lang.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 java.lang.String getResultsAsString(java.lang.Object type,
                                           int index,
                                           java.lang.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(java.lang.Object type,
                            int index,
                            java.lang.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 (Molecule.getProperty(String)).

Overrides:
getResultMolecule in class CalculatorPlugin
Returns:
the result molecule
Throws:
PluginException - on error
Since:
Marvin 4.0