public class NumericalSurface extends Object
This class is based on the Python implementation of the DCLM method ([Eisenhaber, F. and Lijnzaad, P. and Argos, P. and Sander, C. and Scharf, M. , The Double Cubic Lattice Method: Efficient Approaches to Numerical Integration of Surface Area and Volume and to Dot Surface Contourin gof Molecular Assemblies, Journal of Computational Chemistry, 1995, 16:273-284]) 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. and Lijnzaad, P. and Argos, P. and Sander, C. and Scharf, M. , The Double Cubic Lattice Method: Efficient Approaches to Numerical Integration of Surface Area and Volume and to Dot Surface Contourin gof Molecular Assemblies, Journal of Computational Chemistry, 1995, 16:273-284] 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 and 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.
|
Modifier and Type | Method and Description |
---|---|
void |
calculateSurface()
Evaluate the surface.
|
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.
|
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.
|
public NumericalSurface(IAtomContainer atomContainer)
atomContainer
- The IAtomContainer
for which the surface is to be calculatedpublic NumericalSurface(IAtomContainer atomContainer, double solventRadius, int tesslevel)
atomContainer
- The IAtomContainer
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 usepublic void calculateSurface()
public javax.vecmath.Point3d[] getAllSurfacePoints()
public javax.vecmath.Point3d[] getSurfacePoints(int atomIdx) throws CDKException
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 forCDKException
- if the atom index is outside the range of allowable indicespublic double getSurfaceArea(int atomIdx) throws CDKException
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 forCDKException
- if the atom index is outside the range of allowable indicespublic double[] getAllSurfaceAreas()
public double getTotalSurfaceArea()
Copyright © 2017. All Rights Reserved.