org.openscience.cdk.qsar.descriptors.molecular
Class XLogPDescriptor

java.lang.Object
  extended by org.openscience.cdk.qsar.descriptors.molecular.XLogPDescriptor
All Implemented Interfaces:
IDescriptor, IMolecularDescriptor

@TestClass(value="org.openscience.cdk.qsar.descriptors.molecular.XLogPDescriptorTest")
public class XLogPDescriptor
extends Object
implements IMolecularDescriptor

Prediction of logP based on the atom-type method called XLogP. Requires all hydrogens to be explicit.

For description of the methodology see Ref. @cdk.cite{WANG97} and @cdk.cite{WANG00} or http://www.chem.ac.ru/Chemistry/Soft/XLOGP.en.html. Actually one molecular factor is missing (presence of para Hs donor pair).

This descriptor uses these parameters:

Name Default Description
checkAromaticity false True is the aromaticity has to be checked
salicylFlag false True is to use the salicyl acid correction factor

changed 2005-11-03 by chhoppe
-Internal hydrogen bonds are implemented
CDK IDescriptor was validated against xlogp2.1
As mentioned in the xlogP tutorial don't use charges, always draw bonds. To some extend we can support charges but not in every case.

CDK follows the program in following points (which is not documented in the paper):
-Atomtyp 7 is -0.137
-Atomtype 81 is -0.447
-pi system does not consider P or S
-ring system >3
-aromatic ring systems >=6
-N atomtypes: (ring) is always (ring)c
-F 83 is not 0.375, the program uses 0.512 [2005-11-21]
-hydrophobic carbon is 1-3 relationship not 1-4 [2005-11-22]
-Atomtyp C 34/35/36 perception corrected [2005-11-22]; before Atomtyp perception ring perception is done -> slows run time

In question:
-Correction factor for salicylic acid (in paper, but not used by the program)
-Amid classification is not consequent (in 6 rings (R2)N-C(R)=0 is eg 46 and in !6 membered rings it is amid)
-sometimes O=C(R)-N(R)-C(R)=O is an amid ... sometimes not
-Value for internal H bonds is in paper 0.429 but for no454 it is 0.643
-pi system defintion, the neighbourhood is unclear

changed 2005-11-21 by chhoppe
-added new parameter for the salicyl acid correction factor
-Corrected P and S perception for charges

Author:
mfe4, chhoppe
Belongs to the set:
qsar-descriptors
Keywords:
XLogP, descriptor
Created on:
2004-11-03
Belongs to CDK module:
qsarmolecular
Dictionary pointer(s):
xlogP in the QSAR.sf.net Descriptors Dictionary [qsar-descriptors:xlogP]
Source code:
HEAD

Constructor Summary
XLogPDescriptor()
          Constructor for the XLogPDescriptor object.
 
Method Summary
 DescriptorValue calculate(IAtomContainer atomContainer)
          Calculates the xlogP for an atom container.
 String[] getDescriptorNames()
          Returns an array of names for each descriptor value calculated.
 IDescriptorResult getDescriptorResultType()
          Returns the specific type of the DescriptorResult object.
 String[] getParameterNames()
          Gets the parameterNames attribute of the XLogPDescriptor object.
 Object[] getParameters()
          Gets the parameters attribute of the XLogPDescriptor object.
 Object getParameterType(String name)
          Gets the parameterType attribute of the XLogPDescriptor object.
 DescriptorSpecification getSpecification()
          Gets the specification attribute of the XLogPDescriptor object.
 void setParameters(Object[] params)
          Sets the parameters attribute of the XLogPDescriptor object.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XLogPDescriptor

public XLogPDescriptor()
Constructor for the XLogPDescriptor object.

Method Detail

getSpecification

@TestMethod(value="testGetSpecification")
public DescriptorSpecification getSpecification()
Gets the specification attribute of the XLogPDescriptor object.

Specified by:
getSpecification in interface IDescriptor
Returns:
The specification value

setParameters

@TestMethod(value="testSetParameters_arrayObject")
public void setParameters(Object[] params)
                   throws CDKException
Sets the parameters attribute of the XLogPDescriptor object.

Specified by:
setParameters in interface IDescriptor
Parameters:
params - The new parameters value
Throws:
CDKException - Description of the Exception
See Also:
getParameters()

getParameters

@TestMethod(value="testGetParameters")
public Object[] getParameters()
Gets the parameters attribute of the XLogPDescriptor object.

Specified by:
getParameters in interface IDescriptor
Returns:
The parameters value [boolean checkAromaticity, boolean salicylFlag]
See Also:
setParameters(java.lang.Object[])

getDescriptorNames

@TestMethod(value="testNamesConsistency")
public String[] getDescriptorNames()
Description copied from interface: IDescriptor
Returns an array of names for each descriptor value calculated.

Many descriptors return multiple values. In general it is useful for the descriptor to indicate the names for each value.

In many cases, these names can be as simple as X1, X2, ..., XN where X is a prefix and 1, 2, ..., N are the indices. On the other hand it is also possible to return other arbitrary names, which should be documented in the Javadocs for the decsriptor (e.g., the CPSA descriptor).

Note that by default if a descriptor returns a single value (such as ALOGPDescriptor the return array will have a single element

Specified by:
getDescriptorNames in interface IDescriptor
Returns:
An array of descriptor names, equal in length to the number of descriptor calculated..

calculate

@TestMethod(value="testCalculate_IAtomContainer")
public DescriptorValue calculate(IAtomContainer atomContainer)
Calculates the xlogP for an atom container. If checkAromaticity is true, the method check the aromaticity, if false, means that the aromaticity has already been checked. It is necessary to use before the call of this mehtod the addExplicitHydrogensToSatisfyValency method (HydrogenAdder classe).

Specified by:
calculate in interface IMolecularDescriptor
Parameters:
atomContainer - AtomContainer
Returns:
XLogP is a double

getDescriptorResultType

@TestMethod(value="testGetDescriptorResultType")
public IDescriptorResult getDescriptorResultType()
Returns the specific type of the DescriptorResult object.

The return value from this method really indicates what type of result will be obtained from the DescriptorValue object. Note that the same result can be achieved by interrogating the DescriptorValue object; this method allows you to do the same thing, without actually calculating the descriptor.

Specified by:
getDescriptorResultType in interface IMolecularDescriptor
Returns:
an object that implements the IDescriptorResult interface indicating the actual type of values returned by the descriptor in the DescriptorValue object

getParameterNames

@TestMethod(value="testGetParameterNames")
public String[] getParameterNames()
Gets the parameterNames attribute of the XLogPDescriptor object.

Specified by:
getParameterNames in interface IDescriptor
Returns:
The parameterNames value

getParameterType

@TestMethod(value="testGetParameterType_String")
public Object getParameterType(String name)
Gets the parameterType attribute of the XLogPDescriptor object.

Specified by:
getParameterType in interface IDescriptor
Parameters:
name - Description of the Parameter
Returns:
The parameterType value