12 #ifndef _RD_MMFFATOMTYPER_H__ 13 #define _RD_MMFFATOMTYPER_H__ 19 #include <boost/cstdint.hpp> 28 class RingMembershipSize;
33 : mmffAtomType(0), mmffFormalCharge(0.0), mmffPartialCharge(0.0){};
35 boost::uint8_t mmffAtomType;
51 std::ostream &oStream = std::cout);
53 unsigned int getMMFFBondType(
const Bond *bond);
54 unsigned int getMMFFAngleType(
const ROMol &mol,
const unsigned int idx1,
55 const unsigned int idx2,
56 const unsigned int idx3);
57 const std::pair<unsigned int, unsigned int> getMMFFTorsionType(
58 const ROMol &mol,
const unsigned int idx1,
const unsigned int idx2,
59 const unsigned int idx3,
const unsigned int idx4);
60 void computeMMFFCharges(
const ROMol &mol);
62 const ROMol &mol,
unsigned int idx2,
unsigned int idx3);
66 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
68 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffAtomType;
71 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
73 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffFormalCharge;
76 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
78 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffPartialCharge;
85 this->d_stretchBendTerm = state;
97 PRECONDITION((mmffVariant ==
"MMFF94") || (mmffVariant ==
"MMFF94s"),
100 this->d_mmffs = ((mmffVariant ==
"MMFF94s") ?
true :
false);
103 return (this->d_mmffs ?
"MMFF94s" :
"MMFF94");
106 PRECONDITION(dielConst > 0.0,
"bad dielectric constant");
108 this->d_dielConst = dielConst;
112 this->d_dielModel = dielModel;
116 this->d_verbosity = verbosity;
122 bool getMMFFBondStretchParams(
const ROMol &mol,
const unsigned int idx1,
123 const unsigned int idx2,
unsigned int &bondType,
125 bool getMMFFAngleBendParams(
const ROMol &mol,
const unsigned int idx1,
126 const unsigned int idx2,
const unsigned int idx3,
127 unsigned int &angleType,
129 bool getMMFFStretchBendParams(
const ROMol &mol,
const unsigned int idx1,
130 const unsigned int idx2,
131 const unsigned int idx3,
132 unsigned int &stretchBendType,
136 bool getMMFFTorsionParams(
const ROMol &mol,
const unsigned int idx1,
137 const unsigned int idx2,
const unsigned int idx3,
138 const unsigned int idx4,
unsigned int &torsionType,
140 bool getMMFFOopBendParams(
const ROMol &mol,
const unsigned int idx1,
141 const unsigned int idx2,
const unsigned int idx3,
142 const unsigned int idx4,
144 bool getMMFFVdWParams(
const unsigned int idx1,
const unsigned int idx2,
148 void setMMFFHeavyAtomType(
const RingMembershipSize &rmSize,
const Atom *atom);
149 void setMMFFHydrogenType(
const Atom *atom);
150 void setMMFFFormalCharge(
const unsigned int idx,
const double fChg) {
151 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
153 this->d_MMFFAtomPropertiesPtrVect[idx]->mmffFormalCharge = fChg;
155 void setMMFFPartialCharge(
const unsigned int idx,
const double pChg) {
156 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
158 this->d_MMFFAtomPropertiesPtrVect[idx]->mmffPartialCharge = pChg;
164 bool d_stretchBendTerm;
170 boost::uint8_t d_dielModel;
172 boost::uint8_t d_verbosity;
173 std::ostream *d_oStream;
174 std::vector<MMFFAtomPropertiesPtr> d_MMFFAtomPropertiesPtrVect;
177 const unsigned int idx2,
178 const unsigned int idx3);
180 const unsigned int idx1,
181 const unsigned int idx2,
182 const unsigned int idx3,
183 const unsigned int idx4);
188 const unsigned int idx2);
190 const unsigned int numAtoms, ...);
194 const unsigned int bondType1,
195 const unsigned int bondType2);
202 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)
std::vector< int > INT_VECT
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
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
bool isRingAromatic(const ROMol &mol, const INT_VECT &ringIndxVect)
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