29 #ifndef CDPL_CONFGEN_DGCONSTRAINTGENERATOR_HPP
30 #define CDPL_CONFGEN_DGCONSTRAINTGENERATOR_HPP
34 #include <unordered_map>
51 class MMFF94InteractionData;
74 typedef std::vector<StereoCenterData> StereoCenterDataArray;
126 std::size_t& num_vol_constr, std::size_t level);
133 void extractAtomStereoCenterData();
134 void extractBondStereoCenterData();
136 void setBondLength(std::size_t atom1_idx, std::size_t atom2_idx,
double length);
137 double getBondLength(std::size_t atom1_idx, std::size_t atom2_idx)
const;
139 void setBondAngle(std::size_t atom1_idx, std::size_t atom2_idx, std::size_t atom3_idx,
double angle);
140 double getBondAngle(std::size_t atom1_idx, std::size_t atom2_idx, std::size_t atom3_idx)
const;
143 std::size_t getSmallestRingSize(
const Chem::FragmentList& sssr, std::size_t atom1_idx, std::size_t atom2_idx)
const;
145 void markAtomPairProcessed(std::size_t atom1_idx, std::size_t atom2_idx);
146 bool atomPairProcessed(std::size_t atom1_idx, std::size_t atom2_idx)
const;
148 double calc13AtomDistance(
double bond1_len,
double bond2_len,
double angle)
const;
150 double calcCis14AtomDistance(
double bond1_len,
double bond2_len,
double bond3_len,
151 double angle_12,
double angle_23)
const;
152 double calcTrans14AtomDistance(
double bond1_len,
double bond2_len,
double bond3_len,
153 double angle_12,
double angle_23)
const;
158 typedef std::vector<std::size_t> AtomIndexList;
160 std::size_t getNeighborAtoms(
const Chem::Atom& atom, AtomIndexList& idx_list,
163 typedef std::pair<std::size_t, std::size_t> BondLengthKey;
164 typedef std::tuple<std::size_t, std::size_t, std::size_t> BondAngleKey;
169 std::size_t operator()(
const BondAngleKey& k)
const;
175 std::size_t operator()(
const BondLengthKey& k)
const;
178 typedef std::unordered_map<BondLengthKey, double, BondLengthKeyHash> BondLengthTable;
179 typedef std::unordered_map<BondAngleKey, double, BondAngleKeyHash> BondAngleTable;
185 BondLengthTable bondLengthTable;
186 BondAngleTable bondAngleTable;
187 StereoCenterDataArray atomStereoData;
188 StereoCenterDataArray bondStereoData;
189 std::size_t numAtoms;
190 AtomIndexList atomIndexList1;
191 AtomIndexList atomIndexList2;
192 DGConstraintGeneratorSettings settings;
Definition of the type CDPL::Util::BitSet.
Definition of the preprocessor macro CDPL_CONFGEN_API.
#define CDPL_CONFGEN_API
Tells the compiler/linker which classes, functions and variables are part of the library API.
Definition of the class CDPL::ConfGen::DGConstraintGeneratorSettings.
Implementation of a distance geometry based coordinates generator.
Definition of the type CDPL::Chem::StereoDescriptor.
Definition of the class CDPL::Math::VectorArray.
A common interface for data-structures that support a random access to stored Chem::Atom instances.
Definition: AtomContainer.hpp:55
Atom.
Definition: Atom.hpp:52
Bond.
Definition: Bond.hpp:50
A data type for the storage of Chem::Fragment objects.
Definition: FragmentList.hpp:49
MolecularGraph.
Definition: MolecularGraph.hpp:52
A data structure for the storage and retrieval of stereochemical information about atoms and bonds.
Definition: StereoDescriptor.hpp:102
Definition: DGConstraintGeneratorSettings.hpp:42
Definition: DGConstraintGenerator.hpp:68
ConstStereoCenterDataIterator getBondStereoCenterDataEnd() const
void addAtomConfigurationConstraints(Util::DG3DCoordinatesGenerator &coords_gen)
void addFixedSubstructureConstraints(const Chem::AtomContainer &atoms, const Math::Vector3DArray &coords, Util::DG3DCoordinatesGenerator &coords_gen)
void addBondPlanarityConstraints(Util::DG3DCoordinatesGenerator &coords_gen)
void addDefaultDistanceConstraints(Util::DG3DCoordinatesGenerator &coords_gen)
void setup(const Chem::MolecularGraph &molgraph, const ForceField::MMFF94InteractionData &ia_data)
void add14DistanceConstraints(Util::DG3DCoordinatesGenerator &coords_gen)
const StereoCenterData & getAtomStereoCenterData(std::size_t idx) const
void addBondLengthConstraints(Util::DG3DCoordinatesGenerator &coords_gen)
void addBondStereoCenter(const Chem::Bond &bond, const Chem::StereoDescriptor &descr)
void addAtomPlanarityConstraints(Util::DG3DCoordinatesGenerator &coords_gen)
StereoCenterDataArray::const_iterator ConstStereoCenterDataIterator
Definition: DGConstraintGenerator.hpp:77
const DGConstraintGeneratorSettings & getSettings() const
std::size_t getNumBondStereoCenters() const
ConstStereoCenterDataIterator getBondStereoCenterDataBegin() const
void setup(const Chem::MolecularGraph &molgraph)
std::pair< std::size_t, Chem::StereoDescriptor > StereoCenterData
Definition: DGConstraintGenerator.hpp:71
ConstStereoCenterDataIterator getAtomStereoCenterDataEnd() const
void addAtomStereoCenter(const Chem::Atom &atom, const Chem::StereoDescriptor &descr)
const Util::BitSet & getExcludedHydrogenMask() const
const StereoCenterData & getBondStereoCenterData(std::size_t idx) const
void addBondConfigurationConstraints(Util::DG3DCoordinatesGenerator &coords_gen)
DGConstraintGeneratorSettings & getSettings()
ConstStereoCenterDataIterator getAtomStereoCenterDataBegin() const
std::size_t getNumAtomStereoCenters() const
void addBondAngleConstraints(Util::DG3DCoordinatesGenerator &coords_gen)
Definition: MMFF94InteractionData.hpp:51
VectorArray< Vector3D > Vector3DArray
An array of Math::Vector3D objects.
Definition: VectorArray.hpp:84
VectorNorm2< E >::ResultType length(const VectorExpression< E > &e)
Definition: VectorExpression.hpp:553
boost::dynamic_bitset BitSet
A dynamic bitset class.
Definition: BitSet.hpp:46
DGCoordinatesGenerator< 3, double > DG3DCoordinatesGenerator
Definition: DGCoordinatesGenerator.hpp:296
The namespace of the Chemical Data Processing Library.