chemaxon.marvin.calculations
Class ChargePlugin

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

public class ChargePlugin
extends MajorMicrospeciesAccessorPlugin

Plugin class for partial charge calculation. Sigma, pi and total charge values can be calculated by this plugin. For formal charge calculation use the following methods: MoleculeGraph.getFormalCharge(), MolAtom.getCharge().

References:

  1. J.Gasteiger and M.Marsili: Tetrahedron Vol. 36. , pp. 3219-3288 (1980)
  2. M.Marsili and J.Gasteiger: International Symposium on Aromaticity, Dubrovnik, Yugoslavia , Sept (1979), Croat.Chim.Acta. (1979)
  3. Steven L. Dixon and Peter C. Jurs: J.Comp.Chem., Vol.13. No.4, 492-504 (1992)
  4. W.J.Mortier, K.V.Genechten and J.Gasteiger: J.Am.Chem.Soc., Vol. 107,829-835 (1985)

API usage example:

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

    // read target molecule
    MolImporter mi = new MolImporter(new ByteArrayInputStream("Clc1cc(Cl)c(Cl)cc1".getBytes()));
    Molecule mol = mi.read();
    mi.close();

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

    // run the calculation
    plugin.run();

    // get charge values for each atom
    int count = mol.getAtomCount();
    for (int i=0; i < count; ++i) {
          double charge = plugin.getTotalCharge(i);
          if (!Double.isNaN(charge)) {
              System.out.println("total charge for atom "+(i+1)+": "+charge);
          }
    }
 

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

Version:
5.3.1, 01/26/2010
Author:
Nora Mate

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
ChargePlugin()
          Constructor.
 
Method Summary
 double getAromaticRingCharge(int index)
          Returns the total partial charge of the smallest aromatic ring containing the specified atom.
 double getAromaticRingCharge(int index, int chgtype)
          Returns the partial charge of the smallest aromatic ring containing the specified atom.
 double getAromaticSystemCharge(int index)
          Returns the total partial charge of the aromatic system containing the specified atom.
 double getAromaticSystemCharge(int index, int chgtype)
          Returns the partial charge of the aromatic system containing the specified atom.
 java.lang.String getErrorMessage()
          Returns the calculation error information message if run() returned false (calculation error): hydrogen valence error.
 int getFormalCharge()
          Returns the formal charge of the molecule.
 int getFormalCharge(int index)
          Returns the formal charge of a specified atom.
 double getPiCharge(int index)
          Returns the pi charge of a specified atom.
 java.lang.String getProductName()
          Returns the product identifier of the plugin as given by LicenseManager.
 java.lang.Object getResult(java.lang.Object type, int index)
          Returns the result item for the specified type and index.
 double getResultantImplicitHCharge(int index)
          Returns the implicit H charge around a central atom
 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 type.
 int getResultDomain(java.lang.Object type)
          Returns the calculation domain CalculatorPlugin.ATOM or CalculatorPlugin.MOLECULE.
 Molecule getResultMolecule()
          Returns the result molecule for display.
 java.lang.Object[] getResultTypes()
          Returns the result types (possible types: "sigma", "pi", "total").
 double getSigmaCharge(int index)
          Returns the sigma charge of a specified atom.
 double getTotalCharge(int index)
          Returns the total charge of a specified atom.
 java.lang.String getTypeString(java.lang.Object type)
          Returns a string representation of the given type.
 boolean handlesMultiFragmentMolecules()
          Returns true if the plugin handles multifragment molecules, false otherwise.
 boolean isLicensed()
          Returns true if the plugin is licensed.
 boolean run()
          Runs the charge calculation.
protected  void setInputMolecule(Molecule mol)
          Sets the input molecule.
 Molecule setMolecule(Molecule mol, boolean st, boolean om)
          Sets the input molecule after an optional standardization and/or modification.
 void setParameters(java.util.Properties params)
          Sets the input parameters for the plugin.
 void setTakeResonantStructures(boolean resonance)
          Sets calculation with resonant structures.
 
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, getResultsAsRGB, getResultsAsString, getResultsAsString, getResultSource, getWarningMessage, isInputMoleculeAromatized, isMsCalc, isMultiThreadedRunEnabled, isNegligibleResult, isOK, isRgrouped, loadClass, readAttribute, removeWhitespace, restoreExplicitHydrogens, setDoublePrecision, setDoublePrecision, setDoublePrecision, setKeepHydrogens, setLicenseEnvironment, 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

ChargePlugin

public ChargePlugin()
Constructor. Creates the charge 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.CHARGE_PLUGIN_GROUP

setParameters

public void setParameters(java.util.Properties params)
                   throws PluginException
Sets the input parameters for the plugin. Charge parameters and value ranges:

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

setTakeResonantStructures

public void setTakeResonantStructures(boolean resonance)
Sets calculation with resonant structures. Default: false.

Parameters:
resonance - is true if charge should be calculated with resonant structures
Since:
Marvin 4.1

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

setMolecule

public Molecule setMolecule(Molecule mol,
                            boolean st,
                            boolean om)
                     throws PluginException
