![]() |
RDKit
Open-source cheminformatics and machine learning.
|
A class to store forcefields and handle minimization. More...
#include <ForceField.h>
Public Member Functions | |
| ForceField (unsigned int dimension=3) | |
| construct with a dimension | |
| ~ForceField () | |
| ForceField (const ForceField &other) | |
| copy ctor, copies contribs. | |
| void | initialize () |
| does initialization | |
| double | calcEnergy (std::vector< double > *contribs=nullptr) const |
| double | calcEnergy (double *pos) |
| calculates and returns the energy of the position passed in | |
| void | calcGrad (double *forces) const |
| calculates the gradient of the energy at the current position | |
| void | calcGrad (double *pos, double *forces) |
| calculates the gradient of the energy at the provided position | |
| int | minimize (unsigned int snapshotFreq, RDKit::SnapshotVect *snapshotVect, unsigned int maxIts=200, double forceTol=1e-4, double energyTol=1e-6) |
| minimizes the energy of the system by following gradients | |
| int | minimize (unsigned int maxIts=200, double forceTol=1e-4, double energyTol=1e-6) |
| minimizes the energy of the system by following gradients | |
| RDGeom::PointPtrVect & | positions () |
| returns a reference to our points (a PointPtrVect) | |
| const RDGeom::PointPtrVect & | positions () const |
| ContribPtrVect & | contribs () |
| returns a reference to our contribs (a ContribPtrVect) | |
| const ContribPtrVect & | contribs () const |
| double | distance (unsigned int i, unsigned int j, double *pos=nullptr) |
| returns the distance between two points | |
| double | distance (unsigned int i, unsigned int j, double *pos=nullptr) const |
| returns the distance between two points | |
| double | distance2 (unsigned int i, unsigned int j, double *pos=nullptr) const |
| returns the squared distance between two points | |
| unsigned int | dimension () const |
| returns the dimension of the forcefield | |
| unsigned int | numPoints () const |
| returns the number of points the ForceField is handling | |
| INT_VECT & | fixedPoints () |
| const INT_VECT & | fixedPoints () const |
Protected Member Functions | |
| void | scatter (double *pos) const |
| scatter our positions into an array | |
| void | gather (double *pos) |
| update our positions from an array | |
| void | initDistanceMatrix () |
| initializes our internal distance matrix | |
Protected Attributes | |
| unsigned int | d_dimension |
| bool | df_init {false} |
| whether or not we've been initialized | |
| unsigned int | d_numPoints {0} |
| the number of active points | |
| double * | dp_distMat {nullptr} |
| our internal distance matrix | |
| RDGeom::PointPtrVect | d_positions |
| pointers to the points we're using | |
| ContribPtrVect | d_contribs |
| contributions to the energy | |
| INT_VECT | d_fixedPoints |
| unsigned int | d_matSize = 0 |
A class to store forcefields and handle minimization.
A force field is used like this (schematically):
ForceField ff;
// add contributions:
for contrib in contribs:
ff.contribs().push_back(contrib);
// set up the points:
for positionPtr in positions:
ff.positions().push_back(point);
// initialize:
ff.initialize()
// and minimize:
needsMore = ff.minimize();
Notes:
Definition at line 79 of file ForceField.h.
|
inline |
construct with a dimension
Definition at line 82 of file ForceField.h.
References d_dimension, and dimension().
Referenced by ForceField().
| ForceFields::ForceField::~ForceField | ( | ) |
| ForceFields::ForceField::ForceField | ( | const ForceField & | other | ) |
copy ctor, copies contribs.
References ForceField().
| double ForceFields::ForceField::calcEnergy | ( | double * | pos | ) |
calculates and returns the energy of the position passed in
| pos | an array of doubles. Should be 3*this->numPoints() long. |
Side effects:
| double ForceFields::ForceField::calcEnergy | ( | std::vector< double > * | contribs = nullptr | ) | const |
calculates and returns the energy (in kcal/mol) based on existing positions in the forcefield
Note: This function is less efficient than calcEnergy with postions passed in as double * the positions need to be converted to double * here
References contribs().
Referenced by RDKit::ForceFieldsHelper::OptimizeMolecule(), and RDKit::ForceFieldsHelper::detail::OptimizeMoleculeConfsST().
| void ForceFields::ForceField::calcGrad | ( | double * | forces | ) | const |
calculates the gradient of the energy at the current position
| forces | an array of doubles. Should be 3*this->numPoints() long. |
Note: This function is less efficient than calcGrad with positions passed in the positions need to be converted to double * here
| void ForceFields::ForceField::calcGrad | ( | double * | pos, |
| double * | forces ) |
calculates the gradient of the energy at the provided position
| pos | an array of doubles. Should be 3*this->numPoints() long. |
| forces | an array of doubles. Should be 3*this->numPoints() long. |
Side effects:
|
inline |
returns a reference to our contribs (a ContribPtrVect)
Definition at line 185 of file ForceField.h.
References d_contribs.
Referenced by calcEnergy().
|
inline |
Definition at line 186 of file ForceField.h.
References d_contribs.
|
inline |
returns the dimension of the forcefield
Definition at line 235 of file ForceField.h.
References d_dimension.
Referenced by ForceField(), and DistGeom::FourthDimContribs::FourthDimContribs().
| double ForceFields::ForceField::distance | ( | unsigned int | i, |
| unsigned int | j, | ||
| double * | pos = nullptr ) |
returns the distance between two points
| i | point index |
| j | point index |
| pos | (optional) If this argument is provided, it will be used to provide the positions of points. pos should be 3*this->numPoints() long. |
Side effects:
| double ForceFields::ForceField::distance | ( | unsigned int | i, |
| unsigned int | j, | ||
| double * | pos = nullptr ) const |
returns the distance between two points
| i | point index |
| j | point index |
| pos | (optional) If this argument is provided, it will be used to provide the positions of points. pos should be 3*this->numPoints() long. |
Note: The internal distance matrix is not updated in this case
| double ForceFields::ForceField::distance2 | ( | unsigned int | i, |
| unsigned int | j, | ||
| double * | pos = nullptr ) const |
returns the squared distance between two points
| i | point index |
| j | point index |
| pos | (optional) If this argument is provided, it will be used to provide the positions of points. pos should be 3*this->numPoints() long. |
Note: The internal distance matrix is not updated
|
inline |
Definition at line 240 of file ForceField.h.
References d_fixedPoints.
|
inline |
Definition at line 241 of file ForceField.h.
References d_fixedPoints.
|
protected |
update our positions from an array
| pos | should be 3*this->numPoints() long; |
|
protected |
initializes our internal distance matrix
| void ForceFields::ForceField::initialize | ( | ) |
does initialization
Referenced by RDKit::ForceFieldsHelper::OptimizeMolecule(), and RDKit::ForceFieldsHelper::detail::OptimizeMoleculeConfsST().
| int ForceFields::ForceField::minimize | ( | unsigned int | maxIts = 200, |
| double | forceTol = 1e-4, | ||
| double | energyTol = 1e-6 ) |
minimizes the energy of the system by following gradients
| maxIts | the maximum number of iterations to try |
| forceTol | the convergence criterion for forces |
| energyTol | the convergence criterion for energies |
| snapshotFreq | a snapshot of the minimization trajectory will be stored after as many steps as indicated through this parameter; defaults to 0 (no trajectory stored) |
| snapshotVect | a pointer to a std::vector<Snapshot> where coordinates and energies will be stored |
maxIts iterations. | int ForceFields::ForceField::minimize | ( | unsigned int | snapshotFreq, |
| RDKit::SnapshotVect * | snapshotVect, | ||
| unsigned int | maxIts = 200, | ||
| double | forceTol = 1e-4, | ||
| double | energyTol = 1e-6 ) |
minimizes the energy of the system by following gradients
| maxIts | the maximum number of iterations to try |
| forceTol | the convergence criterion for forces |
| energyTol | the convergence criterion for energies |
maxIts iterations. Referenced by RDKit::ForceFieldsHelper::OptimizeMolecule(), and RDKit::ForceFieldsHelper::detail::OptimizeMoleculeConfsST().
|
inline |
returns the number of points the ForceField is handling
Definition at line 238 of file ForceField.h.
References d_numPoints.
|
inline |
returns a reference to our points (a PointPtrVect)
Definition at line 181 of file ForceField.h.
References d_positions.
Referenced by RDKit::ForceFieldsHelper::detail::OptimizeMoleculeConfsST().
|
inline |
Definition at line 182 of file ForceField.h.
References d_positions.
|
protected |
scatter our positions into an array
| pos | should be 3*this->numPoints() long; |
|
protected |
contributions to the energy
Definition at line 249 of file ForceField.h.
Referenced by contribs(), and contribs().
|
protected |
Definition at line 244 of file ForceField.h.
Referenced by dimension(), and ForceField().
|
protected |
Definition at line 250 of file ForceField.h.
Referenced by fixedPoints(), and fixedPoints().
|
protected |
Definition at line 251 of file ForceField.h.
|
protected |
|
protected |
pointers to the points we're using
Definition at line 248 of file ForceField.h.
Referenced by positions(), and positions().
|
protected |
whether or not we've been initialized
Definition at line 245 of file ForceField.h.
|
protected |
our internal distance matrix
Definition at line 247 of file ForceField.h.