Package chemaxon.marvin.calculations
Class ResonancePlugin
java.lang.Object
chemaxon.marvin.plugin.CalculatorPlugin
chemaxon.marvin.calculations.ResonancePlugin
- All Implemented Interfaces:
TaggedCalculator
,chemaxon.license.Licensable
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
-
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
-
Method Summary
Modifier and TypeMethodDescriptionvoid
checkMolecule
(Molecule mol) Checks the input molecule.protected Molecule
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, for removal: This API element is subject to removal in a future version.Returns the calculation error information message or the empty string if there is no error.Returns the product identifier of the plugin as given byLicenseManager
.Returns a warning message if there are no resonants,null
otherwise.Returns the result item for the specified key and index.getResultAsString
(Object type, int index, Object result) Returns the specified result in String format.int
getResultCount
(Object type) Returns the number of result items for the given result key.int
getResultDomain
(Object type) Returns the calculation domain.Returns the result as a document source object.Object[]
Returns the result types.getStructure
(int index) Returns a resonant structure.int
Returns the number of different resonant structures.Molecule[]
Returns resonant structures inMolecule[]
array.boolean
Returnstrue
if the plugin handles multifragment molecules,false
otherwise.boolean
For internal use only.boolean
run()
Calculates the resonant structures.void
setCleanResultStructures
(boolean clean) Sets 2D cleaning of the result structures: iftrue
then resonants returned bygetStructure(int)
andgetStructures()
methods are cleaned in 2D.protected void
setInputMolecule
(Molecule mol) Sets the input molecule.void
setInputMoleculeModified
(boolean inputMoleculeModified) Deprecated, for removal: This API element is subject to removal in a future version.Not used.void
setMaxStructureCount
(int max) Sets the maximum number of structures to be generated.void
setParameters
(Properties params) Sets the input parameters for the plugin.void
setpH
(double pH) Deprecated, for removal: This API element is subject to removal in a future version.As of Marvin 5.0 pH effect is not consideredvoid
Sets a progress observer to be used inrun()
to display progress status.void
setSymmetryFiltering
(boolean filtering) Sets symmetry fitlering: iftrue
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.tags()
Returns the set of tags reported by this calculator.Methods inherited from class chemaxon.marvin.plugin.CalculatorPlugin
addHeavyAtomLimitChecker, addInputChecker, arrangeHydrogenIncerments, canRepeat, checkLicense, checkType, containsCoordinateBond, containsMulticenterSgroup, containsPseudoAtom, containsSRUSgroup, create, create, createModifiedInputMolecule, dehydrogenize, format, format, format, format, getAtomCount, getAtomIndex, getAtomIndexMap, getAtomIndexMapping, getCalcMolecule, getDisplayMolecule, getDocument, getDoublePrecision, getExplicitHydrogenData, getInputMolDim, getMainMolecule, getOriginalMolecule, 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, loadPluginClass, loadPluginClass, readAttribute, removeWhitespace, restoreExplicitHydrogens, setAtomIndexMap, setChemicalTermsArgument, setChemicalTermsParameters, setDoublePrecision, setDoublePrecision, setDoublePrecision, setKeepHydrogens, setLicenseEnvironment, setMolecule, setMolecule, setMolecule, setMolecule, standardizeIonicGroups
-
Constructor Details
-
ResonancePlugin
public ResonancePlugin()Constructor.
-
-
Method Details
-
getProductName
Description copied from class:CalculatorPlugin
Returns the product identifier of the plugin as given byLicenseManager
. The name is used by theCalculatorPlugin.isLicensed()
method.- Specified by:
getProductName
in classCalculatorPlugin
- Returns:
- product identifier or a default string
-
handlesMultiFragmentMolecules
public boolean handlesMultiFragmentMolecules()Returnstrue
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. Returnstrue
if parameter "single" is set to "false",false
otherwise (default:false
).- Overrides:
handlesMultiFragmentMolecules
in classCalculatorPlugin
- Returns:
- true if the plugin handles multifragment molecules, false otherwise
-
setProgressMonitor
Sets a progress observer to be used inrun()
to display progress status. Short calculations may ignore the observer object. The default implementation does nothing.- Overrides:
setProgressMonitor
in classCalculatorPlugin
- Parameters:
pmon
- is the progress monitor, may benull
-
setParameters
Sets the input parameters for the plugin. Parameters and value ranges:- single: "true" if single fragment mode (calculation is performed separately for each fragment) (default: "false")
- type: structure,structures,count
- max: max structure count
- pH: consider pH effect at this pH
(default:
Double.NaN
- do not consider pH effect) - symfilter: true if filter symmetrical structures, false if allow duplicates (default: true)
- canonical: "true" if canonical form should be taken (default: "false")
- mcontrib: "true" if take major contributors (default: "true")
- Overrides:
setParameters
in classCalculatorPlugin
- Parameters:
params
- is the parameter table- Throws:
PluginException
- on error
-
setCleanResultStructures
public void setCleanResultStructures(boolean clean) Sets 2D cleaning of the result structures: iftrue
then resonants returned bygetStructure(int)
andgetStructures()
methods are cleaned in 2D. Default:false
.- Parameters:
clean
- iftrue
then result structures are cleaned in 2D- Since:
- Marvin 5.2
-
setSymmetryFiltering
public void setSymmetryFiltering(boolean filtering) Sets symmetry fitlering: iftrue
then symmetrical structures are filtered out, otherwise symmetrical structures are returned as duplicates. Default:true
.- Parameters:
filtering
- istrue
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
Deprecated, for removal: This API element is subject to removal in a future version.As of Marvin 5.0 pH effect is not consideredSets the pH to be considered in calculation. By default, no pH effect considered (Double.NaN
).- Parameters:
pH
- is the pH value
-
setInputMoleculeModified
@Deprecated(forRemoval=true) @SubjectToRemoval(date=JUL_01_2025) public void setInputMoleculeModified(boolean inputMoleculeModified) Deprecated, for removal: This API element is subject to removal in a future version.Not used.Sets whether the input molecule should be modified and returned as calculation result. Default:false
.- Parameters:
inputMoleculeModified
- istrue
if input molecule should be modified,false
if it should be preserved- Since:
- Marvin 4.1
-
checkMolecule
Checks the input molecule. Throws exception if the molecule contains R-groups.- Overrides:
checkMolecule
in classCalculatorPlugin
- Parameters:
mol
- is the input molecule- Throws:
PluginException
- with error message for the user if the molecule is refused
-
createStandardizedMolecule
@Deprecated(forRemoval=true) @SubjectToRemoval(date=JUL_01_2025) protected Molecule createStandardizedMolecule(Molecule mol, boolean om) throws PluginException Deprecated, for removal: This API element is subject to removal in a future version.UsecreateStandardizedMolecule(Molecule)
insteadCreates standardized molecule, the original input molecule is cloned.- Overrides:
createStandardizedMolecule
in classCalculatorPlugin
- Parameters:
mol
- is the input moleculeom
- 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
-
createStandardizedMolecule
Creates standardized molecule, the original input molecule is cloned only if the original molecule should not be modified.- Overrides:
createStandardizedMolecule
in classCalculatorPlugin
- Parameters:
mol
- is the input molecule- Returns:
- the standardized molecule
- Throws:
PluginException
- on error- See Also:
-
setInputMolecule
Sets the input molecule.- Specified by:
setInputMolecule
in classCalculatorPlugin
- 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
- istrue
if canonical form should be taken- Since:
- Marvin 4.1
- See Also:
-
setTakeMajorContributors
public void setTakeMajorContributors(boolean mcontrib) Sets whether major contributors should be taken. Default:true
.- Parameters:
mcontrib
- istrue
if major contributors should be taken- See Also:
-
run
Calculates the resonant structures.- Specified by:
run
in classCalculatorPlugin
- Returns:
- true if the calculation was successful, false if the number of ionizable atoms exceeds the specified limit
- Throws:
PluginException
- on error- See Also:
-
getResultSource
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 classCalculatorPlugin
- 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:
-
getStructure
Returns a resonant structure.- Parameters:
index
- is the structure index- Returns:
- the resonant structure
- See Also:
-
getStructures
Returns resonant structures inMolecule[]
array.- Returns:
- resonant structures
- See Also:
-
getResultTypes
Returns the result types.- Overrides:
getResultTypes
in classCalculatorPlugin
- Returns:
- the result types
-
getResultDomain
Returns the calculation domain.- Overrides:
getResultDomain
in classCalculatorPlugin
- Parameters:
type
- is the result type- Returns:
- the calculation domain
- See Also:
-
getResultCount
Returns the number of result items for the given result key.- Overrides:
getResultCount
in classCalculatorPlugin
- Parameters:
type
- is the result type- Returns:
- the number of result items
- See Also:
-
getResult
Returns the result item for the specified key and index.- Overrides:
getResult
in classCalculatorPlugin
- Parameters:
type
- is the result typeindex
- 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
Returns the specified result in String format.- Overrides:
getResultAsString
in classCalculatorPlugin
- Parameters:
type
- is the result typeindex
- is the result indexresult
- is the result item- Returns:
- the specified result in String format
- Throws:
PluginException
- if an invalid result item is given
-
getRemark
Returns a warning message if there are no resonants,null
otherwise.- Overrides:
getRemark
in classCalculatorPlugin
- Returns:
- a warning message if there are no resonants
-
getErrorMessage
Returns the calculation error information message or the empty string if there is no error.- Overrides:
getErrorMessage
in classCalculatorPlugin
- Returns:
- the calculation error information message
-
standardize
Standardizes the molecule. This is the same as the default standardization, but performs daylight aromatization.- Overrides:
standardize
in classCalculatorPlugin
- Parameters:
mol
- is the molecule to be standardized
-
isMultiThreadedRunEnabled
public boolean isMultiThreadedRunEnabled()For internal use only.- Overrides:
isMultiThreadedRunEnabled
in classCalculatorPlugin
- Returns:
true
if multi-threaded run is enabled
-
tags
Description copied from interface:TaggedCalculator
Returns the set of tags reported by this calculator. The same tags should be returned unless the calculator is modified using a mutator method, e.g. if some settings are changed.New tags can be introduced and reported in the future by existing calculators, so do not depend on the exact set of reported tags, only check for the presence of certain tags.
- Returns:
- the tags
-
createStandardizedMolecule(Molecule)
instead