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.
ForceFields::ForceField::~ForceField | ( | ) |
ForceFields::ForceField::ForceField | ( | const ForceField & | other | ) |
copy ctor, copies contribs.
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
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.
|
inline |
Definition at line 186 of file ForceField.h.
|
inline |
returns the dimension of the forcefield
Definition at line 235 of file ForceField.h.
Referenced by DistGeom::FourthDimContrib::FourthDimContrib(), 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.
|
inline |
Definition at line 241 of file ForceField.h.
|
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
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.
|
inline |
returns the number of points the ForceField is handling
Definition at line 238 of file ForceField.h.
|
inline |
returns a reference to our points (a PointPtrVect)
Definition at line 181 of file ForceField.h.
|
inline |
Definition at line 182 of file ForceField.h.
|
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.
|
protected |
Definition at line 244 of file ForceField.h.
|
protected |
Definition at line 250 of file ForceField.h.
|
protected |
Definition at line 251 of file ForceField.h.
|
protected |
the number of active points
Definition at line 246 of file ForceField.h.
|
protected |
pointers to the points we're using
Definition at line 248 of file ForceField.h.
|
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.