12 #ifndef _RD_MMFFATOMTYPER_H__ 13 #define _RD_MMFFATOMTYPER_H__ 19 #include <boost/cstdint.hpp> 34 mmffFormalCharge(0.0),
35 mmffPartialCharge(0.0) {};
37 boost::uint8_t mmffAtomType;
56 std::ostream &oStream = std::cout);
58 unsigned int getMMFFBondType(
const Bond *bond);
59 unsigned int getMMFFAngleType(
const ROMol &mol,
60 const unsigned int idx1,
const unsigned int idx2,
61 const unsigned int idx3);
62 const std::pair<unsigned int, unsigned int> getMMFFTorsionType
63 (
const ROMol &mol,
const unsigned int idx1,
const unsigned int idx2,
64 const unsigned int idx3,
const unsigned int idx4);
65 void computeMMFFCharges(
const ROMol &mol);
67 (
const ROMol &mol,
unsigned int idx2,
unsigned int idx3);
72 RANGE_CHECK(0, idx, this->d_MMFFAtomPropertiesPtrVect.size() - 1);
74 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffAtomType;
78 RANGE_CHECK(0, idx, this->d_MMFFAtomPropertiesPtrVect.size() - 1);
80 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffFormalCharge;
84 RANGE_CHECK(0, idx, this->d_MMFFAtomPropertiesPtrVect.size() - 1);
86 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffPartialCharge;
90 this->d_bondTerm = state;
94 return this->d_bondTerm;
98 this->d_angleTerm = state;
102 return this->d_angleTerm;
106 this->d_stretchBendTerm = state;
110 return this->d_stretchBendTerm;
114 this->d_oopTerm = state;
118 return this->d_oopTerm;
122 this->d_torsionTerm = state;
126 return this->d_torsionTerm;
130 this->d_vdWTerm = state;
134 return this->d_vdWTerm;
138 this->d_eleTerm = state;
142 return this->d_eleTerm;
147 || (mmffVariant ==
"MMFF94s"),
"bad MMFF variant");
149 this->d_mmffs = ((mmffVariant ==
"MMFF94s") ?
true :
false);
153 return (this->d_mmffs ?
"MMFF94s" :
"MMFF94");
157 PRECONDITION(dielConst > 0.0,
"bad dielectric constant");
159 this->d_dielConst = dielConst;
163 return this->d_dielConst;
167 this->d_dielModel = dielModel;
171 return this->d_dielModel;
175 this->d_verbosity = verbosity;
179 return this->d_verbosity;
183 this->d_oStream = oStream;
187 return *(this->d_oStream);
193 bool getMMFFBondStretchParams(
const ROMol &mol,
194 const unsigned int idx1,
const unsigned int idx2,
195 unsigned int &bondType,
MMFFBond &mmffBondStretchParams);
196 bool getMMFFAngleBendParams(
const ROMol &mol,
197 const unsigned int idx1,
const unsigned int idx2,
const unsigned int idx3,
198 unsigned int &angleType,
MMFFAngle &mmffAngleBendParams);
199 bool getMMFFStretchBendParams(
const ROMol &mol,
200 const unsigned int idx1,
const unsigned int idx2,
const unsigned int idx3,
201 unsigned int &stretchBendType,
MMFFStbn &mmffStretchBendParams,
203 bool getMMFFTorsionParams(
const ROMol &mol,
204 const unsigned int idx1,
const unsigned int idx2,
205 const unsigned int idx3,
const unsigned int idx4,
206 unsigned int &torsionType,
MMFFTor &mmffTorsionParams);
207 bool getMMFFOopBendParams(
const ROMol &mol,
208 const unsigned int idx1,
const unsigned int idx2,
const unsigned int idx3,
209 const unsigned int idx4,
MMFFOop &mmffOopBendParams);
210 bool getMMFFVdWParams(
const unsigned int idx1,
213 void setMMFFHeavyAtomType(
const Atom *atom);
214 void setMMFFHydrogenType(
const Atom *atom);
215 void setMMFFFormalCharge(
const unsigned int idx,
const double fChg)
217 RANGE_CHECK(0, idx, this->d_MMFFAtomPropertiesPtrVect.size() - 1);
219 this->d_MMFFAtomPropertiesPtrVect[idx]->mmffFormalCharge = fChg;
221 void setMMFFPartialCharge(
const unsigned int idx,
const double pChg)
223 RANGE_CHECK(0, idx, this->d_MMFFAtomPropertiesPtrVect.size() - 1);
225 this->d_MMFFAtomPropertiesPtrVect[idx]->mmffPartialCharge = pChg;
231 bool d_stretchBendTerm;
237 boost::uint8_t d_dielModel;
238 boost::uint8_t d_verbosity;
239 std::ostream *d_oStream;
240 std::vector<MMFFAtomPropertiesPtr> d_MMFFAtomPropertiesPtrVect;
243 const unsigned int idx2,
const unsigned int idx3);
245 const unsigned int idx2,
const unsigned int idx3,
const unsigned int idx4);
249 const unsigned int idx1,
const unsigned int idx2);
251 const unsigned int ringSize,
const unsigned int numAtoms, ...);
255 const unsigned int bondType1,
const unsigned int bondType2);
262 unsigned int idx1,
unsigned int idx2,
unsigned int idx3);
boost::uint8_t getMMFFVerbosity()
bool getMMFFStretchBendTerm()
void setMMFFAngleTerm(const bool state)
const std::string getMMFFVariant()
void setMMFFAromaticity(RWMol &mol)
#define RANGE_CHECK(lo, x, hi)
void setMMFFVdWTerm(const bool state)
class to store MMFF parameters for angle bending
boost::shared_ptr< MMFFAtomProperties > MMFFAtomPropertiesPtr
void setMMFFDielectricConstant(const double dielConst)
bool getMMFFTorsionTerm()
RWMol is a molecule class that is intended to be edited.
unsigned int getMMFFStretchBendType(const unsigned int angleType, const unsigned int bondType1, const unsigned int bondType2)
std::ostream & getMMFFOStream()
void setMMFFBondTerm(const bool state)
ROMol is a molecule class that is intended to have a fixed topology.
void setMMFFTorsionTerm(const bool state)
bool areAtomsInSameAromaticRing(const ROMol &mol, const unsigned int idx1, const unsigned int idx2)
bool areAtomsInSameRingOfSize(const ROMol &mol, const unsigned int ringSize, const unsigned int numAtoms,...)
unsigned int isTorsionInRingOfSize4or5(const ROMol &mol, const unsigned int idx1, const unsigned int idx2, const unsigned int idx3, const unsigned int idx4)
unsigned int sanitizeMMFFMol(RWMol &mol)
class to store MMFF parameters for stretch-bending
unsigned int getPeriodicTableRow(const int atomicNum)
class to store MMFF parameters for bond stretching
void setMMFFStretchBendTerm(const bool state)
double getMMFFFormalCharge(const unsigned int idx)
class to store MMFF parameters for out-of-plane bending
Includes a bunch of functionality for handling Atom and Bond queries.
void setMMFFVerbosity(boost::uint8_t verbosity)
void setMMFFOopTerm(const bool state)
double getMMFFPartialCharge(const unsigned int idx)
unsigned int isAngleInRingOfSize3or4(const ROMol &mol, const unsigned int idx1, const unsigned int idx2, const unsigned int idx3)
class for representing a bond
void setMMFFEleTerm(const bool state)
bool isAtomInAromaticRingOfSize(const Atom *atom, const unsigned int ringSize)
boost::uint8_t getMMFFAtomType(const unsigned int idx)
void setMMFFOStream(std::ostream *oStream)
#define PRECONDITION(expr, mess)
const ForceFields::MMFF::MMFFAngle * getMMFFAngleBendEmpiricalRuleParams(const ROMol &mol, const ForceFields::MMFF::MMFFAngle *oldMMFFAngleParams, const ForceFields::MMFF::MMFFProp *mmffPropParamsCentralAtom, const ForceFields::MMFF::MMFFBond *mmffBondParams1, const ForceFields::MMFF::MMFFBond *mmffBondParams2, unsigned int idx1, unsigned int idx2, unsigned int idx3)
class to store MMFF parameters for torsions
void setMMFFVariant(const std::string mmffVariant)
double getMMFFDielectricConstant()
void setMMFFDielectricModel(boost::uint8_t dielModel)
bool isAtomNOxide(const Atom *atom)
The class for representing atoms.
boost::uint8_t getMMFFDielectricModel()
class to store MMFF Properties