11#ifndef _RD_DISTGEOMUTILS_H_
12#define _RD_DISTGEOMUTILS_H_
21#include <boost/dynamic_bitset.hpp>
68 unsigned int numZeroFail = 2,
int seed = -1);
73 bool randNegEig =
false,
unsigned int numZeroFail = 2);
120 const double weightChiral = 1.0,
const double weightFourthDim = 0.1,
121 const std::map<std::pair<int, int>,
double> *extraWeights =
nullptr,
122 const double basinSizeTol = 5.0,
123 const boost::dynamic_bitset<> *fixedPts =
nullptr);
153 const double weightFourthDim = 0.1,
154 const std::map<std::pair<int, int>,
double> *extraWeights =
nullptr,
155 const double basinSizeTol = 5.0,
156 const boost::dynamic_bitset<> *fixedPts =
nullptr);
190 const std::map<std::pair<unsigned int, unsigned int>,
double> &CPCI);
226 const std::vector<std::vector<int>> &improperAtoms,
227 const std::vector<std::vector<int>> &angles,
228 const std::vector<int> &atomNums);
269 const std::map<std::pair<unsigned int, unsigned int>,
double>
270 *extraWeights =
nullptr,
271 const boost::dynamic_bitset<> *fixedPts =
nullptr);
277 const std::map<std::pair<unsigned int, unsigned int>,
double> &CPCI,
278 const std::map<std::pair<unsigned int, unsigned int>,
double>
279 *extraWeights =
nullptr,
280 const boost::dynamic_bitset<> *fixedPts =
nullptr);
285 const bool doK,
const bool doET);
Class to store the distance bound.
A class to store forcefields and handle minimization.
A symmetric matrix class.
#define RDKIT_DISTGEOMETRY_EXPORT
std::vector< ChiralSetPtr > VECT_CHIRALSET
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 * construct3DForceField(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.
RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * constructPlain3DForceField(const BoundsMatrix &mmat, RDGeom::Point3DPtrVect &positions, const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails)
RDKIT_DISTGEOMETRY_EXPORT bool computeRandomCoords(RDGeom::PointPtrVect &positions, double boxSize, int seed=-1)
places atoms randomly in a box
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 void addTorsionTerms(ForceFields::ForceField *field, const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails, const bool doK, const bool doET)
RDKIT_DISTGEOMETRY_EXPORT double pickRandomDistMat(const BoundsMatrix &mmat, RDNumeric::SymmMatrix< double > &distmat, int seed=-1)
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.
std::vector< RDGeom::Point * > PointPtrVect
std::vector< RDGeom::Point3D * > Point3DPtrVect
boost::variate_generator< rng_type &, uniform_double > double_source_type
std::vector< int > atomNums
std::vector< std::vector< int > > improperAtoms
std::vector< std::vector< int > > angles