Class GeometryPlugin

java.lang.Object
chemaxon.marvin.plugin.CalculatorPlugin
chemaxon.marvin.calculations.GeometryPlugin
All Implemented Interfaces:
chemaxon.license.Licensable

@PublicAPI public class GeometryPlugin extends CalculatorPlugin
Plugin class for geometric properties calculations. Data types:
  • "dreidingenergy"
  • "distance"
  • "angle"
  • "dihedral"
  • "hindrance",
  • "minimalprojectionarea"
  • "maximalprojectionarea"
  • "minimalprojectionradius"
  • "maximalprojectionradius"
  • "volume",
  • "minz",
  • "maxz",

API usage example:

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

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

    // set target molecule
    plugin.setMolecule(mol);
    
    // set parameters for calculation
    plugin.setCalculateForLEConformer("if2D");
    plugin.setCalculateEnergy(true); // sets the energy calculation
    plugin.setCalculateMoleculeProjections(true); // sets the calculation of molecule projections

    // run the calculation
    plugin.run();

    // get results
    double energy = plugin.getDreidingEnergy();
    double distance = plugin.getDistance(2,4);
    double angle = plugin.getAngle(4,2,6);
    int[] atoms = { 2, 1, 4, 6 };
    double dihedral = plugin.getDihedral(atoms);
    double hindrance = plugin.getStericHindrance(5); // steric hindrance of 5th atom
    double minimalProjectionArea = plugin.getMinimalProjectionArea();
    double maximalProjectionArea = plugin.getMaximalProjectionArea();
    double minimalProjectionRadius = plugin.getMinimalProjectionRadius();
    double maximalProjectionRadius = plugin.getMaximalProjectionRadius();

    // do something with the results ...
 

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

