mirror of
https://github.com/rdkit/rdkit.git
synced 2026-06-03 21:44:30 +08:00
Improve Conformational Sampling of Small and Large Ring Molecules (#2999)
* improvements for smal anr large ring conformer generation * add documentation and reorder parameters in EmbedParam * resolve merge conflict due to coordMap null pointer * minor changes to address merge comments * reorder variables in EmbedParameters * add regression test for small ring and macrocycle torsion preferences * not apply small ring torsions to bridged ring systems * fix and test for bridged small rings torsion pattern exclusion * add ETKDGv3 and srETKDGv3 option to keep compatiblity for original ETKDG * EKTDG version 3 related minor fix * add reference to doc string * Java wrapper for ETKDGv3 * fix doc * change CPCI to shared_ptr, but it seems to be much slower * minor modifications to small bridged ring systems, and share_ptr from previous commit is fine * rollback from shared_ptr(map) to just map * run clang-format Co-authored-by: Shuzhe Wang <shuwang@eu-login-10.euler.ethz.ch> Co-authored-by: Shuzhe Wang <shuwang@eu-login-14.euler.ethz.ch> Co-authored-by: Shuzhe Wang <shuwang@eu-login-17.euler.ethz.ch> Co-authored-by: Shuzhe Wang <shuwang@eu-login-45.euler.ethz.ch> Co-authored-by: Shuzhe Wang <shuwang@eu-login-05.euler.ethz.ch> Co-authored-by: Shuzhe Wang <shuwang@eu-login-15.euler.ethz.ch> Co-authored-by: greg landrum <greg.landrum@gmail.com>
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
#include <GraphMol/ForceFieldHelpers/CrystalFF/TorsionPreferences.h>
|
||||
#include <GraphMol/ForceFieldHelpers/CrystalFF/TorsionAngleM6.h>
|
||||
#include <boost/dynamic_bitset.hpp>
|
||||
#include <ForceField/MMFF/Nonbonded.h>
|
||||
|
||||
namespace DistGeom {
|
||||
const double EIGVAL_TOL = 0.001;
|
||||
@@ -363,6 +364,25 @@ ForceFields::ForceField *construct3DForceField(
|
||||
return field;
|
||||
} // construct3DForceField
|
||||
|
||||
ForceFields::ForceField *construct3DForceField(
|
||||
const BoundsMatrix &mmat, RDGeom::Point3DPtrVect &positions,
|
||||
const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails,
|
||||
const std::map<std::pair<unsigned int, unsigned int>, double> &CPCI) {
|
||||
auto *field = construct3DForceField(mmat, positions, etkdgDetails);
|
||||
|
||||
bool is1_4 = false;
|
||||
// double dielConst = 1.0;
|
||||
boost::uint8_t dielModel = 1;
|
||||
for (const auto &charge : CPCI) {
|
||||
auto *contrib = new ForceFields::MMFF::EleContrib(
|
||||
field, charge.first.first, charge.first.second, charge.second,
|
||||
dielModel, is1_4);
|
||||
field->contribs().push_back(ForceFields::ContribPtr(contrib));
|
||||
}
|
||||
|
||||
return field;
|
||||
}
|
||||
|
||||
ForceFields::ForceField *constructPlain3DForceField(
|
||||
const BoundsMatrix &mmat, RDGeom::Point3DPtrVect &positions,
|
||||
const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails) {
|
||||
|
||||
@@ -138,6 +138,24 @@ RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField *construct3DForceField(
|
||||
const BoundsMatrix &mmat, RDGeom::Point3DPtrVect &positions,
|
||||
const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails);
|
||||
//! Force field with experimental torsion angle preferences and 1-2/1-3 distance
|
||||
// constraints, as well as atom pairwise Columbic interactions
|
||||
/*!
|
||||
|
||||
\param mmat Distance bounds matrix
|
||||
\param positions A vector of pointers to 3D Points to write out the
|
||||
resulting coordinates
|
||||
\param etkdgDetails Contains information about the ETKDG force field
|
||||
\param CPCI Contains which atom pair(s) have what strength of
|
||||
attractive/repulsive electrostatic interaction(s)
|
||||
|
||||
<b>NOTE:</b> the caller is responsible for deleting this force field.
|
||||
|
||||
*/
|
||||
RDKIT_DISTGEOMETRY_EXPORT ForceFields::ForceField *construct3DForceField(
|
||||
const BoundsMatrix &mmat, RDGeom::Point3DPtrVect &positions,
|
||||
const ForceFields::CrystalFF::CrystalFFDetails &etkdgDetails,
|
||||
const std::map<std::pair<unsigned int, unsigned int>, double> &CPCI);
|
||||
//! Force field with experimental torsion angle preferences and 1-2/1-3 distance
|
||||
// constraints
|
||||
/*!
|
||||
|
||||
|
||||
Reference in New Issue
Block a user