chemaxon.marvin.calculations
Class StructuralFrameworksPlugin

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

public class StructuralFrameworksPlugin
extends CalculatorPlugin

Plugin class to calculate Bemis-Murcko and other structural scaffolds of input molecules. The plugin inside executes a series of atomic (not in chemical sense) operations which are accessible to the user. The configuration which is set either by setParameters( Properties ) or by the individual setters. The operation chain is set up according to the actual configuration by getHost( boolean ).

API usage example:

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

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

    // set framework type
    plugin.setType(StructuralFrameworksPlugin.FrameworkTypes.bemismurcko );

    // process only the largest fragment
    plugin.setLfin( true );

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

    // run the calculation
    plugin.run();

    // get result
    Molecule result = plugin.getResultMolecule()

    // print result
    System.out.println("Bemis-Murcko framework in SMILES format: "+result.toFormat("smiles") );
 

Author:
Gabor Imre

Nested Class Summary
static class StructuralFrameworksPlugin.FrameworkTypes
          FrameworkTypes represents the available calculations
static interface StructuralFrameworksPlugin.VerbosePrinter
          Verbose printer specification
 
Field Summary
 
Fields inherited from class chemaxon.marvin.plugin.CalculatorPlugin
ATOM, BLUE, CALCRGB_OFF, COVALENT_HYDRATION_ERROR_REMARK, CRITICAL_ERROR_MSG, EPSILON, INCORRECT_AROMATIC_NITROGEN_REMARK, INSTABLE_TAUTOMERIC_FORM_REMARK, licenseEnvironment, MOLECULE, MOLECULES, NAN, PLUGIN_CLASS_KEY, PLUGIN_DIR, RED
 
