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);
119 double weightFourthDim = 0.1,
120 std::map<std::pair<int, int>,
double> *extraWeights =
nullptr,
121 double basinSizeTol = 5.0, boost::dynamic_bitset<> *fixedPts =
nullptr);
155 const std::map<std::pair<unsigned int, unsigned int>,
double> &CPCI);
191 const std::vector<std::vector<int>> &improperAtoms,
192 const std::vector<std::vector<int>> &angles,
193 const std::vector<int> &atomNums);
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 * construct3DForceField(const BoundsMatrix &mmat, RDGeom::Point3DPtrVect &positions, const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails)
RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField * 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.
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 double pickRandomDistMat(const BoundsMatrix &mmat, RDNumeric::SymmMatrix< double > &distmat, int seed=-1)
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