RDKit
Open-source cheminformatics and machine learning.
Embedder.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2004-2017 Greg Landrum and Rational Discovery LLC
3 //
4 // @@ All Rights Reserved @@
5 // This file is part of the RDKit.
6 // The contents are covered by the terms of the BSD license
7 // which is included in the file license.txt, found at the root
8 // of the RDKit source tree.
9 //
10 
11 #include <RDGeneral/export.h>
12 #ifndef RD_EMBEDDER_H_GUARD
13 #define RD_EMBEDDER_H_GUARD
14 
15 #include <map>
16 #include <Geometry/point.h>
17 #include <GraphMol/ROMol.h>
18 #include <boost/shared_ptr.hpp>
19 #include <DistGeom/BoundsMatrix.h>
20 
21 namespace RDKit {
22 namespace DGeomHelpers {
23 
24 //! Parameter object for controlling embedding
25 /*!
26  numConfs Number of conformations to be generated
27  numThreads Sets the number of threads to use (more than one thread
28  will only be used if the RDKit was build with multithread
29  support) If set to zero, the max supported by the system will
30  be used.
31  maxIterations Max. number of times the embedding will be tried if
32  coordinates are not obtained successfully. The default
33  value is 10x the number of atoms.
34  randomSeed provides a seed for the random number generator (so that
35  the same coordinates can be obtained for a
36  molecule on multiple runs) If -1, the
37  RNG will not be seeded.
38  clearConfs Clear all existing conformations on the molecule
39  useRandomCoords Start the embedding from random coordinates instead of
40  using eigenvalues of the distance matrix.
41  boxSizeMult Determines the size of the box that is used for
42  random coordinates. If this is a positive number, the
43  side length will equal the largest element of the distance
44  matrix times \c boxSizeMult. If this is a negative number,
45  the side length will equal \c -boxSizeMult (i.e. independent
46  of the elements of the distance matrix).
47  randNegEig Picks coordinates at random when a embedding process produces
48  negative eigenvalues
49  numZeroFail Fail embedding if we find this many or more zero eigenvalues
50  (within a tolerance)
51  pruneRmsThresh Retain only the conformations out of 'numConfs' after
52  embedding that are at least this far apart from each other.
53  RMSD is computed on the heavy atoms.
54  Prunining is greedy; i.e. the first embedded conformation is
55  retained and from then on only those that are at least
56  \c pruneRmsThresh away from already
57  retained conformations are kept. The pruning is done
58  after embedding and bounds violation minimization.
59  No pruning by default.
60  coordMap a map of int to Point3D, between atom IDs and their locations
61  their locations. If this container is provided, the
62  coordinates are used to set distance constraints on the
63  embedding. The resulting conformer(s) should have distances
64  between the specified atoms that reproduce those between the
65  points in \c coordMap. Because the embedding produces a
66  molecule in an arbitrary reference frame, an alignment step
67  is required to actually reproduce the provided coordinates.
68  optimizerForceTol set the tolerance on forces in the DGeom optimizer
69  (this shouldn't normally be altered in client code).
70  ignoreSmoothingFailures try to embed the molecule even if triangle bounds
71  smoothing fails
72  enforceChirality enforce the correct chirality if chiral centers are present
73  useExpTorsionAnglePrefs impose experimental torsion-angle preferences
74  useBasicKnowledge impose "basic knowledge" terms such as flat
75  aromatic rings, ketones, etc.
76  ETversion version of the experimental torsion-angle preferences
77  verbose print output of experimental torsion-angle preferences
78  basinThresh set the basin threshold for the DGeom force field,
79  (this shouldn't normally be altered in client code).
80  onlyHeavyAtomsForRMS only use the heavy atoms when doing RMS filtering
81  boundsMat custom bound matrix to specify upper and lower bounds of atom
82  pairs embedFragmentsSeparately embed each fragment of molecule in turn
83  useSmallRingTorsions optional torsions to improve small ring conformer
84  sampling
85 
86  useMacrocycleTorsions optional torsions to improve macrocycle conformer
87  sampling useMacrocycle14config If 1-4 distances bound heuristics for
88  macrocycles is used
89 
90  CPCI custom columbic interactions between atom pairs
91 */
93  unsigned int maxIterations;
96  bool clearConfs;
98  double boxSizeMult;
99  bool randNegEig;
100  unsigned int numZeroFail;
101  const std::map<int, RDGeom::Point3D> *coordMap;
107  bool verbose;
108  double basinThresh;
111  unsigned int ETversion;
112  boost::shared_ptr<const DistGeom::BoundsMatrix> boundsMat;
117  std::shared_ptr<std::map<std::pair<unsigned int, unsigned int>, double>> CPCI;
119  : maxIterations(0),
120  numThreads(1),
121  randomSeed(-1),
122  clearConfs(true),
123  useRandomCoords(false),
124  boxSizeMult(2.0),
125  randNegEig(true),
126  numZeroFail(1),
127  coordMap(NULL),
128  optimizerForceTol(1e-3),
129  ignoreSmoothingFailures(false),
130  enforceChirality(true),
131  useExpTorsionAnglePrefs(false),
132  useBasicKnowledge(false),
133  verbose(false),
134  basinThresh(5.0),
135  pruneRmsThresh(-1.0),
136  onlyHeavyAtomsForRMS(false),
137  ETversion(1),
138  boundsMat(nullptr),
139  embedFragmentsSeparately(true),
140  useSmallRingTorsions(false),
141  useMacrocycleTorsions(false),
142  useMacrocycle14config(false),
143  CPCI(nullptr){};
145  unsigned int maxIterations, int numThreads, int randomSeed,
146  bool clearConfs, bool useRandomCoords, double boxSizeMult,
147  bool randNegEig, unsigned int numZeroFail,
148  const std::map<int, RDGeom::Point3D> *coordMap, double optimizerForceTol,
149  bool ignoreSmoothingFailures, bool enforceChirality,
150  bool useExpTorsionAnglePrefs, bool useBasicKnowledge, bool verbose,
151  double basinThresh, double pruneRmsThresh, bool onlyHeavyAtomsForRMS,
152  unsigned int ETversion = 1,
153  const DistGeom::BoundsMatrix *boundsMat = nullptr,
154  bool embedFragmentsSeparately = true, bool useSmallRingTorsions = false,
155  bool useMacrocycleTorsions = false, bool useMacrocycle14config = false,
156  std::shared_ptr<std::map<std::pair<unsigned int, unsigned int>, double>>
157  CPCI = nullptr)
158  : maxIterations(maxIterations),
159  numThreads(numThreads),
160  randomSeed(randomSeed),
161  clearConfs(clearConfs),
162  useRandomCoords(useRandomCoords),
163  boxSizeMult(boxSizeMult),
164  randNegEig(randNegEig),
165  numZeroFail(numZeroFail),
166  coordMap(coordMap),
167  optimizerForceTol(optimizerForceTol),
168  ignoreSmoothingFailures(ignoreSmoothingFailures),
169  enforceChirality(enforceChirality),
170  useExpTorsionAnglePrefs(useExpTorsionAnglePrefs),
171  useBasicKnowledge(useBasicKnowledge),
172  verbose(verbose),
173  basinThresh(basinThresh),
174  pruneRmsThresh(pruneRmsThresh),
175  onlyHeavyAtomsForRMS(onlyHeavyAtomsForRMS),
176  ETversion(ETversion),
177  boundsMat(boundsMat),
178  embedFragmentsSeparately(embedFragmentsSeparately),
179  useSmallRingTorsions(useSmallRingTorsions),
180  useMacrocycleTorsions(useMacrocycleTorsions),
181  useMacrocycle14config(useMacrocycle14config),
182  CPCI(CPCI){};
183 };
184 
185 //*! Embed multiple conformations for a molecule
187  ROMol &mol, INT_VECT &res, unsigned int numConfs,
188  const EmbedParameters &params);
189 inline INT_VECT EmbedMultipleConfs(ROMol &mol, unsigned int numConfs,
190  const EmbedParameters &params) {
191  INT_VECT res;
192  EmbedMultipleConfs(mol, res, numConfs, params);
193  return res;
194 }
195 
196 //! Compute an embedding (in 3D) for the specified molecule using Distance
197 // Geometry
198 inline int EmbedMolecule(ROMol &mol, const EmbedParameters &params) {
199  INT_VECT confIds;
200  EmbedMultipleConfs(mol, confIds, 1, params);
201 
202  int res;
203  if (confIds.size()) {
204  res = confIds[0];
205  } else {
206  res = -1;
207  }
208  return res;
209 }
210 
211 //! Compute an embedding (in 3D) for the specified molecule using Distance
212 // Geometry
213 /*!
214  The following operations are performed (in order) here:
215  -# Build a distance bounds matrix based on the topology, including 1-5
216  distances but not VDW scaling
217  -# Triangle smooth this bounds matrix
218  -# If step 2 fails - repeat step 1, this time without 1-5 bounds and with vdW
219  scaling, and repeat step 2
220  -# Pick a distance matrix at random using the bounds matrix
221  -# Compute initial coordinates from the distance matrix
222  -# Repeat steps 3 and 4 until maxIterations is reached or embedding is
223  successful
224  -# Adjust initial coordinates by minimizing a Distance Violation error
225  function
226  **NOTE**: if the molecule has multiple fragments, they will be embedded
227  separately,
228  this means that they will likely occupy the same region of space.
229  \param mol Molecule of interest
230  \param maxIterations Max. number of times the embedding will be tried if
231  coordinates are not obtained successfully. The default
232  value is 10x the number of atoms.
233  \param seed provides a seed for the random number generator (so that
234  the same coordinates can be obtained for a molecule on
235  multiple runs). If negative, the RNG will not be seeded.
236  \param clearConfs Clear all existing conformations on the molecule
237  \param useRandomCoords Start the embedding from random coordinates instead of
238  using eigenvalues of the distance matrix.
239  \param boxSizeMult Determines the size of the box that is used for
240  random coordinates. If this is a positive number, the
241  side length will equal the largest element of the
242  distance matrix times \c boxSizeMult. If this is a
243  negative number, the side length will equal
244  \c -boxSizeMult (i.e. independent of the elements of the
245  distance matrix).
246  \param randNegEig Picks coordinates at random when a embedding process
247  produces negative eigenvalues
248  \param numZeroFail Fail embedding if we find this many or more zero
249  eigenvalues (within a tolerance)
250  \param coordMap a map of int to Point3D, between atom IDs and their locations
251  their locations. If this container is provided, the
252  coordinates are used to set distance constraints on the
253  embedding. The resulting conformer(s) should have distances
254  between the specified atoms that reproduce those between the
255  points in \c coordMap. Because the embedding produces a
256  molecule in an arbitrary reference frame, an alignment step
257  is required to actually reproduce the provided coordinates.
258  \param optimizerForceTol set the tolerance on forces in the distgeom optimizer
259  (this shouldn't normally be altered in client code).
260  \param ignoreSmoothingFailures try to embed the molecule even if triangle
261  bounds smoothing fails
262  \param enforceChirality enforce the correct chirality if chiral centers are
263  present
264  \param useExpTorsionAnglePrefs impose experimental torsion-angle preferences
265  \param useBasicKnowledge impose "basic knowledge" terms such as flat
266  aromatic rings, ketones, etc.
267  \param verbose print output of experimental torsion-angle preferences
268  \param basinThresh set the basin threshold for the DGeom force field,
269  (this shouldn't normally be altered in client code).
270  \param onlyHeavyAtomsForRMS only use the heavy atoms when doing RMS filtering
271  \param ETversion version of torsion preferences to use
272  \param useSmallRingTorsions optional torsions to improve small ring
273  conformer sampling
274 
275  \param useMacrocycleTorsions optional torsions to improve macrocycle
276  conformer sampling \param useMacrocycle14config If 1-4 distances bound
277  heuristics for macrocycles is used \return ID of the conformations added to
278  the molecule, -1 if the emdedding failed
279 */
280 inline int EmbedMolecule(
281  ROMol &mol, unsigned int maxIterations = 0, int seed = -1,
282  bool clearConfs = true, bool useRandomCoords = false,
283  double boxSizeMult = 2.0, bool randNegEig = true,
284  unsigned int numZeroFail = 1,
285  const std::map<int, RDGeom::Point3D> *coordMap = 0,
286  double optimizerForceTol = 1e-3, bool ignoreSmoothingFailures = false,
287  bool enforceChirality = true, bool useExpTorsionAnglePrefs = false,
288  bool useBasicKnowledge = false, bool verbose = false,
289  double basinThresh = 5.0, bool onlyHeavyAtomsForRMS = false,
290  unsigned int ETversion = 1, bool useSmallRingTorsions = false,
291  bool useMacrocycleTorsions = false, bool useMacrocycle14config = false) {
292  EmbedParameters params(
293  maxIterations, 1, seed, clearConfs, useRandomCoords, boxSizeMult,
294  randNegEig, numZeroFail, coordMap, optimizerForceTol,
295  ignoreSmoothingFailures, enforceChirality, useExpTorsionAnglePrefs,
296  useBasicKnowledge, verbose, basinThresh, -1.0, onlyHeavyAtomsForRMS,
297  ETversion, nullptr, true, useSmallRingTorsions, useMacrocycleTorsions,
298  useMacrocycle14config);
299  return EmbedMolecule(mol, params);
300 };
301 
302 //*! Embed multiple conformations for a molecule
303 /*!
304  This is kind of equivalent to calling EmbedMolecule multiple times - just that
305  the bounds
306  matrix is computed only once from the topology
307  **NOTE**: if the molecule has multiple fragments, they will be embedded
308  separately,
309  this means that they will likely occupy the same region of space.
310  \param mol Molecule of interest
311  \param res Used to return the resulting conformer ids
312  \param numConfs Number of conformations to be generated
313  \param numThreads Sets the number of threads to use (more than one thread
314  will only be used if the RDKit was build with
315  multithread
316  support). If set to zero, the max supported by the
317  system
318  will be used.
319  \param maxIterations Max. number of times the embedding will be tried if
320  coordinates are not obtained successfully. The default
321  value is 10x the number of atoms.
322  \param seed provides a seed for the random number generator (so that
323  the same coordinates can be obtained for a molecule on
324  multiple runs). If negative, the RNG will not be seeded.
325  \param clearConfs Clear all existing conformations on the molecule
326  \param useRandomCoords Start the embedding from random coordinates instead of
327  using eigenvalues of the distance matrix.
328  \param boxSizeMult Determines the size of the box that is used for
329  random coordinates. If this is a positive number, the
330  side length will equal the largest element of the
331  distance matrix times \c boxSizeMult. If this is a
332  negative number, the side length will equal
333  \c -boxSizeMult (i.e. independent of the elements of the
334  distance matrix).
335  \param randNegEig Picks coordinates at random when a embedding process
336  produces negative eigenvalues
337  \param numZeroFail Fail embedding if we find this many or more zero
338  eigenvalues (within a tolerance)
339  \param pruneRmsThresh Retain only the conformations out of 'numConfs' after
340  embedding that are at least this far apart from each
341  other. RMSD is computed on the heavy atoms.
342  Pruning is greedy; i.e. the first embedded conformation
343  is retained and from then on only those that are at
344  least
345  pruneRmsThresh away from already retained conformations
346  are kept. The pruning is done after embedding and
347  bounds violation minimization. No pruning by default.
348  \param coordMap a map of int to Point3D, between atom IDs and their locations
349  their locations. If this container is provided, the
350  coordinates are used to set distance constraints on the
351  embedding. The resulting conformer(s) should have distances
352  between the specified atoms that reproduce those between the
353  points in \c coordMap. Because the embedding produces a
354  molecule in an arbitrary reference frame, an alignment step
355  is required to actually reproduce the provided coordinates.
356  \param optimizerForceTol set the tolerance on forces in the DGeom optimizer
357  (this shouldn't normally be altered in client code).
358  \param ignoreSmoothingFailures try to embed the molecule even if triangle
359  bounds smoothing fails
360  \param enforceChirality enforce the correct chirality if chiral centers are
361  present
362  \param useExpTorsionAnglePrefs impose experimental torsion-angle preferences
363  \param useBasicKnowledge impose "basic knowledge" terms such as flat
364  aromatic rings, ketones, etc.
365  \param verbose print output of experimental torsion-angle preferences
366  \param basinThresh set the basin threshold for the DGeom force field,
367  (this shouldn't normally be altered in client code).
368  \param onlyHeavyAtomsForRMS only use the heavy atoms when doing RMS filtering
369  \param ETversion version of torsion preferences to use
370  \param useSmallRingTorsions optional torsions to improve small ring
371  conformer sampling
372 
373  \param useMacrocycleTorsions optional torsions to improve macrocycle
374  conformer sampling \param useMacrocycle14config If 1-4 distances bound
375  heuristics for macrocycles is used
376 
377 */
378 inline void EmbedMultipleConfs(
379  ROMol &mol, INT_VECT &res, unsigned int numConfs = 10, int numThreads = 1,
380  unsigned int maxIterations = 30, int seed = -1, bool clearConfs = true,
381  bool useRandomCoords = false, double boxSizeMult = 2.0,
382  bool randNegEig = true, unsigned int numZeroFail = 1,
383  double pruneRmsThresh = -1.0,
384  const std::map<int, RDGeom::Point3D> *coordMap = 0,
385  double optimizerForceTol = 1e-3, bool ignoreSmoothingFailures = false,
386  bool enforceChirality = true, bool useExpTorsionAnglePrefs = false,
387  bool useBasicKnowledge = false, bool verbose = false,
388  double basinThresh = 5.0, bool onlyHeavyAtomsForRMS = false,
389  unsigned int ETversion = 1, bool useSmallRingTorsions = false,
390  bool useMacrocycleTorsions = false, bool useMacrocycle14config = false) {
391  EmbedParameters params(
392  maxIterations, numThreads, seed, clearConfs, useRandomCoords, boxSizeMult,
393  randNegEig, numZeroFail, coordMap, optimizerForceTol,
394  ignoreSmoothingFailures, enforceChirality, useExpTorsionAnglePrefs,
395  useBasicKnowledge, verbose, basinThresh, pruneRmsThresh,
396  onlyHeavyAtomsForRMS, ETversion, nullptr, true, useSmallRingTorsions,
397  useMacrocycleTorsions, useMacrocycle14config);
398  EmbedMultipleConfs(mol, res, numConfs, params);
399 };
400 //! \overload
402  ROMol &mol, unsigned int numConfs = 10, unsigned int maxIterations = 30,
403  int seed = -1, bool clearConfs = true, bool useRandomCoords = false,
404  double boxSizeMult = 2.0, bool randNegEig = true,
405  unsigned int numZeroFail = 1, double pruneRmsThresh = -1.0,
406  const std::map<int, RDGeom::Point3D> *coordMap = 0,
407  double optimizerForceTol = 1e-3, bool ignoreSmoothingFailures = false,
408  bool enforceChirality = true, bool useExpTorsionAnglePrefs = false,
409  bool useBasicKnowledge = false, bool verbose = false,
410  double basinThresh = 5.0, bool onlyHeavyAtomsForRMS = false,
411  unsigned int ETversion = 1, bool useSmallRingTorsions = false,
412  bool useMacrocycleTorsions = false, bool useMacrocycle14config = false) {
413  EmbedParameters params(
414  maxIterations, 1, seed, clearConfs, useRandomCoords, boxSizeMult,
415  randNegEig, numZeroFail, coordMap, optimizerForceTol,
416  ignoreSmoothingFailures, enforceChirality, useExpTorsionAnglePrefs,
417  useBasicKnowledge, verbose, basinThresh, pruneRmsThresh,
418  onlyHeavyAtomsForRMS, ETversion, nullptr, true, useSmallRingTorsions,
419  useMacrocycleTorsions, useMacrocycle14config);
420  INT_VECT res;
421  EmbedMultipleConfs(mol, res, numConfs, params);
422  return res;
423 };
424 
425 //! Parameters corresponding to Sereina Riniker's KDG approach
426 RDKIT_DISTGEOMHELPERS_EXPORT extern const EmbedParameters KDG;
427 //! Parameters corresponding to Sereina Riniker's ETDG approach
428 RDKIT_DISTGEOMHELPERS_EXPORT extern const EmbedParameters ETDG;
429 //! Parameters corresponding to Sereina Riniker's ETKDG approach
430 RDKIT_DISTGEOMHELPERS_EXPORT extern const EmbedParameters ETKDG;
431 //! Parameters corresponding to Sereina Riniker's ETKDG approach - version 2
432 RDKIT_DISTGEOMHELPERS_EXPORT extern const EmbedParameters ETKDGv2;
433 //! Parameters corresponding improved ETKDG by Wang, Witek, Landrum and Riniker
434 //! (10.1021/acs.jcim.0c00025) - the macrocycle part
435 RDKIT_DISTGEOMHELPERS_EXPORT extern const EmbedParameters ETKDGv3;
436 //! Parameters corresponding improved ETKDG by Wang, Witek, Landrum and Riniker
437 //! (10.1021/acs.jcim.0c00025) - the small ring part
438 RDKIT_DISTGEOMHELPERS_EXPORT extern const EmbedParameters srETKDGv3;
439 } // namespace DGeomHelpers
440 } // namespace RDKit
441 
442 #endif
RDKit::DGeomHelpers::EmbedParameters::useExpTorsionAnglePrefs
bool useExpTorsionAnglePrefs
Definition: Embedder.h:105
BoundsMatrix.h
RDKit::DGeomHelpers::ETDG
RDKIT_DISTGEOMHELPERS_EXPORT const EmbedParameters ETDG
Parameters corresponding to Sereina Riniker's ETDG approach.
RDKit::DGeomHelpers::EmbedParameters::useMacrocycleTorsions
bool useMacrocycleTorsions
Definition: Embedder.h:115
RDKit::DGeomHelpers::EmbedParameters::pruneRmsThresh
double pruneRmsThresh
Definition: Embedder.h:109
RDKit::DGeomHelpers::EmbedParameters::useBasicKnowledge
bool useBasicKnowledge
Definition: Embedder.h:106
point.h
ROMol.h
Defines the primary molecule class ROMol as well as associated typedefs.
RDKit::INT_VECT
std::vector< int > INT_VECT
Definition: types.h:266
RDKit::DGeomHelpers::EmbedParameters::enforceChirality
bool enforceChirality
Definition: Embedder.h:104
RDKit::DGeomHelpers::EmbedParameters::useSmallRingTorsions
bool useSmallRingTorsions
Definition: Embedder.h:114
RDKit::DGeomHelpers::EmbedParameters::onlyHeavyAtomsForRMS
bool onlyHeavyAtomsForRMS
Definition: Embedder.h:110
RDKit::DGeomHelpers::EmbedParameters::clearConfs
bool clearConfs
Definition: Embedder.h:96
RDKit::DGeomHelpers::ETKDGv3
RDKIT_DISTGEOMHELPERS_EXPORT const EmbedParameters ETKDGv3
RDKit::DGeomHelpers::KDG
RDKIT_DISTGEOMHELPERS_EXPORT const EmbedParameters KDG
Parameters corresponding to Sereina Riniker's KDG approach.
RDKit::DGeomHelpers::EmbedParameters::randNegEig
bool randNegEig
Definition: Embedder.h:99
RDKit::DGeomHelpers::EmbedParameters::coordMap
const std::map< int, RDGeom::Point3D > * coordMap
Definition: Embedder.h:101
RDKit::DGeomHelpers::EmbedMultipleConfs
RDKIT_DISTGEOMHELPERS_EXPORT void EmbedMultipleConfs(ROMol &mol, INT_VECT &res, unsigned int numConfs, const EmbedParameters &params)
RDKit::DGeomHelpers::EmbedParameters::ignoreSmoothingFailures
bool ignoreSmoothingFailures
Definition: Embedder.h:103
RDKit::MHFPFingerprints::FNV::seed
const uint32_t seed
Definition: MHFP.h:29
RDKit::DGeomHelpers::ETKDGv2
RDKIT_DISTGEOMHELPERS_EXPORT const EmbedParameters ETKDGv2
Parameters corresponding to Sereina Riniker's ETKDG approach - version 2.
RDKIT_DISTGEOMHELPERS_EXPORT
#define RDKIT_DISTGEOMHELPERS_EXPORT
Definition: export.h:151
RDKit::DGeomHelpers::EmbedParameters::ETversion
unsigned int ETversion
Definition: Embedder.h:111
RDKit::ROMol
Definition: ROMol.h:171
RDKit::DGeomHelpers::EmbedParameters::EmbedParameters
EmbedParameters(unsigned int maxIterations, int numThreads, int randomSeed, bool clearConfs, bool useRandomCoords, double boxSizeMult, bool randNegEig, unsigned int numZeroFail, const std::map< int, RDGeom::Point3D > *coordMap, double optimizerForceTol, bool ignoreSmoothingFailures, bool enforceChirality, bool useExpTorsionAnglePrefs, bool useBasicKnowledge, bool verbose, double basinThresh, double pruneRmsThresh, bool onlyHeavyAtomsForRMS, unsigned int ETversion=1, const DistGeom::BoundsMatrix *boundsMat=nullptr, bool embedFragmentsSeparately=true, bool useSmallRingTorsions=false, bool useMacrocycleTorsions=false, bool useMacrocycle14config=false, std::shared_ptr< std::map< std::pair< unsigned int, unsigned int >, double >> CPCI=nullptr)
Definition: Embedder.h:144
RDKit::DGeomHelpers::EmbedParameters::verbose
bool verbose
Definition: Embedder.h:107
RDKit::DGeomHelpers::EmbedParameters::boxSizeMult
double boxSizeMult
Definition: Embedder.h:98
RDKit::DGeomHelpers::EmbedParameters::embedFragmentsSeparately
bool embedFragmentsSeparately
Definition: Embedder.h:113
RDKit::DGeomHelpers::EmbedParameters::boundsMat
boost::shared_ptr< const DistGeom::BoundsMatrix > boundsMat
Definition: Embedder.h:112
RDKit::DGeomHelpers::EmbedParameters::numThreads
int numThreads
Definition: Embedder.h:94
RDKit::DGeomHelpers::EmbedParameters::CPCI
std::shared_ptr< std::map< std::pair< unsigned int, unsigned int >, double > > CPCI
Definition: Embedder.h:117
RDKit::DGeomHelpers::EmbedParameters::EmbedParameters
EmbedParameters()
Definition: Embedder.h:118
RDKit::DGeomHelpers::EmbedParameters::optimizerForceTol
double optimizerForceTol
Definition: Embedder.h:102
RDKit::DGeomHelpers::EmbedParameters::maxIterations
unsigned int maxIterations
Definition: Embedder.h:93
RDKit::DGeomHelpers::EmbedParameters::useRandomCoords
bool useRandomCoords
Definition: Embedder.h:97
RDKit
Std stuff.
Definition: Atom.h:30
RDKit::DGeomHelpers::EmbedMolecule
int EmbedMolecule(ROMol &mol, const EmbedParameters &params)
Compute an embedding (in 3D) for the specified molecule using Distance.
Definition: Embedder.h:198
RDKit::DGeomHelpers::EmbedParameters::randomSeed
int randomSeed
Definition: Embedder.h:95
RDKit::DGeomHelpers::ETKDG
RDKIT_DISTGEOMHELPERS_EXPORT const EmbedParameters ETKDG
Parameters corresponding to Sereina Riniker's ETKDG approach.
RDKit::DGeomHelpers::EmbedParameters::numZeroFail
unsigned int numZeroFail
Definition: Embedder.h:100
RDKit::DGeomHelpers::EmbedParameters::basinThresh
double basinThresh
Definition: Embedder.h:108
RDKit::DGeomHelpers::EmbedParameters::useMacrocycle14config
bool useMacrocycle14config
Definition: Embedder.h:116
RDKit::DGeomHelpers::EmbedParameters
Parameter object for controlling embedding.
Definition: Embedder.h:92
RDKit::DGeomHelpers::srETKDGv3
RDKIT_DISTGEOMHELPERS_EXPORT const EmbedParameters srETKDGv3
DistGeom::BoundsMatrix
Class to store the distance bound.
Definition: BoundsMatrix.h:28
export.h