Constructor Summary
StructuralFrameworksPlugin()
           
 
Method Summary
 boolean canRepeat()
          Returns true if repeatedly running the same plugin object while getting the results on the GUI is allowed, false otherwise.
 void checkMolecule(Molecule mol)
          Checks the input molecule.
 java.lang.String getProductName()
          Returns the product identifier of the plugin as given by LicenseManager.
 Molecule getResult()
           
 java.lang.Object getResult(java.lang.Object type, int index)
          Returns the result item for the specified type and index.
 java.lang.String getResultAsString(java.lang.Object type, int index, java.lang.Object result)
          Get a calculation result (returned by getResultMolecule() after a run() call in the given format setFormat(String)
 int getResultCount()
          Returns the number of result items for the first result type.
 int getResultDomain(java.lang.Object type)
          Returns the calculation domain CalculatorPlugin.ATOM, CalculatorPlugin.MOLECULE or CalculatorPlugin.MOLECULES.
 Molecule getResultMolecule()
          Get result structure
 java.lang.Object[] getResultTypes()
          Returns the result types.
 java.lang.String getTypeString(java.lang.Object type)
          Returns a string representation of the given type.
 boolean handlesMultiFragmentMolecules()
          This plugin handles multifrag molecules.
 boolean run()
          Run calculation
 void setDehydrogenize(boolean b)
          Set dehydrogenize parameter
 void setFormat(java.lang.String f)
          Set output format used by CalculatorPlugin.getResultAsString(int, Object)
 void setHydrogenize(boolean b)
          Set hydrogenize parameter
protected  void setInputMolecule(Molecule mol)
          Set input molecule to process
 void setKeepSingleAtom(boolean b)
          Set behavior on acyclic input
 void setLfin(boolean b)
          Set handling option for multi fragment (disconnected) inputs
 void setLfout(boolean b)
          Set handling option for multi fragment (disconnected) results.
 void setOeqcheck(boolean b)
          Set oeqcheck parameter
 void setParameters(java.util.Properties params)
          Sets the input parameters for the plugin Accepted parameters: type: [bmf|mcs|sssr|cssr|allringsystems|largestringsystem| largestring|keep] Framework calculation type bmf: Bemis-Murcko framework bmfl: Bemis-Murcko loose framework mcs: Pairwise Maximum Common Substructure sssr: SSSR cssr: CSSR allringsystems: all fused ring systems largestringsystem: largest fused ring system largestring: largest ring keep: no framework reduction; useful for testing pre/post process keepsingleatom: [true|false] If set true then a single atom will be assigned to acyclic fragments.
 void setPruneIn(boolean b)
          Set prunein parameter
 void setPruneOut(boolean b)
          Set pruneout parameter
 void setType(StructuralFrameworksPlugin.FrameworkTypes ft)
          Set framework type to calculate.
 void setVerbosePrinter(StructuralFrameworksPlugin.VerbosePrinter verb)
          Set or clear verbose printer Verbose messages will be sent to the verbose printer to ease debugging
 void standardize(Molecule mol)
          Standardize input molecule
Standardization currently ungroups SGroups
 
Methods inherited from class chemaxon.marvin.plugin.CalculatorPlugin
checkLicense, checkType, containsCoordinateBond, containsMulticenterSgroup, containsPseudoAtom, containsSRUSgroup, create, createModifiedInputMolecule, createStandardizedMolecule, createStandardizedMolecule, dehydrogenize, format, format, format, format, getAtomCount, getAtomIndex, getCalcMolecule, getDisplayMolecule, getDocument, getDoublePrecision, getErrorMessage, getInputMolDim, getMainMolecule, getpH, getPluginResource, getQueryMoleculeErrorMessage, getRemark, getResult, getResult, getResult, getResultAsRGB, getResultAsRGB, getResultAsString, getResultCount, getResultDomain, getResultMessage, getResultMolecules, getResultsAsRGB, getResultsAsRGB, getResultsAsString, getResultsAsString, getResultSource, getWarningMessage, isInputMoleculeAromatized, isLicensed, isMsCalc, isMultiThreadedRunEnabled, isNegligibleResult, isOK, isRgrouped, loadClass, readAttribute, removeWhitespace, setDoublePrecision, setDoublePrecision, setDoublePrecision, 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

StructuralFrameworksPlugin

public StructuralFrameworksPlugin()
Method Detail

setVerbosePrinter

public void setVerbosePrinter(StructuralFrameworksPlugin.VerbosePrinter verb)
Set or clear verbose printer Verbose messages will be sent to the verbose printer to ease debugging

Parameters:
verb - Verbose printer. Use null to clear verbose.

checkMolecule

public void checkMolecule(Molecule mol)
                   throws PluginException
Checks the input molecule. Throws exception if the molecule is not accepted as input molecule, otherwise does nothing (simply returns). In addition to the default implementation (which refuses query molecules, molecules with SRU S-groups, molecules with multicenter S-groups and molecules with coordinate bonds) this method will check if Frameworks can be executed on the structure.

Currently the following cases (in addition to the default behavior) fail:

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
Set input molecule to process

Specified by:
setInputMolecule in class CalculatorPlugin
Parameters:
mol - Input molecule
Throws:
PluginException

canRepeat

public boolean canRepeat()
Description copied from class: CalculatorPlugin
Returns true if repeatedly running the same plugin object while getting the results on the GUI is allowed, false otherwise. For internal use.

Overrides:
canRepeat in class CalculatorPlugin
Returns:
true if allowed, false otherwise

standardize

public void standardize(Molecule mol)
Standardize input molecule
Standardization currently ungroups SGroups

Overrides:
standardize in class CalculatorPlugin
Parameters:
mol - Input molecule to standardize

run

public boolean run()
            throws PluginException
Run calculation

Specified by:
run in class CalculatorPlugin
Returns:
true if success
Throws:
PluginException
See Also:
CalculatorPlugin.getErrorMessage()

getResultMolecule

public Molecule getResultMolecule()
                           throws PluginException
Get result structure

Overrides:
getResultMolecule in class CalculatorPlugin
Returns:
The calculated framework
Throws:
PluginException

handlesMultiFragmentMolecules

public boolean handlesMultiFragmentMolecules()
This plugin handles multifrag molecules.

Overrides:
handlesMultiFragmentMolecules in class CalculatorPlugin
Returns:
true

setKeepSingleAtom

public void setKeepSingleAtom(boolean b)
Set behavior on acyclic input

Parameters:
b - If set true then a single atom will be assigned to acyclic fragments. If false then acyclic fragments will be projected to empty structures

setFormat

public void setFormat(java.lang.String f)
Set output format used by CalculatorPlugin.getResultAsString(int, Object)

Parameters:
f - Output format to use

setLfin

public void setLfin(boolean b)
Set handling option for multi fragment (disconnected) inputs

Parameters:
b - If set true then the calculation will run only on the largest input fragment. Note that this necessarily yields the largest scaffold

setLfout

public void setLfout(boolean b)
Set handling option for multi fragment (disconnected) results. Note that disconnected result can be caused by disconnected input or by further modifications of the scaffold generation algorithm

Parameters:
b - If set true then only the largest calculated scaffold will be returned. Note that the returned scaffold not necessarily calculated from the largest fragment.

setType

public void setType(StructuralFrameworksPlugin.FrameworkTypes ft)
Set framework type to calculate.

Note that default framework type is Bemis-Murcko

Parameters:
ft - Framework to calculate

setPruneIn

public void setPruneIn(boolean b)
Set prunein parameter

Parameters:
b - If true then input will be generalizes

setPruneOut

public void setPruneOut(boolean b)
Set pruneout parameter

Parameters:
b - If true then result will be generalized

setHydrogenize

public void setHydrogenize(boolean b)
Set hydrogenize parameter

Parameters:
b - If true then input will be hydrogenized

setDehydrogenize

public void setDehydrogenize(boolean b)
Set dehydrogenize parameter

Parameters:
b - If true then explicit hydrogens will be removed from the input

setOeqcheck

public void setOeqcheck(boolean b)
Set oeqcheck parameter

Parameters:
b - If true then eqivalent result fragments will be filtered

setParameters

public void setParameters(java.util.Properties params)
                   throws PluginException
Sets the input parameters for the plugin Accepted parameters:

Overrides:
setParameters in class CalculatorPlugin
Parameters:
params - parameter table
Throws:
PluginException

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

getResultDomain

public int getResultDomain(java.lang.Object type)
Description copied from class: CalculatorPlugin
Returns the calculation domain CalculatorPlugin.ATOM, CalculatorPlugin.MOLECULE or CalculatorPlugin.MOLECULES. The default implementation returns CalculatorPlugin.MOLECULE.

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

getResultTypes

public java.lang.Object[] getResultTypes()
Description copied from class: CalculatorPlugin
Returns the result types. The default implementation returns null.

Overrides:
getResultTypes in class CalculatorPlugin
Returns:
the result types

getResultCount

public int getResultCount()
Description copied from class: CalculatorPlugin
Returns the number of result items for the first result type.

Overrides:
getResultCount in class CalculatorPlugin
Returns:
the number of result items
See Also:
CalculatorPlugin.getResultTypes()

getResult

public Molecule getResult()
                   throws PluginException
Throws:
PluginException

getResult

public java.lang.Object getResult(java.lang.Object type,
                                  int index)
                           throws PluginException
Description copied from class: CalculatorPlugin
Returns the result item for the specified type and index. The default implementation returns null.

Overrides:
getResult in class CalculatorPlugin
Parameters:
type - is the result type
index - is the result index
Returns:
the result item for the specified type 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
Get a calculation result (returned by getResultMolecule() after a run() call in the given format setFormat(String)

Overrides:
getResultAsString in class CalculatorPlugin
Parameters:
type - this parameter is ignored
index - this patameter is ignored
result - result given by getResultMolecule()
Returns:
String representatin in the given format
Throws:
PluginException

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