13#ifndef RD_EMBEDDER_H_GUARD
14#define RD_EMBEDDER_H_GUARD
21#include <boost/shared_ptr.hpp>
35namespace DGeomHelpers {
160 const std::map<int, RDGeom::Point3D> *
coordMap{
nullptr};
171 boost::shared_ptr<const DistGeom::BoundsMatrix>
boundsMat{
nullptr};
179 std::shared_ptr<std::map<std::pair<unsigned int, unsigned int>,
double>>
CPCI{
203 unsigned int numConfs,
219 if (confIds.size()) {
298 ROMol &mol,
unsigned int maxIterations = 0,
int seed = -1,
299 bool clearConfs =
true,
bool useRandomCoords =
false,
300 double boxSizeMult = 2.0,
bool randNegEig =
true,
301 unsigned int numZeroFail = 1,
302 const std::map<int, RDGeom::Point3D> *coordMap =
nullptr,
303 double optimizerForceTol = 1e-3,
bool ignoreSmoothingFailures =
false,
304 bool enforceChirality =
true,
bool useExpTorsionAnglePrefs =
false,
305 bool useBasicKnowledge =
false,
bool verbose =
false,
306 double basinThresh = 5.0,
bool onlyHeavyAtomsForRMS =
false,
307 unsigned int ETversion = 2,
bool useSmallRingTorsions =
false,
308 bool useMacrocycleTorsions =
true,
bool useMacrocycle14config =
true) {
311 .clearConfs = clearConfs,
312 .useRandomCoords = useRandomCoords,
313 .boxSizeMult = boxSizeMult,
314 .randNegEig = randNegEig,
315 .numZeroFail = numZeroFail,
316 .coordMap = coordMap,
317 .optimizerForceTol = optimizerForceTol,
318 .ignoreSmoothingFailures = ignoreSmoothingFailures,
319 .enforceChirality = enforceChirality,
320 .useExpTorsionAnglePrefs = useExpTorsionAnglePrefs,
321 .useBasicKnowledge = useBasicKnowledge,
323 .basinThresh = basinThresh,
324 .onlyHeavyAtomsForRMS = onlyHeavyAtomsForRMS,
325 .ETversion = ETversion,
326 .useSmallRingTorsions = useSmallRingTorsions,
327 .useMacrocycleTorsions = useMacrocycleTorsions,
328 .useMacrocycle14config = useMacrocycle14config};
410 ROMol &mol,
INT_VECT &res,
unsigned int numConfs = 10,
int numThreads = 1,
411 unsigned int maxIterations = 30,
int seed = -1,
bool clearConfs =
true,
412 bool useRandomCoords =
false,
double boxSizeMult = 2.0,
413 bool randNegEig =
true,
unsigned int numZeroFail = 1,
414 double pruneRmsThresh = -1.0,
415 const std::map<int, RDGeom::Point3D> *coordMap =
nullptr,
416 double optimizerForceTol = 1e-3,
bool ignoreSmoothingFailures =
false,
417 bool enforceChirality =
true,
bool useExpTorsionAnglePrefs =
false,
418 bool useBasicKnowledge =
false,
bool verbose =
false,
419 double basinThresh = 5.0,
bool onlyHeavyAtomsForRMS =
false,
420 unsigned int ETversion = 2,
bool useSmallRingTorsions =
false,
421 bool useMacrocycleTorsions =
true,
bool useMacrocycle14config =
true,
422 unsigned int timeout = 0) {
424 .numThreads = numThreads,
426 .clearConfs = clearConfs,
427 .useRandomCoords = useRandomCoords,
428 .boxSizeMult = boxSizeMult,
429 .randNegEig = randNegEig,
430 .numZeroFail = numZeroFail,
431 .coordMap = coordMap,
432 .optimizerForceTol = optimizerForceTol,
433 .ignoreSmoothingFailures = ignoreSmoothingFailures,
434 .enforceChirality = enforceChirality,
435 .useExpTorsionAnglePrefs = useExpTorsionAnglePrefs,
436 .useBasicKnowledge = useBasicKnowledge,
438 .basinThresh = basinThresh,
439 .pruneRmsThresh = pruneRmsThresh,
440 .onlyHeavyAtomsForRMS = onlyHeavyAtomsForRMS,
441 .ETversion = ETversion,
442 .useSmallRingTorsions = useSmallRingTorsions,
443 .useMacrocycleTorsions = useMacrocycleTorsions,
444 .useMacrocycle14config = useMacrocycle14config,
450 ROMol &mol,
unsigned int numConfs = 10,
unsigned int maxIterations = 30,
451 int seed = -1,
bool clearConfs =
true,
bool useRandomCoords =
false,
452 double boxSizeMult = 2.0,
bool randNegEig =
true,
453 unsigned int numZeroFail = 1,
double pruneRmsThresh = -1.0,
454 const std::map<int, RDGeom::Point3D> *coordMap =
nullptr,
455 double optimizerForceTol = 1e-3,
bool ignoreSmoothingFailures =
false,
456 bool enforceChirality =
true,
bool useExpTorsionAnglePrefs =
false,
457 bool useBasicKnowledge =
false,
bool verbose =
false,
458 double basinThresh = 5.0,
bool onlyHeavyAtomsForRMS =
false,
459 unsigned int ETversion = 2,
bool useSmallRingTorsions =
false,
460 bool useMacrocycleTorsions =
false,
bool useMacrocycle14config =
false,
461 unsigned int timeout = 0) {
465 .clearConfs = clearConfs,
466 .useRandomCoords = useRandomCoords,
467 .boxSizeMult = boxSizeMult,
468 .randNegEig = randNegEig,
469 .numZeroFail = numZeroFail,
470 .coordMap = coordMap,
471 .optimizerForceTol = optimizerForceTol,
472 .ignoreSmoothingFailures = ignoreSmoothingFailures,
473 .enforceChirality = enforceChirality,
474 .useExpTorsionAnglePrefs = useExpTorsionAnglePrefs,
475 .useBasicKnowledge = useBasicKnowledge,
477 .basinThresh = basinThresh,
478 .pruneRmsThresh = pruneRmsThresh,
479 .onlyHeavyAtomsForRMS = onlyHeavyAtomsForRMS,
480 .ETversion = ETversion,
481 .useSmallRingTorsions = useSmallRingTorsions,
482 .useMacrocycleTorsions = useMacrocycleTorsions,
483 .useMacrocycle14config = useMacrocycle14config,
495 os <<
"DG_EMBEDDING";
498 os <<
"INTERNAL_COORDINATE_EMBEDDING";
501 os <<
"RANDOM_COORDINATE_EMBEDDING";
510 if (val ==
"DG_EMBEDDING") {
512 }
else if (val ==
"INTERNAL_COORDINATE_EMBEDDING") {
514 }
else if (val ==
"RANDOM_COORDINATE_EMBEDDING") {
517 is.setstate(std::ios::failbit);
534 os << static_cast<int>(eff);
544 }
else if (val !=
"UFF") {
546 <<
"Provided embedForceField " << val
547 <<
" in JSON is not valid. Choose between UFF and MMFF. Falling back to UFF."
#define BOOST_LOG(__arg__)
RDKIT_RDGENERAL_EXPORT RDLogger rdWarningLog
Defines the primary molecule class ROMol as well as associated typedefs.
Class to store the distance bound.
Class used to store a quartet of points and chiral volume bounds on them.
#define RDKIT_DISTGEOMHELPERS_EXPORT
std::vector< boost::shared_ptr< ChiralSet > > VECT_CHIRALSET
RDKIT_DISTGEOMHELPERS_EXPORT const EmbedParameters ETKDGv2
Parameters corresponding to Sereina Riniker's ETKDG approach - version 2.
RDKIT_DISTGEOMHELPERS_EXPORT const EmbedParameters ETDG
Parameters corresponding to Sereina Riniker's ETDG approach.
RDKIT_DISTGEOMHELPERS_EXPORT const EmbedParameters ETKDGv3
RDKIT_DISTGEOMHELPERS_EXPORT const EmbedParameters DG
Parameters corresponding to plain Distance Geometry.
RDKIT_DISTGEOMHELPERS_EXPORT void updateEmbedParametersFromJSON(EmbedParameters ¶ms, const std::string &json)
update parameters from a JSON string
RDKIT_DISTGEOMHELPERS_EXPORT const EmbedParameters ETKDG
Parameters corresponding to Sereina Riniker's ETKDG approach.
RDKIT_DISTGEOMHELPERS_EXPORT void EmbedMultipleConfs(ROMol &mol, INT_VECT &res, unsigned int numConfs, EmbedParameters ¶ms)
Embed multiple conformations for a molecule.
@ MINIMIZE_FOURTH_DIMENSION
@ CHECK_TETRAHEDRAL_CENTERS
RDKIT_DISTGEOMHELPERS_EXPORT std::string embedParametersToJSON(const EmbedParameters ¶ms)
export parameters to JSON string
int EmbedMolecule(ROMol &mol, EmbedParameters ¶ms)
RDKIT_DISTGEOMHELPERS_EXPORT const EmbedParameters srETKDGv3
RDKIT_DISTGEOMHELPERS_EXPORT const EmbedParameters KDG
Parameters corresponding to Sereina Riniker's KDG approach.
RDKIT_DISTGEOMHELPERS_EXPORT const EmbedParameters ETDGv2
Parameters corresponding to Sereina Riniker's ETDG approach - version 2.
RDKIT_DISTGEOMHELPERS_EXPORT const EmbedParameters ETKDGv4
@ RANDOM_COORDINATE_EMBEDDING
@ INTERNAL_COORDINATE_EMBEDDING
std::ostream & operator<<(std::ostream &os, const InitialEmbeddingMode &mode)
std::istream & operator>>(std::istream &is, InitialEmbeddingMode &mode)
std::vector< int > INT_VECT
Parameter object for controlling embedding.
bool useLegacyImplementation
bool embedFragmentsSeparately
bool useMacrocycle14config
bool useMacrocycleTorsions
InitialEmbeddingMode initialEmbeddingMode
bool useSymmetryForPruning
bool useExpTorsionAnglePrefs
bool onlyHeavyAtomsForRMS
void(* callback)(unsigned int)
std::vector< unsigned int > failures
bool onlyInitialEmbedding
unsigned int maxIterations
bool useSmallRingTorsions
bool symmetrizeConjugatedTerminalGroupsForPruning
const std::map< int, RDGeom::Point3D > * coordMap
boost::shared_ptr< const DistGeom::BoundsMatrix > boundsMat
bool enableSequentialRandomSeeds
double boundsMatForceScaling
std::shared_ptr< std::map< std::pair< unsigned int, unsigned int >, double > > CPCI
bool ignoreSmoothingFailures