Package chemaxon.marvin.calculations
Class StructuralFrameworksPlugin
- java.lang.Object
-
- chemaxon.marvin.plugin.CalculatorPlugin
-
- chemaxon.marvin.calculations.StructuralFrameworksPlugin
-
- All Implemented Interfaces:
chemaxon.license.Licensable
@PublicAPI 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 bysetParameters( Properties )
or by the individual setters. The operation chain is set up according to the actual configuration bygetHost( 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") );
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
StructuralFrameworksPlugin.FrameworkTypes
FrameworkTypes represents the available calculationsstatic interface
StructuralFrameworksPlugin.VerbosePrinter
Verbose printer specification-
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
Constructors Constructor Description StructuralFrameworksPlugin()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
canRepeat()
Returnstrue
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.String
getProductName()
Returns the product identifier of the plugin as given byLicenseManager
.Molecule
getResult()
Object
getResult(Object type, int index)
Returns the result item for the specified type and index.String
getResultAsString(Object type, int index, Object result)
Get a calculation result (returned bygetResultMolecule()
after arun()
call in the given formatsetFormat(String)
int
getResultCount()
Returns the number of result items for the first result type.int
getResultDomain(Object type)
Returns the calculation domainCalculatorPlugin.ATOM
,CalculatorPlugin.MOLECULE
orCalculatorPlugin.MOLECULES
.Molecule
getResultMolecule()
Get result structureObject[]
getResultTypes()
Returns the result types.String
getTypeString(Object type)
Returns a string representation of the given type.boolean
handlesMultiFragmentMolecules()
This plugin handles multifrag molecules.boolean
run()
Run calculationvoid
setDehydrogenize(boolean b)
Set dehydrogenize parametervoid
setFormat(String f)
Set output format used byCalculatorPlugin.getResultAsString(int, Object)
void
setHydrogenize(boolean b)
Set hydrogenize parameterprotected void
setInputMolecule(Molecule mol)
Set input molecule to processvoid
setKeepSingleAtom(boolean b)
Set behavior on acyclic inputvoid
setLfin(boolean b)
Set handling option for multi fragment (disconnected) inputsvoid
setLfout(boolean b)
Set handling option for multi fragment (disconnected) results.void
setOeqcheck(boolean b)
Set oeqcheck parametervoid
setParameters(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 parametervoid
setPruneOut(boolean b)
Set pruneout parametervoid
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 debuggingvoid
standardize(Molecule mol)
Standardize input molecule
Standardization currently ungroups SGroups-
Methods inherited from class chemaxon.marvin.plugin.CalculatorPlugin
arrangeHydrogenIncerments, checkLicense, checkType, containsCoordinateBond, containsMulticenterSgroup, containsPseudoAtom, containsSRUSgroup, create, createModifiedInputMolecule, createStandardizedMolecule, createStandardizedMolecule, dehydrogenize, format, format, format, format, getAtomCount, getAtomIndex, getAtomIndexMap, getCalcMolecule, getDisplayMolecule, getDocument, getDoublePrecision, getErrorMessage, getExplicitHydrogenData, getInputMolDim, getMainMolecule, getOriginalMolecule, 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, restoreExplicitHydrogens, setAtomIndexMap, setDoublePrecision, setDoublePrecision, setDoublePrecision, setKeepHydrogens, setLicenseEnvironment, setMolecule, setMolecule, setMolecule, setMolecule, setProgressMonitor, standardizeIonicGroups, standardizeNeutralGroups
-
-
-
-
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:
- mcs Framework calculation needs at least two disconnected fragments. If the molecule contains no atoms or consists of one connected fragment exception is thrown.
- Overrides:
checkMolecule
in classCalculatorPlugin
- 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 classCalculatorPlugin
- Parameters:
mol
- Input molecule- Throws:
PluginException
-
canRepeat
public boolean canRepeat()
Description copied from class:CalculatorPlugin
Returnstrue
if repeatedly running the same plugin object while getting the results on the GUI is allowed,false
otherwise. For internal use.- Overrides:
canRepeat
in classCalculatorPlugin
- Returns:
true
if allowed,false
otherwise
-
standardize
public void standardize(Molecule mol)
Standardize input molecule
Standardization currently ungroups SGroups- Overrides:
standardize
in classCalculatorPlugin
- Parameters:
mol
- Input molecule to standardize
-
run
public boolean run() throws PluginException
Run calculation- Specified by:
run
in classCalculatorPlugin
- Returns:
- true if success
- Throws:
PluginException
- See Also:
CalculatorPlugin.getErrorMessage()
-
getResultMolecule
public Molecule getResultMolecule() throws PluginException
Get result structure- Overrides:
getResultMolecule
in classCalculatorPlugin
- Returns:
- The calculated framework
- Throws:
PluginException
-
handlesMultiFragmentMolecules
public boolean handlesMultiFragmentMolecules()
This plugin handles multifrag molecules.- Overrides:
handlesMultiFragmentMolecules
in classCalculatorPlugin
- 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(String f)
Set output format used byCalculatorPlugin.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(Properties params) throws PluginException
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. If false then acyclic fragments will be projected to empty structures
- lfin: [true|false] If set true then the calculation will run only on the largest input fragment. Note that this necessarily yields the largest scaffold
- lfout: [true|false] If set true then only the largest calculated scaffold will be returned. Note that the returned scaffold not necessarily calculated from the largest fragment.
- prunein: [true|false] Generalize input
- pruneout: [true|false] Generalize output
- hydrogenize: [true|false] Add explicit hydrogens
- dehydrogenize: [true|false] Remove explicit hydrogens
- oeqcheck: [true|false] Remove equivalent output fragments
- format: format to use for string export
- Overrides:
setParameters
in classCalculatorPlugin
- Parameters:
params
- parameter table- Throws:
PluginException
- type: [bmf|mcs|sssr|cssr|allringsystems|largestringsystem|
largestring|keep] Framework calculation type
-
getProductName
public String 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
-
getResultDomain
public int getResultDomain(Object type)
Description copied from class:CalculatorPlugin
Returns the calculation domainCalculatorPlugin.ATOM
,CalculatorPlugin.MOLECULE
orCalculatorPlugin.MOLECULES
. The default implementation returnsCalculatorPlugin.MOLECULE
.- Overrides:
getResultDomain
in classCalculatorPlugin
- Parameters:
type
- is the result type- Returns:
- the calculation domain
- See Also:
CalculatorPlugin.getResultTypes()
-
getResultTypes
public Object[] getResultTypes()
Description copied from class:CalculatorPlugin
Returns the result types. The default implementation returnsnull
.- Overrides:
getResultTypes
in classCalculatorPlugin
- 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 classCalculatorPlugin
- Returns:
- the number of result items
- See Also:
CalculatorPlugin.getResultTypes()
-
getResult
public Molecule getResult() throws PluginException
- Throws:
PluginException
-
getResult
public Object getResult(Object type, int index) throws PluginException
Description copied from class:CalculatorPlugin
Returns the result item for the specified type and index. The default implementation returnsnull
.- Overrides:
getResult
in classCalculatorPlugin
- Parameters:
type
- is the result typeindex
- 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 String getResultAsString(Object type, int index, Object result) throws PluginException
Get a calculation result (returned bygetResultMolecule()
after arun()
call in the given formatsetFormat(String)
- Overrides:
getResultAsString
in classCalculatorPlugin
- Parameters:
type
- this parameter is ignoredindex
- this patameter is ignoredresult
- result given bygetResultMolecule()
- Returns:
- String representatin in the given format
- Throws:
PluginException
-
getTypeString
public String getTypeString(Object type)
Returns a string representation of the given type.- Overrides:
getTypeString
in classCalculatorPlugin
- Parameters:
type
- is the type object- Returns:
- the type string
-
-