Description copied from class: CalculatorPlugin
Sets the input molecule after an optional standardization and/or modification. Standardization includes plugin specific standardization (e.g. dehydrogenize, aromatize) and sgroup expansion, modification usually means taking a microspecies form, or the major tautomeric form of the input molecule (usually optional). The input molecule is left unchanged (it is cloned before standardization/modification if required).

Overrides:
setMolecule in class CalculatorPlugin
Parameters:
mol - is the input molecule
st - is true if standardization is required
om - is true if original input molecule is to be used for atom indexing false if modified molecule is to be used for atom indexing
Returns:
the molecule to be used for atom indexing
Throws:
PluginException - on error
See Also:
CalculatorPlugin.setInputMolecule(Molecule), CalculatorPlugin.createStandardizedMolecule(Molecule), CalculatorPlugin.createModifiedInputMolecule(Molecule)

handlesMultiFragmentMolecules

public boolean handlesMultiFragmentMolecules()
Description copied from class: CalculatorPlugin
Returns true if the plugin handles multifragment molecules, false otherwise. In the latter case the plugin takes the fragment with more atoms if a multifragment molecule is given as input. The default implementation returns false.

Overrides:
handlesMultiFragmentMolecules in class CalculatorPlugin
Returns:
true if the plugin handles multifragment molecules, false otherwise

run

public boolean run()
            throws PluginException
Runs the charge 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

getFormalCharge

public int getFormalCharge()
Returns the formal charge of the molecule.

Returns:
the formal charge of the molecule
Since:
Marvin 5.2
See Also:
MoleculeGraph.getFormalCharge()

getFormalCharge

public int getFormalCharge(int index)
Returns the formal charge of a specified atom.

Parameters:
index - is the atom index
Returns:
the formal charge of a specified atom
Since:
Marvin 5.2
See Also:
MolAtom.getCharge()

getTotalCharge

public double getTotalCharge(int index)
Returns the total charge of a specified atom. Total charge is the sum of partial charges on the atom.

Parameters:
index - is the atom index
Returns:
the total charge of a specified atom, Double.NaN for implicit H-s
Since:
Marvin 3.4.1
See Also:
MolAtom.getCharge(), MoleculeGraph.getFormalCharge()

getSigmaCharge

public double getSigmaCharge(int index)
Returns the sigma charge of a specified atom.

Parameters:
index - is the atom index
Returns:
the sigma charge of a specified atom, Double.NaN for implicit H-s
Since:
Marvin 3.4.1

getPiCharge

public double getPiCharge(int index)
Returns the pi charge of a specified atom.

Parameters:
index - is the atom index
Returns:
the pi charge of a specified atom, Double.NaN for implicit H-s
Since:
Marvin 3.4.1

getResultantImplicitHCharge

public double getResultantImplicitHCharge(int index)
Returns the implicit H charge around a central atom

Parameters:
index - is the central atom index
Returns:
the implicit H charge around the central atom
Since:
Marvin 3.5

getAromaticSystemCharge

public double getAromaticSystemCharge(int index)
Returns the total partial charge of the aromatic system containing the specified atom.

Parameters:
index - is the atom index
Returns:
the total partial charge of the aromatic system containing the specified atom
Since:
Marvin 3.5

getAromaticSystemCharge

public double getAromaticSystemCharge(int index,
                                      int chgtype)
Returns the partial charge of the aromatic system containing the specified atom.

Parameters:
index - is the atom index
chgtype - is the charge type: 0 - total, 1 - sigma, 2 - pi
Returns:
the total partial charge of the aromatic system containing the specified atom
Since:
Marvin 4.1

getAromaticRingCharge

public double getAromaticRingCharge(int index)
Returns the total partial charge of the smallest aromatic ring containing the specified atom.

Parameters:
index - is the atom index
Returns:
the total partial charge of the smallest aromatic ring containing the specified atom
Since:
Marvin 3.5

getAromaticRingCharge

public double getAromaticRingCharge(int index,
                                    int chgtype)
Returns the partial charge of the smallest aromatic ring containing the specified atom.

Parameters:
index - is the atom index
chgtype - is the charge type: 0 - total, 1 - sigma, 2 - pi
Returns:
the total partial charge of the smallest aromatic ring containing the specified atom
Since:
Marvin 4.1

getResultTypes

public java.lang.Object[] getResultTypes()
Returns the result types (possible types: "sigma", "pi", "total").

Overrides:
getResultTypes in class CalculatorPlugin
Returns:
the result types

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
See Also:
getResultTypes()

getResultCount

public int getResultCount(java.lang.Object type)
Returns the number of result items for the given result type. Charge returns the atom count.

Overrides:
getResultCount in class CalculatorPlugin
Parameters:
type - is the result type
Returns:
the number of result items
See Also:
getResultTypes()

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

getResult

public java.lang.Object getResult(java.lang.Object type,
                                  int index)
                           throws PluginException
Returns the result item for the specified type and index. Charge returns the required charge value as a Double object.

Overrides:
getResult in class CalculatorPlugin
Parameters:
type - is the result type ("total", "pi", "sigma", "implh", ...)
index - is the atom index
Returns:
the result item for the specified type 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. Charge returns the rounded charge value in string format: the value is rounded using the 'precision' input parameter that determines the number of fractional digits displayed.

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

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