RDKit
Open-source cheminformatics and machine learning.
Loading...
Searching...
No Matches
DistGeom Namespace Reference

Classes

class  BoundsMatrix
 Class to store the distance bound. More...
 
class  ChiralSet
 Class used to store a quartet of points and chiral volume bounds on them. More...
 
class  ChiralViolationContrib
 
class  ChiralViolationContribs
 
struct  ChiralViolationContribsParams
 
class  DistViolationContrib
 
class  DistViolationContribs
 
struct  DistViolationContribsParams
 
class  FourthDimContrib
 
class  FourthDimContribs
 
struct  FourthDimContribsParams
 

Typedefs

typedef boost::shared_ptr< BoundsMatrixBoundsMatPtr
 
typedef boost::shared_ptr< ChiralSetChiralSetPtr
 
typedef std::vector< ChiralSetPtrVECT_CHIRALSET
 

Enumerations

enum class  ChiralSetStructureFlags : std::uint64_t { IN_FUSED_SMALL_RINGS }
 

Functions

RDKIT_DISTGEOMETRY_EXPORT double pickRandomDistMat (const BoundsMatrix &mmat, RDNumeric::SymmMatrix< double > &distmat, int seed=-1)
 
RDKIT_DISTGEOMETRY_EXPORT double pickRandomDistMat (const BoundsMatrix &mmat, RDNumeric::SymmMatrix< double > &distmat, RDKit::double_source_type &rng)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
RDKIT_DISTGEOMETRY_EXPORT bool computeInitialCoords (const RDNumeric::SymmMatrix< double > &distmat, RDGeom::PointPtrVect &positions, bool randNegEig=false, unsigned int numZeroFail=2, int seed=-1)
 Compute an initial embedded in 3D based on a distance matrix.
 
RDKIT_DISTGEOMETRY_EXPORT bool computeInitialCoords (const RDNumeric::SymmMatrix< double > &distmat, RDGeom::PointPtrVect &positions, RDKit::double_source_type &rng, bool randNegEig=false, unsigned int numZeroFail=2)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
RDKIT_DISTGEOMETRY_EXPORT bool computeRandomCoords (RDGeom::PointPtrVect &positions, double boxSize, int seed=-1)
 places atoms randomly in a box
 
RDKIT_DISTGEOMETRY_EXPORT bool computeRandomCoords (RDGeom::PointPtrVect &positions, double boxSize, RDKit::double_source_type &rng)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceFieldconstructForceField (const BoundsMatrix &mmat, RDGeom::PointPtrVect &positions, const VECT_CHIRALSET &csets, double weightChiral=1.0, double weightFourthDim=0.1, std::map< std::pair< int, int >, double > *extraWeights=nullptr, double basinSizeTol=5.0, boost::dynamic_bitset<> *fixedPts=nullptr)
 Setup the error function for violation of distance bounds as a forcefield.
 
RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceFieldconstruct3DForceField (const BoundsMatrix &mmat, RDGeom::Point3DPtrVect &positions, const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails)
 
RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceFieldconstruct3DForceField (const BoundsMatrix &mmat, RDGeom::Point3DPtrVect &positions, const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails, const std::map< std::pair< unsigned int, unsigned int >, double > &CPCI)
 
RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceFieldconstructPlain3DForceField (const BoundsMatrix &mmat, RDGeom::Point3DPtrVect &positions, const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails)
 
RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceFieldconstruct3DImproperForceField (const BoundsMatrix &mmat, RDGeom::Point3DPtrVect &positions, const std::vector< std::vector< int > > &improperAtoms, const std::vector< std::vector< int > > &angles, const std::vector< int > &atomNums)
 Force field with improper terms and SP linearity contributions.
 
ForceFields::ForceFieldconstruct3DImproperForceField (const BoundsMatrix &mmat, RDGeom::Point3DPtrVect &positions, const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails)
 Force field with improper terms and SP linearity contributions.
 
RDKIT_DISTGEOMETRY_EXPORT bool triangleSmoothBounds (BoundsMatrix *boundsMat, double tol=0.)
 
RDKIT_DISTGEOMETRY_EXPORT bool triangleSmoothBounds (BoundsMatPtr boundsMat, double tol=0.)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 

Typedef Documentation

◆ BoundsMatPtr

typedef boost::shared_ptr<BoundsMatrix> DistGeom::BoundsMatPtr

Definition at line 118 of file BoundsMatrix.h.

◆ ChiralSetPtr

typedef boost::shared_ptr<ChiralSet> DistGeom::ChiralSetPtr

