chemaxon.marvin.calculations
Class MSAPlugin

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

public class MSAPlugin
extends MajorMicrospeciesAccessorPlugin

Plugin class for molecular surface area calculation. Both the incremental values for atoms and the overal surface area for the molecule can be calculated by this plugin.

Reference:

  1. Ferrara, P,. Apostolakis J., Caflisch A., Proteins 2002, 46, 24-33

API usage example:

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

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

    // optional: take major microspecies at pH=7.4
    plugin.setpH(7.4);

    // set surface area type (default: VAN_DER_WAALS)
    plugin.setSurfaceAreaType(SOLVENT);

    // set target molecule
    plugin.setMolecule(mol);
        
    // run the calculation
    plugin.run();

    // get result
    double area = plugin.getSurfaceArea();

    // print result
    System.out.println("Solvent accessible surface area (pH=7.4): "+area);
 

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

Since:
Marvin 4.1
Version:
Marvin 5.0, 12/11/2007

Nested Class Summary
 
Nested classes/interfaces inherited from class chemaxon.marvin.plugin.CalculatorPlugin
CalculatorPlugin.HydrogenData
 
Field Summary
static int SOLVENT
          Surface area type: 3D solvent accessible surface area.
static int VAN_DER_WAALS
          Surface area type: 3D van der Waals surface area.
 
Fields inherited from class chemaxon.marvin.calculations.MajorMicrospeciesAccessorPlugin
ionizer
 
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
MSAPlugin()
          Constructor.
 
Method Summary
 void checkMolecule(Molecule mol)
          Checks the input molecule.
 Molecule get3DMolecule()
          Returns the 3D molecule used in 3D surface area calculation.
 double getASA()
          Returns water accessible surface area calculated using a radius of 1.4 A for the water molecule.
 double getASAHydrophobic()
          Returns water accessible surface area of all hydrophobic (|qi|<0.125) atoms.
 double getASANegative()
          Returns water accessible surface area of all atoms with negative partial charge (strictly less than 0).
 double getASAPlus()
          Returns water accessible surface area of all atoms with positive partial charge (strictly greater than 0).
 double getASAPolar()
          Returns water accessible surface area of all polar (|qi|>=0.125) atoms.
 double getAtomicSurfaceAreaIncrement(int index)
          Returns the 3D surface area increments.
protected  Molecule getDisplayMolecule()
          Returns the molecule object to be used for GUI display.
 java.lang.String getErrorMessage()
          Returns the calculation error information message if run() returned false (calculation error).
 java.lang.String getProductName()
          Returns the product identifier of the plugin as given by LicenseManager.
 java.lang.Object getResult(java.lang.Object type, int index)
          Returns the result item for the specified key and index.
 java.lang.String getResultAsString(java.lang.Object type, int index, java.lang.Object result)
          Returns the specified result in String format.
 int getResultCount(java.lang.Object type)
          Returns the number of result items for the given result key.
 int getResultDomain(java.lang.Object type)
          Returns the calculation domain CalculatorPlugin.MOLECULE or CalculatorPlugin.MOLECULE in case of increments .
 Molecule getResultMolecule()
          Returns the result molecule for display.
 java.lang.Object[] getResultTypes()
          Returns the result types.
 double getSurfaceArea()
          Returns the surface area, calculation type is previously set in setSurfaceAreaType(int).
 java.lang.String getTypeString(java.lang.Object type)
          Returns a string representation of the given type.
 double getVDWSA()
          Returns van der Waals surface area.
 boolean isLicensed()
          Returns true if the plugin is licensed.
 boolean isMultiThreadedRunEnabled()
          For internal use only.
 boolean run()
          Runs the surface area calculation.
protected  void setInputMolecule(Molecule mol)
          Sets the input molecule.
 void setParameters(java.util.Properties params)
          Sets the input parameters for the plugin.
 void setSolventRadius(double r)
          Sets solvent radius.
 void setSurfaceAreaType(int saType)
          Sets surface area calculation type: VAN_DER_WAALS or SOLVENT.
 
Methods inherited from class chemaxon.marvin.calculations.MajorMicrospeciesAccessorPlugin
createModifiedInputMolecule, getIonizerErrorMessage, getpH, setpH, standardize
 