Since:
Marvin 4.1 02/21/2006
  • Constructor Details

    • GeometryPlugin

      public GeometryPlugin()
      Constructor.
  • Method Details

    • getProductName

      public String getProductName()
      Returns the product identifier of the plugin as given by LicenseManager.
      Specified by:
      getProductName in class CalculatorPlugin
      Returns:
      The identifier LicenseManager.GEOMETRY_PLUGIN_GROUP
    • setParameters

      public void setParameters(Properties params) throws PluginException
      Sets the input parameters for the plugin. Parameters:
      • type: result types, separated by ',', possible values:
        • "dreidingenergy",
        • "mmff94energy",
        • "distance" (atomic)
        • "angle" (atomic)
        • "dihedral" (atomic)
        • "hindrance" (atomic)
        • "minimalprojectionarea"
        • "maximalprojectionarea"
        • "minimalprojectionradius"
        • "maximalprojectionradius"
        • "volume",
        • "minz",
        • "maxz",
        (default: all molecular types)
      • atoms: <atom1-...-atomn> valid for type="distance" (n=2), "angle" (n=3) and "dihedral" (n=4) calculations only, sets the atoms used by cxcalc, for internal use only; API usage: call getDistance(int,int) or getDistance(int[]).
      • optimizeprojection: [true|false] sets projection optimization (default: false)
      Overrides:
      setParameters in class CalculatorPlugin
      Parameters:
      params - is the parameter table
      Throws:
      PluginException - on error
    • setProgressMonitor

      public void setProgressMonitor(MProgressMonitor pmon)
      Sets a progress observer to be used 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 observer object, may be null
    • setCalculateVolume

      public void setCalculateVolume(boolean calculateVolume)
    • 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.
      Overrides:
      handlesMultiFragmentMolecules in class CalculatorPlugin
      Returns:
      true if the plugin handles multifragment molecules, false otherwise
    • checkMolecule

      public void checkMolecule(Molecule mol) throws PluginException
      Checks the input molecule. Throws exception if the molecule is RxnMolecule or 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
    • 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
    • setCalculateEnergy

      public void setCalculateEnergy(boolean e)
      Sets the calculation of dreiding energy.
      Parameters:
      e - if true then dreiding energy is calculated
    • setCalculateMMFF94Energy

      public void setCalculateMMFF94Energy(boolean mmffe)
      Sets the calculation of MMFF94 energy.
      Parameters:
      mmffe - if true then MMFF94 energy is calculated
      Since:
      Marvin 5.4
      See Also:
    • setMMFF94Optimization

      public void setMMFF94Optimization(boolean opt)
      Sets MMFF94 optimization.
      Parameters:
      opt - if true then MMFF94 optimization is performed
      Since:
      Marvin 5.4
      See Also:
    • setCalculateForLEConformer

      public void setCalculateForLEConformer(String condition)
      Sets the condition for lowest energy conformer calculation before geometry calculations are processed.

      Possible values:

      • "if2D" - if molecule is in 2D
      • "never" - never, always use the input molecule for calculations
      • "always" - always calculate with the lowest energy conformer
      Parameters:
      condition - is the condition for lowest energy conformer calculation
    • setOptimization

      public void setOptimization(int opt)
      Sets the optimization criteria for lowest energy conformer calculation.
      Parameters:
      opt - is the optimization limit for the calculation
    • getLowestEnergyConformer

      public Molecule getLowestEnergyConformer()
      Returns the lowest energy conformer of the molecule.
      Returns:
      the lowest energy conformer
    • setLicenseEnvironment

      public void setLicenseEnvironment(String env)
      Description copied from class: CalculatorPlugin
      Sets license environment to be stored.
      Specified by:
      setLicenseEnvironment in interface chemaxon.license.Licensable
      Overrides:
      setLicenseEnvironment in class CalculatorPlugin
      Parameters:
      env - environment String to be stored and passed to the LicenseHandler in the isLicensed method
    • getDreidingEnergy

      public double getDreidingEnergy()
      Returns the energy of the conformer.
      Returns:
      the energy of the conformer
    • getMMFF94Energy

      public double getMMFF94Energy()
      Returns the MMFF94 energy of the structure (default: kcal/mol).
      Returns:
      the MMFF94 energy of the conformer
      Since:
      Marvin 5.4
    • getDistance

      public double getDistance(int atom1, int atom2)
      Returns the distance of 2 atoms.
      Parameters:
      atom1 - is the (0-based) index of the 1st atom
      atom2 - is the (0-based) index of the 2nd atom
      Returns:
      the distance of 2 atoms
    • getDistance

      public double getDistance(int[] atoms) throws PluginException
      Returns the distance of 2 atoms.
      Parameters:
      atoms - is the array containing (0-based) indexes of 2 atoms
      Returns:
      the distance of 2 atoms
      Throws:
      PluginException - if atoms are not set properly
    • getAngle

      public double getAngle(int atom1, int atom2, int atom3)
      Returns the angle of 3 atoms.
      Parameters:
      atom1 - is the (0-based) index of the 1st atom
      atom2 - is the (0-based) index of the 2nd atom
      atom3 - is the (0-based) index of the 3rd atom
      Returns:
      the angle of 3 atoms
    • getAngle

      public double getAngle(int[] atoms) throws PluginException
      Returns the angle of 3 atoms.
      Parameters:
      atoms - is the array containing (0-based) indexes of 3 atoms
      Returns:
      the angle of 3 atoms
      Throws:
      PluginException - if atoms are not set properly
    • getDihedral

      public double getDihedral(int atom1, int atom2, int atom3, int atom4)
      Returns the dihedral of 4 atoms.
      Parameters:
      atom1 - is the (0-based) index of the 1st atom
      atom2 - is the (0-based) index of the 2nd atom
      atom3 - is the (0-based) index of the 3rd atom
      atom4 - is the (0-based) index of the 4th atom
      Returns:
      the dihedral of 4 atoms
    • getDihedral

      public double getDihedral(int[] atoms) throws PluginException
      Returns the dihedral of 4 atoms.
      Parameters:
      atoms - is the array containing (0-based) indexes of 4 atoms
      Returns:
      the dihedral of 4 atoms
      Throws:
      PluginException - if atoms are not set properly
    • getStericHindrance

      public double getStericHindrance(int atom)
      Calculates hindrance of an atom from covalent radii values and distances. The stericHindrance is related to the steric hindrance of the given atom.
      Parameters:
      atom - index of the atom
      Returns:
      the steric hindrance of the atom
    • setCalculateMoleculeProjections

      public void setCalculateMoleculeProjections(boolean c)
      Sets the calculation of molecule projections. Default: false
      Parameters:
      c - if true then molecule projection calculations are run.
      See Also:
    • getMinimalProjectionArea

      public double getMinimalProjectionArea()
      Returns the minimal projection area in Angstrom^2.
      Returns:
      the minimal projection area
      See Also:
    • getMaximalProjectionArea

      public double getMaximalProjectionArea()
      Returns the maximal projection area in Angstrom^2.
      Returns:
      the maximal projection area
      See Also:
    • getMinimalProjectionRadius

      public double getMinimalProjectionRadius()
      Returns the radius of the circle surrounding the minimal projection in Angstrom.
      Returns:
      the radius of the circle surrounding the minimal projection
      See Also:
    • getMaximalProjectionRadius

      public double getMaximalProjectionRadius()
      Returns the radius of the circle surrounding the maximal projection in Angstrom.
      Returns:
      the radius of the circle surrounding the maximal projection
      See Also:
    • getVolume

      public double getVolume()
    • setOptimizeProjection

      public void setOptimizeProjection(boolean optimize)
    • getHBondCount

      public int getHBondCount()
      Returns the number of intramolecular hydrogen bonds.
      Returns:
      the number of intramolecular hydrogen bonds
    • getHBond

      public int[] getHBond(int bondIndex)
      Returns a hydrogen bond.
      Parameters:
      bondIndex - is the hydrogen bond index
      Returns:
      the end-atom indexes of the hydrogen bond in a 2-length int[] array
    • run

      public boolean run() throws PluginException
      Runs the tool.
      Specified by:
      run in class CalculatorPlugin
      Returns:
      true if the calculation was successful, false if unsuccessful
      Throws:
      PluginException - on error
      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:
    • getMaxZ

      public double getMaxZ()
    • getMinZ

      public double getMinZ()
    • getResult

      public Object getResult(Object type, String arg) throws PluginException
      Returns the distance, angle or dihedral of 2, 3 or 4 atoms if type is set to "distance", "angle" or "diheral". For internal use only.
      Overrides:
      getResult in class CalculatorPlugin
      Parameters:
      type - is the result type ("distance", "angle" or "dihedral")
      arg - is the atom string as atom1-atom2 (e.g. "2-3")
      Returns:
      the result item
      Throws:
      PluginException - on error
      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
    • 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:
    • getResultDomain

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

      public Object[] getResultTypes()
      Returns the result types. Possible result types:
      • "dreidingenergy",
      • "mmff94energy",
      • "distance" (atomic)
      • "angle" (atomic)
      • "dihedral" (atomic)
      • "hindrance" (atomic)
      • "minimalprojectionarea"
      • "maximalprojectionarea"
      • "minimalprojectionradius"
      • "maximalprojectionradius"
      • "volume",
      • "minz",
      • "maxz",
      Overrides:
      getResultTypes in class CalculatorPlugin
      Returns:
      the result types
    • getTypeString

      public String getTypeString(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
    • 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 (MPropHandler.convertToString(MPropertyContainer, String)).
      Overrides:
      getResultMolecule in class CalculatorPlugin
      Returns:
      the result molecule
      Throws:
      PluginException - on error
    • getResultMolecules

      public Molecule[] getResultMolecules() throws PluginException
      Returns the result molecules, molecular results are set in the first molecule, atomic results are set in subsequent molecules as atom labels.
      Overrides:
      getResultMolecules in class CalculatorPlugin
      Returns:
      the result molecules
      Throws:
      PluginException - on error
    • getRemark

      public String getRemark()
      Returns the calculation remark: if no results (no result types) then returns remark, otherwise returns null.
      Overrides:
      getRemark in class CalculatorPlugin
      Returns:
      the calculation remark
    • getWarningMessage

      public String getWarningMessage()
      Returns a warning message if lowest energy conformer calculation was unsuccessful or aborted by user, null otherwise.
      Overrides:
      getWarningMessage in class CalculatorPlugin
      Returns:
      a warning message if conformer calculation aborted
    • isMultiThreadedRunEnabled

      public boolean isMultiThreadedRunEnabled()
      For internal use only.
      Overrides:
      isMultiThreadedRunEnabled in class CalculatorPlugin
      Returns:
      true if multi-threaded run is enabled
    • standardize

      public void standardize(Molecule mol)
      Expands sgroups.
      Overrides:
      standardize in class CalculatorPlugin
      Parameters:
      mol - is the molecule to be standardized