chemaxon.marvin.calculations
Class logPPlugin

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

public class logPPlugin
extends CalculatorPlugin

Plugin class for logP calculation. Both the incremental logP values for atoms and the overal logP value for the molecule can be calculated by this plugin.

Reference:

  1. J.Chem.Inf.Comput.Sci. 1989, 29, 163-172

API usage example:

    // fill parameters
    Properties params = new Properties();
    params.put("type", "logP,increments");

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

    // set parameters
    plugin.setCloridIonConcentration(0.2);
    plugin.setNaKIonConcentration(0.2);

    // set result types
    plugin.setUserTypes("logPTrue,logPMicro,increments");

    // for each input molecule run the calculation and display the results
    System.out.println("molecule\tlogP\tincrements");
    MolImporter mi = new MolImporter("targets.sdf")));
    Molecule target = null;
    while ((target = mi.read()) != null) {

        // set the input molecule
        plugin.setMolecule(target);

        // run the calculation
        plugin.run();

        // get the overal logP value
        double logp = plugin.getlogPTrue(); 
        double logpm = plugin.getlogPMicro();

        // get the incremental values
        int count = target.getAtomCount();
        double[] increments = new double[count];
        for (int i=0; i < count; ++i) {
            increments[i] = plugin.getAtomlogPIncrement(i);
        }

        System.out.println("True logP : "+logp);
        System.out.println("Micro logP: "+logpm);
        System.out.println("logP increments: ");
        for (int i=0; i < count; ++i) {
            System.out.print(increments[i]+";");
        }
        System.out.println();
    }  
    mi.close();
 

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

Version:
5.0 10/20/2007
Author:
Nora Mate, Zsolt Mohacsi

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, NAN, PLUGIN_CLASS_KEY, PLUGIN_DIR, RED
 
Constructor Summary
logPPlugin()
          Constructor.
 
Method Summary
 void checkMolecule(Molecule mol)
          Checks the input molecule.
protected  Molecule createModifiedInputMolecule(Molecule mol)
          Returns the major tautomeric form of the molecule.
 double getAtomlogPHIncrement(int index)
          Returns the sum of the implicit H logP increments for the specified atom.
 double getAtomlogPIncrement(int index)
          Returns the logP increment for the specified atom.
 java.lang.String getErrorMessage()
          Returns the calculation error information message if run() returned false (calculation error): hydrogen valence error.
 double getlogDpI()
          Returns the logD value at pI.
 double getlogPMicro()
          Returns the micro logP value.
 double getlogPNonionic()
          Returns the logP value for the non-ionic form.
 double getlogPTrue()
          Returns the most typical logP among logD at pI, micro logP and nonionic logP.
 java.lang.String getRemark()
          Returns the calculation remark: checks for erronous aromatic nitrogens, instable tautomeric forms and covalent hydration errors.
 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.ATOM or CalculatorPlugin.MOLECULE.
 Molecule getResultMolecule()
          Returns the result molecule for display.
 java.lang.Object[] getResultTypes()
          Returns the result types.
 java.lang.String getTypeString(java.lang.Object type)
          Returns a string representation of the given type.
 java.lang.Object[] getUserTypes()
          Returns the user defined result types.
 boolean isLicensed()
          Returns true if the plugin is licensed.
 boolean run()
          Runs the logP calculation.
 void setCloridIonConcentration(double c)
          Sets the Cl- concentration (default: 0.1).
protected  void setInputMolecule(Molecule mol)
          Sets the input molecule.
 void setNaKIonConcentration(double c)
          Sets the Na+, K+ concentration (default: 0.1).
 void setParameters(java.util.Properties params)
          Sets the input parameters for the plugin.
 void setTakeMajorTatomericForm(boolean takeMajorTautomericForm)
          Sets to use major tautomeric form in calculation.
 void setUserTypes(java.lang.String chtypes)
          Sets user types.
 void standardize(Molecule mol)
          Standardizes the molecule.
 
Methods inherited from class chemaxon.marvin.plugin.CalculatorPlugin
checkType, containsCoordinateBond, containsMulticenterSgroup, containsPseudoAtom, containsSRUSgroup, create, createStandardizedMolecule, createStandardizedMolecule, dehydrogenize, format, format, format, format, getAtomCount, getAtomIndex, getCalcMolecule, getDisplayMolecule, getDocument, getDoublePrecision, getInputMolDim, getMainMolecule, getpH, getPluginResource, getResult, getResult, getResult, getResultAsRGB, getResultAsRGB, getResultAsString, getResultCount, getResultDomain, getResultMessage, getResultMolecules, getResultsAsRGB, getResultsAsRGB, getResultsAsString, getResultsAsString, getResultSource, getWarningMessage, handlesMultiFragmentMolecules, isInputMoleculeAromatized, 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

logPPlugin

public logPPlugin()
Constructor. Creates the logP calculator object.

Method Detail

isLicensed