Methods inherited from class chemaxon.marvin.plugin.CalculatorPlugin
arrangeHydrogenIncerments, canRepeat, checkLicense, checkType, containsCoordinateBond, containsMulticenterSgroup, containsPseudoAtom, containsSRUSgroup, create, createStandardizedMolecule, createStandardizedMolecule, dehydrogenize, format, format, format, format, getAtomCount, getAtomIndex, getCalcMolecule, getDocument, getDoublePrecision, getExplicitHydrogenData, getInputMolDim, getMainMolecule, getPluginResource, getQueryMoleculeErrorMessage, getRemark, getResult, getResult, getResult, getResultAsRGB, getResultAsRGB, getResultAsString, getResultCount, getResultDomain, getResultMessage, getResultMolecules, getResultsAsRGB, getResultsAsRGB, getResultsAsString, getResultsAsString, getResultSource, getWarningMessage, handlesMultiFragmentMolecules, isInputMoleculeAromatized, isMsCalc, isNegligibleResult, isOK, isRgrouped, loadClass, readAttribute, removeWhitespace, restoreExplicitHydrogens, setDoublePrecision, setDoublePrecision, setDoublePrecision, setKeepHydrogens, setLicenseEnvironment, setMolecule, setMolecule, setMolecule, setMolecule, setProgressMonitor, standardizeIonicGroups, standardizeNeutralGroups
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

VAN_DER_WAALS

public static final int VAN_DER_WAALS
Surface area type: 3D van der Waals surface area.

See Also:
Constant Field Values

SOLVENT

public static final int SOLVENT
Surface area type: 3D solvent accessible surface area.

See Also:
Constant Field Values
Constructor Detail

MSAPlugin

public MSAPlugin()
Constructor. Creates the MSA calculator object.

Method Detail

isLicensed

public boolean isLicensed()
Returns true if the plugin is licensed. The license checking is based on the product name, returned by getProductName().

Specified by:
isLicensed in interface chemaxon.license.Licensable
Overrides:
isLicensed in class MajorMicrospeciesAccessorPlugin
Returns:
true if the plugin is licensed

getProductName

public java.lang.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(java.util.Properties params)
                   throws PluginException
Sets the input parameters for the plugin. MSA parameters and value ranges:

Overrides:
setParameters in class MajorMicrospeciesAccessorPlugin
Parameters:
params - is the parameter table
Throws:
PluginException - on error

setSurfaceAreaType

public void setSurfaceAreaType(int saType)
Sets surface area calculation type: VAN_DER_WAALS or SOLVENT. The surface area is returned by getSurfaceArea(). The atomic increments and the 3D molecule can also be enquired by getAtomicSurfaceAreaIncrement(int) and get3DMolecule(). Default: VAN_DER_WAALS.

Parameters:
saType - is VAN_DER_WAALS or SOLVENT

checkMolecule

public void checkMolecule(Molecule mol)
                   throws PluginException
Checks the input molecule. Throws exception if the molecule is RxnMolecule, if the molecule contains R-groups or if the molecule consists of more than one fragments.

Overrides:
checkMolecule in class MajorMicrospeciesAccessorPlugin
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 (standardized) input molecule
Throws:
PluginException - on error

run

public boolean run()
            throws PluginException
Runs the surface area calculation.

Specified by:
run in class CalculatorPlugin
Returns:
true if the calculation was successful, false on calculation problems
Throws:
PluginException - on error
See Also:
CalculatorPlugin.getErrorMessage()

getErrorMessage

public java.lang.String getErrorMessage()
Returns the calculation error information message if run() returned false (calculation error). This implementation returns the empty string.

Overrides:
getErrorMessage in class MajorMicrospeciesAccessorPlugin
Returns:
the calculation error information message

getResultTypes

public java.lang.Object[] getResultTypes()
Returns the result types. Possible result types: "vanderwaals", "solvent", "increments".

Overrides:
getResultTypes in class CalculatorPlugin
Returns:
the result types

getResultDomain

