Class ResonancePlugin

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

@PublicApi 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
  • Constructor Details

    • ResonancePlugin

      public ResonancePlugin()
      Constructor.
  • Method Details

    • getProductName

      public 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(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(Properties params) throws PluginException
      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 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

      @Deprecated(forRemoval=true) @SubjectToRemoval(date=JUL_01_2025) public 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 considered
      Sets 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 - 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

      @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.
      Creates standardized molecule, the original input molecule is cloned.
      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
    • 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:
    • 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:
    • 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:
    • 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:
    • getResultSource

      public 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:
    • getStructure

      public Molecule getStructure(int index)
      Returns a resonant structure.
      Parameters:
      index - is the structure index
      Returns:
      the resonant structure
      See Also:
    • getStructures

      public Molecule[] getStructures()
      Returns resonant structures in Molecule[] array.
      Returns:
      resonant structures
      See Also:
    • getResultTypes

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

      public int getResultDomain(Object type)
      Returns the calculation domain.
      Overrides:
      getResultDomain in class CalculatorPlugin
      Parameters:
      type - is the result type
      Returns:
      the calculation domain
      See Also:
    • getResultCount

      public int getResultCount(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:
    • 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.
      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 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 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
    • tags

      public Set<CalculatorTag> 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