chemaxon.marvin.calculations
Class ResonancePlugin

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

public class ResonancePlugin
extends CalculatorPlugin

Plugin class for finding resonant structures.

API usage example:

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

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

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

    // run the calculation
    plugin.run();

    // get the resonant structures
    System.out.println("Resonant structures");
    int count = plugin.getStructureCount();
    for (int i=0; i < count; ++i) {
        Molecule structure = plugin.getStructure(i);
        System.out.println(structure.toFormat("smiles"));
    }
 

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

Since:
Marvin 4.0
Version:
5.2 01/15/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.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
ResonancePlugin()
          Constructor.
 
Method Summary
 void checkMolecule(Molecule mol)
          Checks the input molecule.
protected  Molecule createStandardizedMolecule(Molecule mol)
          Creates standardized molecule, the original input molecule is cloned only if the original molecule should not be modified.
protected  Molecule createStandardizedMolecule(Molecule mol, boolean om)
          Deprecated. Use createStandardizedMolecule(Molecule) instead
 java.lang.String getErrorMessage()
          Returns the calculation error information message or the empty string if there is no error.
 java.lang.String getProductName()
          Returns the product identifier of the plugin as given by LicenseManager.
 java.lang.String getRemark()
          Returns a warning message if there are no resonants, null otherwise.
 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.
 chemaxon.marvin.plugin.PluginMDocSource getResultSource()
          Returns the result as a document source object.
 java.lang.Object[] getResultTypes()
          Returns the result types.
 Molecule getStructure(int index)
          Returns a resonant structure.
 int getStructureCount()
          Returns the number of different resonant structures.
 Molecule[] getStructures()
          Returns resonant structures in Molecule[] array.
 boolean handlesMultiFragmentMolecules()
          Returns true if the plugin handles multifragment molecules, false otherwise.
 boolean isMultiThreadedRunEnabled()
          For internal use only.
 boolean run()
          Calculates the resonant structures.
 void setCleanResultStructures(boolean clean)
          Sets 2D cleaning of the result structures: if true then resonants returned by getStructure(int) and getStructures() methods are cleaned in 2D.
protected  void setInputMolecule(Molecule mol)
          Sets the input molecule.
 void setInputMoleculeModified(boolean inputMoleculeModified)
          Deprecated. Not used.
 void setMaxStructureCount(int max)
          Sets the maximum number of structures to be generated.
 void setParameters(java.util.Properties params)
          Sets the input parameters for the plugin.
 void setpH(double pH)
          Deprecated. As of Marvin 5.0 pH effect is not considered
 void setProgressMonitor(chemaxon.common.util.MProgressMonitor pmon)
          Sets a progress observer to be used in run() to display progress status.
 void setSymmetryFiltering(boolean filtering)
          Sets symmetry fitlering: if true then symmetrical structures are filtered out, otherwise symmetrical structures are returned as duplicates.
 void setTakeCanonicalForm(boolean canonical)
          Sets whether canonical form should be taken.
 void setTakeMajorContributors(boolean mcontrib)
          Sets whether major contributors should be taken.
 void standardize(Molecule mol)
          Standardizes the molecule.
 
Methods inherited from class chemaxon.marvin.plugin.CalculatorPlugin
arrangeHydrogenIncerments, canRepeat, checkLicense, checkType, containsCoordinateBond, containsMulticenterSgroup, containsPseudoAtom, containsSRUSgroup, create, createModifiedInputMolecule, dehydrogenize, format, format, format, format, getAtomCount, getAtomIndex, getCalcMolecule, getDisplayMolecule, getDocument, getDoublePrecision, getExplicitHydrogenData, getInputMolDim, getMainMolecule, getpH, getPluginResource, getQueryMoleculeErrorMessage, getResult, getResult, getResult, getResultAsRGB, getResultAsRGB, getResultAsString, getResultCount, getResultDomain, getResultMessage, getResultMolecule, getResultMolecules, getResultsAsRGB, getResultsAsRGB, getResultsAsString, getResultsAsString, getTypeString, getWarningMessage, isInputMoleculeAromatized, isLicensed, isMsCalc, isNegligibleResult, isOK, isRgrouped, loadClass, readAttribute, removeWhitespace, restoreExplicitHydrogens, setDoublePrecision, setDoublePrecision, setDoublePrecision, setKeepHydrogens, setLicenseEnvironment, setMolecule, setMolecule, setMolecule, setMolecule, standardizeIonicGroups, standardizeNeutralGroups
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ResonancePlugin

public ResonancePlugin()
Constructor.

Method Detail

getProductName

public java.lang.String getProductName()
Description copied from class: CalculatorPlugin
Returns the product identifier of the plugin as given by LicenseManager. The name is used by the CalculatorPlugin.isLicensed() method.

Specified by:
getProductName in class CalculatorPlugin
Returns:
product identifier or a default string

handlesMultiFragmentMolecules

public boolean handlesMultiFragmentMolecules()
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. Returns true if parameter "single" is set to "false", false otherwise (default: false).

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

setProgressMonitor

public void setProgressMonitor(chemaxon.common.util.MProgressMonitor pmon)
Sets a progress observer to be used in run() to display progress status. Short calculations may ignore the observer object. The default implementation does nothing.

Overrides:
setProgressMonitor in class CalculatorPlugin
Parameters:
pmon - is the progress monitor, may be null

setParameters

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

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

setCleanResultStructures

public void setCleanResultStructures(boolean clean)
Sets 2D cleaning of the result structures: if true then resonants returned by getStructure(int) and getStructures() methods are cleaned in 2D. Default: false.

Parameters:
clean - if true then result structures are cleaned in 2D
Since:
Marvin 5.2

