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...
struct | ChiralViolationContribsParams
class | ChiralViolationContribs
struct | DistViolationContribsParams
class | DistViolationContribs
struct | FourthDimContribsParams
class | FourthDimContribs

## Typedefs

typedef boost::shared_ptr< BoundsMatrix > | BoundsMatPtr
typedef boost::shared_ptr< ChiralSet > | ChiralSetPtr
typedef std::vector< ChiralSetPtr > | VECT_CHIRALSET

## Enumerations

enum class | ChiralSetStructureFlags : std::uint64_t { IN_FUSED_SMALL_RINGS }

## Functions

RDKIT_DISTGEOMETRY_EXPORT double | calcChiralVolume (const unsigned int idx1, const unsigned int idx2, const unsigned int idx3, const unsigned int idx4, const double *pos, const unsigned int dim)
RDKIT_DISTGEOMETRY_EXPORT double | calcChiralVolume (const unsigned int idx1, const unsigned int idx2, const unsigned int idx3, const unsigned int idx4, const RDGeom::PointPtrVect &pts)
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::ForceField *

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

| Setup the error function for violation of distance bounds as a forcefield.
RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * | constructForceField (const BoundsMatrix &mmat, const RDGeom::PointPtrVect &positions, const VECT_CHIRALSET &csets, const double weightChiral=1.0, const double weightFourthDim=0.1, const std::map< std::pair< int, int >, double > *extraWeights=nullptr, const double basinSizeTol=5.0, const boost::dynamic_bitset<> *fixedPts=nullptr)
| Setup the error function for violation of distance bounds as a forcefield.
RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * | construct3DForceField (const BoundsMatrix &mmat, RDGeom::Point3DPtrVect &positions, const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails)
RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * | construct3DForceField (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::ForceField * | constructPlain3DForceField (const BoundsMatrix &mmat, RDGeom::Point3DPtrVect &positions, const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails)
RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * | 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.
ForceFields::ForceField * | construct3DImproperForceField (const BoundsMatrix &mmat, RDGeom::Point3DPtrVect &positions, const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails)
| Force field with improper terms and SP linearity contributions.
RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * | constructAllInOneForceField (const BoundsMatrix &mmat, RDGeom::PointPtrVect &positions, const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails, const VECT_CHIRALSET *csets, const std::map< std::pair< unsigned int, unsigned int >, double > *extraWeights=nullptr, const boost::dynamic_bitset<> *fixedPts=nullptr)
| Force Field for All-In-One Minimization.

RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField *

constructAllInOneForceField (const BoundsMatrix &mmat, RDGeom::PointPtrVect &positions, const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails, const VECT_CHIRALSET *csets, const std::map< std::pair< unsigned int, unsigned int >, double > &CPCI, const std::map< std::pair< unsigned int, unsigned int >, double > *extraWeights=nullptr, const boost::dynamic_bitset<> *fixedPts=nullptr)

RDKIT_DISTGEOMETRY_EXPORT void | addTorsionTerms (ForceFields::ForceField *field, const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails, const bool doK, const bool doET)
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 107 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

## addTorsionTerms()

RDKIT_DISTGEOMETRY_EXPORT void DistGeom::addTorsionTerms | ( | ForceFields::ForceField * | field,
|  | const ForceFields::CrystalFF::CrystalFFDetails & | etkdgDetails,
|  | const bool | doK,
|  | const bool | doET )

References RDKIT_DISTGEOMETRY_EXPORT.

## calcChiralVolume() [1/2]

RDKIT_DISTGEOMETRY_EXPORT double DistGeom::calcChiralVolume | ( | const unsigned int | idx1,
|  | const unsigned int | idx2,
|  | const unsigned int | idx3,
|  | const unsigned int | idx4,
|  | const double * | pos,
|  | const unsigned int | dim )

References RDKIT_DISTGEOMETRY_EXPORT.

## calcChiralVolume() [2/2]

RDKIT_DISTGEOMETRY_EXPORT double DistGeom::calcChiralVolume | ( | const unsigned int | idx1,
|  | const unsigned int | idx2,
|  | const unsigned int | idx3,
|  | const unsigned int | idx4,
|  | const RDGeom::PointPtrVect & | pts )

References RDKIT_DISTGEOMETRY_EXPORT.

## 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

  distmat | Distance matrix
  positions | A vector of pointers to Points to write out the resulting coordinates
  randNegEig | If set to true and if any of the eigen values are negative, we will pick the corresponding components of the coordinates at random
  numZeroFail | Fail embedding is more this many (or more) eigen values are zero
  seed | the random number seed to use

Returns
  true if the embedding was successful

References RDKIT_DISTGEOMETRY_EXPORT.

## 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.

References RDKIT_DISTGEOMETRY_EXPORT.

## computeRandomCoords() [1/2]

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

places atoms randomly in a box

Parameters

  positions | A vector of pointers to Points to write out the resulting coordinates
  boxSize | the side-length of the cubic box
  seed | the random number seed to use

Returns
  true if the coordinate generation was successful

References RDKIT_DISTGEOMETRY_EXPORT.

## 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.

References RDKIT_DISTGEOMETRY_EXPORT.

## 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

  mmat | Distance bounds matrix
  positions | A vector of pointers to 3D Points to write out the resulting coordinates
  etkdgDetails | Contains information about the ETKDG force field

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

References RDKIT_DISTGEOMETRY_EXPORT.

## 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

  mmat | Distance bounds matrix
  positions | A vector of pointers to 3D Points to write out the resulting coordinates
  etkdgDetails | Contains information about the ETKDG force field
  CPCI | Contains which atom pair(s) have what strength of attractive/repulsive electrostatic interaction(s)

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

References RDKIT_DISTGEOMETRY_EXPORT.

## 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

  mmat | Distance bounds matrix
  positions | A vector of pointers to 3D Points to write out the resulting coordinates
  etkdgDetails | Contains 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 243 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

  mmat | Distance bounds matrix
  positions | A vector of pointers to 3D Points to write out the resulting coordinates
  improperAtoms | A list of groups of 4 atom indices for inversion terms
  angles | List of lists with the three angle indices and whether the center atom in the angle is SP hybridized for every angle in the molecule.
  atomNums | A 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().

## constructAllInOneForceField() [1/2]

RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * DistGeom::constructAllInOneForceField | ( | const BoundsMatrix & | mmat,
|  | RDGeom::PointPtrVect & | positions,
|  | const ForceFields::CrystalFF::CrystalFFDetails & | etkdgDetails,
|  | const VECT_CHIRALSET * | csets,
|  | const std::map< std::pair< unsigned int, unsigned int >, double > & | CPCI,
|  | const std::map< std::pair< unsigned int, unsigned int >, double > * | extraWeights = nullptr,
|  | const boost::dynamic_bitset<> * | fixedPts = nullptr )

References RDKIT_DISTGEOMETRY_EXPORT.

## constructAllInOneForceField() [2/2]

RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * DistGeom::constructAllInOneForceField | ( | const BoundsMatrix & | mmat,
|  | RDGeom::PointPtrVect & | positions,
|  | const ForceFields::CrystalFF::CrystalFFDetails & | etkdgDetails,
|  | const VECT_CHIRALSET * | csets,
|  | const std::map< std::pair< unsigned int, unsigned int >, double > * | extraWeights = nullptr,
|  | const boost::dynamic_bitset<> * | fixedPts = nullptr )

Force Field for All-In-One Minimization.

Parameters

  mmat | Distance bounds matrix
  positions | A vector of pointers to Points to place in the field
  etkdgDetails | Contains information about the ETKDG force field
  csets | The vector of chiral points (type: ChiralSet)
  extraWeights | mapping from atom pair indices to double to overwrite the force constants for the distance terms

Returns
  a pointer to a ForceField for the All in One optimization NOTE: the caller is responsible for deleting this force field.

References RDKIT_DISTGEOMETRY_EXPORT.

## constructForceField() [1/2]

RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * DistGeom::constructForceField | ( | const BoundsMatrix & | mmat,
|  | const RDGeom::PointPtrVect & | positions,
|  | const VECT_CHIRALSET & | csets,
|  | const double | weightChiral = 1.0,
|  | const double | weightFourthDim = 0.1,
|  | const std::map< std::pair< int, int >, double > * | extraWeights = nullptr,
|  | const double | basinSizeTol = 5.0,
|  | const 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

  mmat | Distance bounds matrix
  positions | A vector of pointers to Points to write out the resulting coordinates
  csets | The vector of chiral points (type: ChiralSet)
  weightChiral | weight to be used to enforce chirality
  weightFourthDim | another chiral weight
  extraWeights | an optional set of weights for distance bounds violations
  basinSizeTol | Optional: 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.

References RDKIT_DISTGEOMETRY_EXPORT.

## constructForceField() [2/2]

RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * DistGeom::constructForceField | ( | const BoundsMatrix & | mmat,
|  | const RDGeom::PointPtrVect & | positions,
|  | const VECT_CHIRALSET & | csets,
|  | const double | weightDistance = 1.0,
|  | const double | weightChiral = 1.0,
|  | const double | weightFourthDim = 0.1,
|  | const std::map< std::pair< int, int >, double > * | extraWeights = nullptr,
|  | const double | basinSizeTol = 5.0,
|  | const 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

  mmat | Distance bounds matrix
  positions | A vector of pointers to Points to write out the resulting coordinates
  csets | The vector of chiral points (type: ChiralSet)
  weightDistance | weight to be used for distance bounds
  weightChiral | weight to be used to enforce chirality
  weightFourthDim | another chiral weight
  extraWeights | an optional set of weights for distance bounds violations
  basinSizeTol | Optional: 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.

References RDKIT_DISTGEOMETRY_EXPORT.

## 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

  mmat | Distance bounds matrix
  positions | A vector of pointers to 3D Points to write out the resulting coordinates
  etkdgDetails | Contains information about the ETKDG force field

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

References RDKIT_DISTGEOMETRY_EXPORT.

## 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

  mmat | Bounds matrix
  distmat | Storage for randomly chosen distances
  seed | the random number seed to use

Returns
  the largest element of the distance matrix

References RDKIT_DISTGEOMETRY_EXPORT.

## 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.

References RDKIT_DISTGEOMETRY_EXPORT.

## 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.

References RDKIT_DISTGEOMETRY_EXPORT.

## 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

  boundsMat | A pointer to the distance bounds matrix
  tol | a tolerance (percent) for errors in the smoothing process

References RDKIT_DISTGEOMETRY_EXPORT.