Definition at line 62 of file ChiralSet.h.

◆ VECT_CHIRALSET

typedef std::vector<ChiralSetPtr> DistGeom::VECT_CHIRALSET

Definition at line 63 of file ChiralSet.h.

Enumeration Type Documentation

◆ ChiralSetStructureFlags

enum class DistGeom::ChiralSetStructureFlags : std::uint64_t
strong
Enumerator
IN_FUSED_SMALL_RINGS 

Definition at line 20 of file ChiralSet.h.

Function Documentation

◆ computeInitialCoords() [1/2]

RDKIT_DISTGEOMETRY_EXPORT bool DistGeom::computeInitialCoords ( const RDNumeric::SymmMatrix< double > &  distmat,
RDGeom::PointPtrVect positions,
bool  randNegEig = false,
unsigned int  numZeroFail = 2,
int  seed = -1 
)

Compute an initial embedded in 3D based on a distance matrix.

This function follows the embed algorithm mentioned in "Distance Geometry and Molecular Conformation" by G.M.Crippen and T.F.Havel (pages 312-313)

Parameters
distmatDistance matrix
positionsA vector of pointers to Points to write out the resulting coordinates
randNegEigIf set to true and if any of the eigen values are negative, we will pick the corresponding components of the coordinates at random
numZeroFailFail embedding is more this many (or more) eigen values are zero
seedthe random number seed to use
Returns
true if the embedding was successful

◆ computeInitialCoords() [2/2]

