Class NumericalSurface
- java.lang.Object
-
- org.openscience.cdk.geometry.surface.NumericalSurface
-
public class NumericalSurface extends Object
A class representing the solvent accessible surface area surface of a molecule.This class is based on the Python implementation of the DCLM method ([Eisenhaber, F. et. al.. Journal of Computational Chemistry. 1995. 16]) by Peter McCluskey, which is a non-analytical method to generate a set of points representing the solvent accessible surface area of a molecule.
The neighbor list is a simplified version of that described in [Eisenhaber, F. et. al.. Journal of Computational Chemistry. 1995. 16] and as a result, the surface areas of the atoms may not be exact (compared to analytical calculations). The tessellation is slightly different from that described by McCluskey and uses recursive subdivision starting from an icosahedral representation.
The default solvent radius used is 1.4A and setting this to 0 will give the Van der Waals surface. The accuracy can be increased by increasing the tessellation level, though the default of 4 is a good balance between accuracy and speed.
-
-
Constructor Summary
Constructors Constructor Description NumericalSurface(IAtomContainer atomContainer)
Constructor to initialize the surface calculation with default values.NumericalSurface(IAtomContainer atomContainer, double solventRadius, int tesslevel)
Constructor to initialize the surface calculation with user specified values.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
calculateSurface()
Deprecated.double[]
getAllSurfaceAreas()
Get an array containing the accessible surface area for each atom.javax.vecmath.Point3d[]
getAllSurfacePoints()
Get an array of all the points on the molecular surface.Map<IAtom,List<javax.vecmath.Point3d>>
getAtomSurfaceMap()
Get the map from atom to surface points.double
getSurfaceArea(int atomIdx)
Get the surface area for the specified atom.javax.vecmath.Point3d[]
getSurfacePoints(int atomIdx)
Get an array of the points on the accessible surface of a specific atom.double
getTotalSurfaceArea()
Get the total surface area for the AtomContainer.
-
-
-
Constructor Detail
-
NumericalSurface
public NumericalSurface(IAtomContainer atomContainer)
Constructor to initialize the surface calculation with default values. This constructor use the Van der Waals radii as defined in org/openscience/cdk/config/data/jmol_atomtypes.txt of the source distribution. Also uses a tesselation level of 4 and solvent radius of 1.4A.- Parameters:
atomContainer
- TheIAtomContainer
for which the surface is to be calculated
-
NumericalSurface
public NumericalSurface(IAtomContainer atomContainer, double solventRadius, int tesslevel)
Constructor to initialize the surface calculation with user specified values. This constructor use the Van der Waals radii as defined in org/openscience/cdk/config/data/jmol_atomtypes.txt of the source distribution- Parameters:
atomContainer
- TheIAtomContainer
for which the surface is to be calculatedsolventRadius
- The radius of a solvent molecule that is used to extend the radius of each atom. Setting to 0 gives the Van der Waals surfacetesslevel
- The number of levels that the subdivision algorithm for tessellation should use
-
-
Method Detail
-
calculateSurface
@Deprecated public void calculateSurface()
Deprecated.Evaluate the surface. This method generates the points on the accessible surface area of each atom as well as calculating the surface area of each atom.
-
getAllSurfacePoints
public javax.vecmath.Point3d[] getAllSurfacePoints()
Get an array of all the points on the molecular surface. This returns an array of Point3d objects representing all the points on the molecular surface- Returns:
- An array of Point3d objects
-
getAtomSurfaceMap
public Map<IAtom,List<javax.vecmath.Point3d>> getAtomSurfaceMap()
Get the map from atom to surface points. If an atom does not appear in the map it is buried. Atoms may share surface points with other atoms.- Returns:
- surface atoms and associated points on the surface
-
getSurfacePoints
public javax.vecmath.Point3d[] getSurfacePoints(int atomIdx) throws CDKException
Get an array of the points on the accessible surface of a specific atom.- Parameters:
atomIdx
- The index of the atom. Ranges from 0 to n-1, where n is the number of atoms in the AtomContainer that the surface was calculated for- Returns:
- An array of Point3d objects
- Throws:
CDKException
- if the atom index is outside the range of allowable indices
-
getSurfaceArea
public double getSurfaceArea(int atomIdx) throws CDKException
Get the surface area for the specified atom.- Parameters:
atomIdx
- The index of the atom. Ranges from 0 to n-1, where n is the number of atoms in the AtomContainer that the surface was calculated for- Returns:
- A double representing the accessible surface area of the atom
- Throws:
CDKException
- if the atom index is outside the range of allowable indices
-
getAllSurfaceAreas
public double[] getAllSurfaceAreas()
Get an array containing the accessible surface area for each atom.- Returns:
- An array of double giving the surface areas of all the atoms
-
getTotalSurfaceArea
public double getTotalSurfaceArea()
Get the total surface area for the AtomContainer.- Returns:
- A double containing the total surface area of the AtomContainer for which the surface was calculated for
-
-