public int getResultDomain(java.lang.Object type)
Returns the calculation domain CalculatorPlugin.MOLECULE or CalculatorPlugin.MOLECULE in case of increments .

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

getResultCount

public int getResultCount(java.lang.Object type)
Returns the number of result items for the given result key. TPSA returns 1 for surface area, the atom count for increments.

Overrides:
getResultCount in class CalculatorPlugin
Parameters:
type - is the result type
Returns:
the number of result items
See Also:
getResultTypes()

setSolventRadius

public void setSolventRadius(double r)
Sets solvent radius. Default: 1.4 Angstrom.


getSurfaceArea

public double getSurfaceArea()
Returns the surface area, calculation type is previously set in setSurfaceAreaType(int). Default: VAN_DER_WAALS.

Returns:
the surface area

getVDWSA

public double getVDWSA()
Returns van der Waals surface area. Calculation type must be set to VAN_DER_WAALS using setSurfaceAreaType(int), and the alculation should be run beforehand by run()

Returns:
van der Waals surface area
Since:
Marvin 5.0

getASA

public double getASA()
Returns water accessible surface area calculated using a radius of 1.4 A for the water molecule. Calculation type must be set to SOLVENT using setSurfaceAreaType(int), and the calculation should be run beforehand by run()

Returns:
water accessible surface area
Since:
Marvin 5.0

getASAPlus

public double getASAPlus()
Returns water accessible surface area of all atoms with positive partial charge (strictly greater than 0). Calculation type must be set to SOLVENT using setSurfaceAreaType(int), and the calculation should be run beforehand by run()

Returns:
water accessible surface area of all atoms with positive partial charge
Since:
Marvin 5.0

getASANegative

public double getASANegative()
Returns water accessible surface area of all atoms with negative partial charge (strictly less than 0). Calculation type must be set to SOLVENT using setSurfaceAreaType(int), and the calculation should be run beforehand by run()

Returns:
water accessible surface area of all atoms with negative partial charge
Since:
Marvin 5.0

getASAHydrophobic

public double getASAHydrophobic()
Returns water accessible surface area of all hydrophobic (|qi|<0.125) atoms. Calculation type must be set to SOLVENT using setSurfaceAreaType(int), and the calculation should be run beforehand by run()

Returns:
water accessible surface area of all hydrophobic atoms
Since:
Marvin 5.0

getASAPolar

public double getASAPolar()
Returns water accessible surface area of all polar (|qi|>=0.125) atoms. Calculation type must be set to SOLVENT using setSurfaceAreaType(int), and the calculation should be run beforehand by run()

Returns:
water accessible surface area of all polar atoms
Since:
Marvin 5.0

getAtomicSurfaceAreaIncrement

public double getAtomicSurfaceAreaIncrement(int index)
Returns the 3D surface area increments. Calculated only if surface area type is set to SOLVENT or VAN_DER_WAALS in setSurfaceAreaType(int).

Parameters:
index - is the atom index
Returns:
the surface area increment for the specified atom index

get3DMolecule

public Molecule get3DMolecule()
Returns the 3D molecule used in 3D surface area calculation. Can be called only if surface area type is set to SOLVENT or VAN_DER_WAALS in setSurfaceAreaType(int).

Returns:
the 3D molecule used in 3D surface area calculation

getResult

public java.lang.Object getResult(java.lang.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:
getResultTypes()

getResultAsString

public java.lang.String getResultAsString(java.lang.Object type,
                                          int index,
                                          java.lang.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

getDisplayMolecule

protected Molecule getDisplayMolecule()
Returns the molecule object to be used for GUI display. This is the 3D molecule returned by get3DMolecule().

Overrides:
getDisplayMolecule in class CalculatorPlugin
Returns:
the molecule object to be used for GUI display

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

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 (Molecule.getProperty(String)).

Overrides:
getResultMolecule in class CalculatorPlugin
Returns:
the result molecule
Throws:
PluginException - on error
Since:
Marvin 4.0

isMultiThreadedRunEnabled

public boolean isMultiThreadedRunEnabled()
For internal use only.

Overrides:
isMultiThreadedRunEnabled in class CalculatorPlugin
Returns:
true if multi-threaded run is enabled