public boolean isLicensed()
Description copied from class: CalculatorPlugin
Returns true if the plugin is licensed. Implement this only if you want to sell your plugin and protect it with a license key. The default implementation always returns true which means that the plugin is free: no license key is required. This method returns only information about the licensing, license checking has to be implemented separately.

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

setParameters

public void setParameters(java.util.Properties params)
                   throws PluginException
Sets the input parameters for the plugin. logP parameters and value ranges:

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

setCloridIonConcentration

public void setCloridIonConcentration(double c)
Sets the Cl- concentration (default: 0.1).

Parameters:
c - is the concentration

setNaKIonConcentration

public void setNaKIonConcentration(double c)
Sets the Na+, K+ concentration (default: 0.1).

Parameters:
c - is the concentration

setTakeMajorTatomericForm

public void setTakeMajorTatomericForm(boolean takeMajorTautomericForm)
Sets to use major tautomeric form in calculation. Default: false.

Parameters:
takeMajorTautomericForm - the calculation will be performed on the major tutomeric form of the input molecule if set (true)
Since:
Marvin 5.0

createModifiedInputMolecule

protected final Molecule createModifiedInputMolecule(Molecule mol)
                                              throws PluginException
Returns the major tautomeric form of the molecule.

Overrides:
createModifiedInputMolecule in class CalculatorPlugin
Parameters:
mol - is the input molecule
Returns:
the major tautomeric form of the molecule
Throws:
PluginException - on error
Since:
Marvin 5.0

setUserTypes

public void setUserTypes(java.lang.String chtypes)
                  throws PluginException
Sets user types. Possible types: logP,logPTrue,logPMicro,logPNonionic,logDpI (logP means all of, logPTrue means the most typical of logPMicro,logPNonionic,logDpI which exists for the input molecule) multiple values should be separated by "," (e.g.: "logPTrue,logPNonionic,logDpI").

Parameters:
chtypes - is the type string
Throws:
PluginException - for invalid type

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 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 (standardized) input molecule
Throws:
PluginException - on error

run

public boolean run()
            throws PluginException
Runs the logP 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): hydrogen valence error.

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

getRemark

public java.lang.String getRemark()
Returns the calculation remark: checks for erronous aromatic nitrogens, instable tautomeric forms and covalent hydration errors.

Overrides:
getRemark in class CalculatorPlugin
Returns:
the calculation remark

getlogPMicro

public double getlogPMicro()
Returns the micro logP value. The logP calculation should be run beforehand by run().

Returns:
the micro logP value

getlogPNonionic

public double getlogPNonionic()
Returns the logP value for the non-ionic form. The logP calculation should be run beforehand by run().

Returns:
the nonionic logP value

getlogDpI

public double getlogDpI()
Returns the logD value at pI. The logP calculation should be run beforehand by run().

Returns:
the logDpI value

getlogPTrue

public double getlogPTrue()
Returns the most typical logP among logD at pI, micro logP and nonionic logP.

Returns:
the most typical logP value

getAtomlogPIncrement

public double getAtomlogPIncrement(int index)
Returns the logP increment for the specified atom.

Parameters:
index - is the atom index
Returns:
the logP increment

getAtomlogPHIncrement

public double getAtomlogPHIncrement(int index)
Returns the sum of the implicit H logP increments for the specified atom.

Parameters:
index - is the atom index
Returns:
the logP increment sum

getResultTypes

public java.lang.Object[] getResultTypes()
Returns the result types. Possible result types: "logPTrue" (most typical logP) "logPMicro", "logPNonionic", "logDpI", "increments", "inch".

Overrides:
getResultTypes in class CalculatorPlugin
Returns:
the result types

getUserTypes

public java.lang.Object[] getUserTypes()
Returns the user defined result types. Possible result types: "logP" (all of micro logP, nonionic logP and logD at pI), "logPTrue" (most typical logP), "logPMicro", "logPNonionic", "logDpI", "increments", "inch".

Returns:
the result types

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

getResultDomain

public int getResultDomain(java.lang.Object type)
Returns the calculation domain CalculatorPlugin.ATOM or CalculatorPlugin.MOLECULE. Returns CalculatorPlugin.ATOM for type "increments" or "inch" and CalculatorPlugin.MOLECULE otherwise.

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

getResultCount

public int getResultCount(java.lang.Object type)
Returns the number of result items for the given result key. logP returns the atom count for types "increments" and "inch" 1 otherwise.

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

getResult

public java.lang.Object getResult(java.lang.Object type,
                                  int index)
                           throws PluginException
Returns the result item for the specified key and index. logP returns the required logP value as a Double object.

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. logP returns the rounded logP value in string format: the value is rounded using the 'precision' input parameter that determines the number of fractional digits displayed.

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

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

standardize

public void standardize(Molecule mol)
Standardizes the molecule. This is done by performing the transformations necessary to run the plugin (e.g. aromatize, dehydrogenize, bring nitro groups to common form). Apart from the default standardization (aromatize and nitro) removes explicit hydrogens. Does AROM_BASIC aromatization.

Overrides:
standardize in class CalculatorPlugin
Parameters:
mol - is the molecule to be standardized