RDKIT_DISTGEOMETRY_EXPORT bool DistGeom::computeInitialCoords ( const RDNumeric::SymmMatrix< double > &  distmat,
RDGeom::PointPtrVect positions,
RDKit::double_source_type rng,
bool  randNegEig = false,
unsigned int  numZeroFail = 2 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ computeRandomCoords() [1/2]

RDKIT_DISTGEOMETRY_EXPORT bool DistGeom::computeRandomCoords ( RDGeom::PointPtrVect positions,
double  boxSize,
int  seed = -1 
)

places atoms randomly in a box

Parameters
positionsA vector of pointers to Points to write out the resulting coordinates
boxSizethe side-length of the cubic box
seedthe random number seed to use
Returns
true if the coordinate generation was successful

◆ computeRandomCoords() [2/2]

RDKIT_DISTGEOMETRY_EXPORT bool DistGeom::computeRandomCoords ( RDGeom::PointPtrVect positions,
double  boxSize,
RDKit::double_source_type rng 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ construct3DForceField() [1/2]

RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * DistGeom::construct3DForceField ( const BoundsMatrix mmat,
RDGeom::Point3DPtrVect positions,
const ForceFields::CrystalFF::CrystalFFDetails etkdgDetails 
)

Force field with experimental torsion angle preferences and 1-2/1-3 distance constraints

Parameters
mmatDistance bounds matrix
positionsA vector of pointers to 3D Points to write out the resulting coordinates
etkdgDetailsContains information about the ETKDG force field

NOTE: the caller is responsible for deleting this force field.

◆ construct3DForceField() [2/2]

RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * DistGeom::construct3DForceField ( const BoundsMatrix mmat,
RDGeom::Point3DPtrVect positions,
const ForceFields::CrystalFF::CrystalFFDetails etkdgDetails,
const std::map< std::pair< unsigned int, unsigned int >, double > &  CPCI 
)

Force field with experimental torsion angle preferences and 1-2/1-3 distance constraints, as well as atom pairwise Columbic interactions

Parameters
mmatDistance bounds matrix
positionsA vector of pointers to 3D Points to write out the resulting coordinates
etkdgDetailsContains information about the ETKDG force field
CPCIContains which atom pair(s) have what strength of attractive/repulsive electrostatic interaction(s)

NOTE: the caller is responsible for deleting this force field.

◆ construct3DImproperForceField() [1/2]

ForceFields::ForceField * DistGeom::construct3DImproperForceField ( const BoundsMatrix mmat,
RDGeom::Point3DPtrVect positions,
const ForceFields::CrystalFF::CrystalFFDetails etkdgDetails 
)
inline

Force field with improper terms and SP linearity contributions.

Parameters
mmatDistance bounds matrix
positionsA vector of pointers to 3D Points to write out the resulting coordinates
etkdgDetailsContains information about the ETKDG force field
Returns
a pointer to a ForceField with improper terms NOTE: the caller is responsible for deleting this force field. This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 208 of file DistGeomUtils.h.

References ForceFields::CrystalFF::CrystalFFDetails::angles, ForceFields::CrystalFF::CrystalFFDetails::atomNums, construct3DImproperForceField(), and ForceFields::CrystalFF::CrystalFFDetails::improperAtoms.

◆ construct3DImproperForceField() [2/2]

RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * DistGeom::construct3DImproperForceField ( const BoundsMatrix mmat,
RDGeom::Point3DPtrVect positions,
const std::vector< std::vector< int > > &  improperAtoms,
const std::vector< std::vector< int > > &  angles,
const std::vector< int > &  atomNums 
)

Force field with improper terms and SP linearity contributions.

Parameters
mmatDistance bounds matrix
positionsA vector of pointers to 3D Points to write out the resulting coordinates
improperAtomsA list of groups of 4 atom indices for inversion terms
anglesList of lists with the three angle indices and whether the center atom in the angle is SP hybridized for every angle in the molecule.
atomNumsA list of atomic numbers for all atoms in the molecule, no longer used.
Returns
a pointer to a ForceField with improper terms NOTE: the caller is responsible for deleting this force field.

Referenced by construct3DImproperForceField().

◆ constructForceField()

RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * DistGeom::constructForceField ( const BoundsMatrix mmat,
RDGeom::PointPtrVect positions,
const VECT_CHIRALSET csets,
double  weightChiral = 1.0,
double  weightFourthDim = 0.1,
std::map< std::pair< int, int >, double > *  extraWeights = nullptr,
double  basinSizeTol = 5.0,
boost::dynamic_bitset<> *  fixedPts = nullptr 
)

Setup the error function for violation of distance bounds as a forcefield.

This is based on function E3 on page 311 of "Distance Geometry in Molecular Modeling" Jeffrey M.Blaney and J.Scott Dixon, Review in Computational Chemistry, Volume V

Parameters
mmatDistance bounds matrix
positionsA vector of pointers to Points to write out the resulting coordinates
csetsThe vector of chiral points (type: ChiralSet)
weightChiralweight to be used to enforce chirality
weightFourthDimanother chiral weight
extraWeightsan optional set of weights for distance bounds violations
basinSizeTolOptional: any distance bound with a basin (distance between max and min bounds) larger than this value will not be included in the force field used to cleanup the structure.
Returns
a pointer to a ForceField suitable for cleaning up the violations. NOTE: the caller is responsible for deleting this force field.

◆ constructPlain3DForceField()

RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * DistGeom::constructPlain3DForceField ( const BoundsMatrix mmat,
RDGeom::Point3DPtrVect positions,
const ForceFields::CrystalFF::CrystalFFDetails etkdgDetails 
)

Force field with experimental torsion angle preferences and 1-2/1-3 distance constraints

Parameters
mmatDistance bounds matrix
positionsA vector of pointers to 3D Points to write out the resulting coordinates
etkdgDetailsContains information about the ETKDG force field

NOTE: the caller is responsible for deleting this force field.

◆ pickRandomDistMat() [1/2]

RDKIT_DISTGEOMETRY_EXPORT double DistGeom::pickRandomDistMat ( const BoundsMatrix mmat,
RDNumeric::SymmMatrix< double > &  distmat,
int  seed = -1 
)

Pick a distance matrix at random such that the distance satisfy the bounds in the BoundsMatrix

Parameters
mmatBounds matrix
distmatStorage for randomly chosen distances
seedthe random number seed to use
Returns
the largest element of the distance matrix

◆ pickRandomDistMat() [2/2]

RDKIT_DISTGEOMETRY_EXPORT double DistGeom::pickRandomDistMat ( const BoundsMatrix mmat,
RDNumeric::SymmMatrix< double > &  distmat,
RDKit::double_source_type rng 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ triangleSmoothBounds() [1/2]

RDKIT_DISTGEOMETRY_EXPORT bool DistGeom::triangleSmoothBounds ( BoundsMatPtr  boundsMat,
double  tol = 0. 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ triangleSmoothBounds() [2/2]

RDKIT_DISTGEOMETRY_EXPORT bool DistGeom::triangleSmoothBounds ( BoundsMatrix boundsMat,
double  tol = 0. 
)

Smooth the upper and lower bound in a metric matrix so that triangle inequality is not violated

This an implementation of the O(N^3) algorithm given on pages 252-253 of "Distance Geometry and Molecular Conformation" by G.M.Crippen and T.F.Havel Research Studies Press, 1988. There are other (slightly) more implementations (see pages 301-302 in the above book), but that is for later

Parameters
boundsMatA pointer to the distance bounds matrix
tola tolerance (percent) for errors in the smoothing process