setSymmetryFiltering

public void setSymmetryFiltering(boolean filtering)
Sets symmetry fitlering: if true then symmetrical structures are filtered out, otherwise symmetrical structures are returned as duplicates. Default: true.

Parameters:
filtering - is true if symmetrical structures should be filtered out

setMaxStructureCount

public void setMaxStructureCount(int max)
Sets the maximum number of structures to be generated. Default: 1000.

Parameters:
max - is the maximum number of structures to be generated
Since:
Marvin 4.1

setpH

public void setpH(double pH)
Deprecated. As of Marvin 5.0 pH effect is not considered

Sets the pH to be considered in calculation. By default, no pH effect considered (Double.NaN).

Parameters:
pH - is the pH value

setInputMoleculeModified

public void setInputMoleculeModified(boolean inputMoleculeModified)
Deprecated. Not used.

Sets whether the input molecule should be modified and returned as calculation result. Default: false.

Parameters:
inputMoleculeModified - is true if input molecule should be modified, false if it should be preserved
Since:
Marvin 4.1

checkMolecule

public void checkMolecule(Molecule mol)
                   throws PluginException
Checks the input molecule. Throws exception if the molecule contains R-groups.

Overrides:
checkMolecule in class CalculatorPlugin
Parameters:
mol - is the input molecule
Throws:
PluginException - with error message for the user if the molecule is refused

createStandardizedMolecule

protected Molecule createStandardizedMolecule(Molecule mol,
                                              boolean om)
                                       throws PluginException
Deprecated. Use createStandardizedMolecule(Molecule) instead

Creates standardized molecule, the original input molecule is cloned only if the original molecule should not be modified.

Overrides:
createStandardizedMolecule in class CalculatorPlugin
Parameters:
mol - is the input molecule
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 standardized molecule
Throws:
PluginException - on error
See Also:
#see #is InputMoleculeModified()

createStandardizedMolecule

protected Molecule createStandardizedMolecule(Molecule mol)
                                       throws PluginException
Creates standardized molecule, the original input molecule is cloned only if the original molecule should not be modified.

Overrides:
createStandardizedMolecule in class CalculatorPlugin
Parameters:
mol - is the input molecule
Returns:
the standardized molecule
Throws:
PluginException - on error
See Also:
#see #is InputMoleculeModified()

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

setTakeCanonicalForm

public void setTakeCanonicalForm(boolean canonical)
Sets whether canonical form should be taken. Default: false.

Parameters:
canonical - is true if canonical form should be taken
Since:
Marvin 4.1
See Also:
getStructure(int), getStructures(), getStructureCount()

setTakeMajorContributors

public void setTakeMajorContributors(boolean mcontrib)
Sets whether major contributors should be taken. Default: true.

Parameters:
mcontrib - is true if major contributors should be taken
See Also:
getStructure(int), getStructures(), getStructureCount()

run

public boolean run()
            throws PluginException
Calculates the resonant structures.

Specified by:
run in class CalculatorPlugin
Returns:
true if the calculation was successful, false if the number of ionizable atoms exceeds the specified limit
Throws:
PluginException - on error
See Also:
CalculatorPlugin.getErrorMessage()

getResultSource

public chemaxon.marvin.plugin.PluginMDocSource getResultSource()
                                                        throws PluginException
Returns the result as a document source object. This is useful for displaying the molecules in a viewer dynamically as they become available instead of collecting all results before display.

Overrides:
getResultSource in class CalculatorPlugin
Returns:
the document source interface
Throws:
PluginException - on error
Since:
Marvin 5.0

getStructureCount

public int getStructureCount()
Returns the number of different resonant structures.

Returns:
the number of different resonant structures
See Also:
setTakeCanonicalForm(boolean), setTakeMajorContributors(boolean)

getStructure

public Molecule getStructure(int index)
Returns a resonant structure.

Parameters:
index - is the structure index
Returns:
the resonant structure
See Also:
setTakeCanonicalForm(boolean), setTakeMajorContributors(boolean)

getStructures

public Molecule[] getStructures()
Returns resonant structures in Molecule[] array.

Returns:
resonant structures
See Also:
setTakeCanonicalForm(boolean), setTakeMajorContributors(boolean)

getResultTypes

public java.lang.Object[] getResultTypes()
Returns the result types.

Overrides:
getResultTypes in class CalculatorPlugin
Returns:
the result types

getResultDomain

public int getResultDomain(java.lang.Object type)
Returns the calculation domain.

Overrides:
getResultDomain in class CalculatorPlugin
Parameters:
type - is the result type
Returns:
the calculation domain
See Also:
getResultTypes()

getResultCount

public int getResultCount(java.lang.Object type)
Returns the number of result items for the given result key.

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:
CalculatorPlugin.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.

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

getRemark

public java.lang.String getRemark()
Returns a warning message if there are no resonants, null otherwise.

Overrides:
getRemark in class CalculatorPlugin
Returns:
a warning message if there are no resonants

getErrorMessage

public java.lang.String getErrorMessage()
Returns the calculation error information message or the empty string if there is no error.

Overrides:
getErrorMessage in class CalculatorPlugin
Returns:
the calculation error information message

standardize

public void standardize(Molecule mol)
Standardizes the molecule. This is the same as the default standardization, but performs daylight aromatization.

Overrides:
standardize in class CalculatorPlugin
Parameters:
mol - is the molecule to be standardized

isMultiThreadedRunEnabled

public boolean isMultiThreadedRunEnabled()
For internal use only.

Overrides:
isMultiThreadedRunEnabled in class CalculatorPlugin
Returns:
true if multi-threaded run is enabled