12 #ifndef _RD_MMFFATOMTYPER_H__ 13 #define _RD_MMFFATOMTYPER_H__ 19 #include <boost/cstdint.hpp> 32 : mmffAtomType(0), mmffFormalCharge(0.0), mmffPartialCharge(0.0){};
34 boost::uint8_t mmffAtomType;
50 std::ostream &oStream = std::cout);
52 unsigned int getMMFFBondType(
const Bond *bond);
53 unsigned int getMMFFAngleType(
const ROMol &mol,
const unsigned int idx1,
54 const unsigned int idx2,
55 const unsigned int idx3);
56 const std::pair<unsigned int, unsigned int> getMMFFTorsionType(
57 const ROMol &mol,
const unsigned int idx1,
const unsigned int idx2,
58 const unsigned int idx3,
const unsigned int idx4);
59 void computeMMFFCharges(
const ROMol &mol);
61 const ROMol &mol,
unsigned int idx2,
unsigned int idx3);
65 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size() - 1);
67 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffAtomType;
70 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size() - 1);
72 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffFormalCharge;
75 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size() - 1);
77 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffPartialCharge;
84 this->d_stretchBendTerm = state;
96 PRECONDITION((mmffVariant ==
"MMFF94") || (mmffVariant ==
"MMFF94s"),
99 this->d_mmffs = ((mmffVariant ==
"MMFF94s") ?
true :
false);
102 return (this->d_mmffs ?
"MMFF94s" :
"MMFF94");
105 PRECONDITION(dielConst > 0.0,
"bad dielectric constant");
107 this->d_dielConst = dielConst;
111 this->d_dielModel = dielModel;
115 this->d_verbosity = verbosity;
121 bool getMMFFBondStretchParams(
const ROMol &mol,
const unsigned int idx1,
122 const unsigned int idx2,
unsigned int &bondType,
124 bool getMMFFAngleBendParams(
const ROMol &mol,
const unsigned int idx1,
125 const unsigned int idx2,
const unsigned int idx3,
126 unsigned int &angleType,
128 bool getMMFFStretchBendParams(
const ROMol &mol,
const unsigned int idx1,
129 const unsigned int idx2,
130 const unsigned int idx3,
131 unsigned int &stretchBendType,
135 bool getMMFFTorsionParams(
const ROMol &mol,
const unsigned int idx1,
136 const unsigned int idx2,
const unsigned int idx3,
137 const unsigned int idx4,
unsigned int &torsionType,
139 bool getMMFFOopBendParams(
const ROMol &mol,
const unsigned int idx1,
140 const unsigned int idx2,
const unsigned int idx3,
141 const unsigned int idx4,
143 bool getMMFFVdWParams(
const unsigned int idx1,
const unsigned int idx2,
147 void setMMFFHeavyAtomType(
const Atom *atom);
148 void setMMFFHydrogenType(
const Atom *atom);
149 void setMMFFFormalCharge(
const unsigned int idx,
const double fChg) {
150 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size() - 1);
152 this->d_MMFFAtomPropertiesPtrVect[idx]->mmffFormalCharge = fChg;
154 void setMMFFPartialCharge(
const unsigned int idx,
const double pChg) {
155 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size() - 1);
157 this->d_MMFFAtomPropertiesPtrVect[idx]->mmffPartialCharge = pChg;
163 bool d_stretchBendTerm;
169 boost::uint8_t d_dielModel;
171 boost::uint8_t d_verbosity;
172 std::ostream *d_oStream;
173 std::vector<MMFFAtomPropertiesPtr> d_MMFFAtomPropertiesPtrVect;
176 const unsigned int idx2,
177 const unsigned int idx3);
179 const unsigned int idx1,
180 const unsigned int idx2,
181 const unsigned int idx3,
182 const unsigned int idx4);
186 const unsigned int idx2);
188 const unsigned int numAtoms, ...);
192 const unsigned int bondType1,
193 const unsigned int bondType2);
200 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)
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)
#define URANGE_CHECK(x, hi)
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)
void setMMFFVariant(const std::string &mmffVariant)
#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
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