13 #ifndef _RD_MMFFATOMTYPER_H__ 14 #define _RD_MMFFATOMTYPER_H__ 20 #include <boost/cstdint.hpp> 29 class RingMembershipSize;
34 : mmffAtomType(0), mmffFormalCharge(0.0), mmffPartialCharge(0.0){};
36 boost::uint8_t mmffAtomType;
52 std::ostream &oStream = std::cout);
54 unsigned int getMMFFBondType(
const Bond *bond);
55 unsigned int getMMFFAngleType(
const ROMol &mol,
const unsigned int idx1,
56 const unsigned int idx2,
57 const unsigned int idx3);
58 const std::pair<unsigned int, unsigned int> getMMFFTorsionType(
59 const ROMol &mol,
const unsigned int idx1,
const unsigned int idx2,
60 const unsigned int idx3,
const unsigned int idx4);
61 void computeMMFFCharges(
const ROMol &mol);
63 const ROMol &mol,
unsigned int idx2,
unsigned int idx3);
67 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
69 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffAtomType;
72 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
74 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffFormalCharge;
77 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
79 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffPartialCharge;
86 this->d_stretchBendTerm = state;
98 PRECONDITION((mmffVariant ==
"MMFF94") || (mmffVariant ==
"MMFF94s"),
101 this->d_mmffs = ((mmffVariant ==
"MMFF94s") ?
true :
false);
104 return (this->d_mmffs ?
"MMFF94s" :
"MMFF94");
107 PRECONDITION(dielConst > 0.0,
"bad dielectric constant");
109 this->d_dielConst = dielConst;
113 this->d_dielModel = dielModel;
117 this->d_verbosity = verbosity;
123 bool getMMFFBondStretchParams(
const ROMol &mol,
const unsigned int idx1,
124 const unsigned int idx2,
unsigned int &bondType,
126 bool getMMFFAngleBendParams(
const ROMol &mol,
const unsigned int idx1,
127 const unsigned int idx2,
const unsigned int idx3,
128 unsigned int &angleType,
130 bool getMMFFStretchBendParams(
const ROMol &mol,
const unsigned int idx1,
131 const unsigned int idx2,
132 const unsigned int idx3,
133 unsigned int &stretchBendType,
137 bool getMMFFTorsionParams(
const ROMol &mol,
const unsigned int idx1,
138 const unsigned int idx2,
const unsigned int idx3,
139 const unsigned int idx4,
unsigned int &torsionType,
141 bool getMMFFOopBendParams(
const ROMol &mol,
const unsigned int idx1,
142 const unsigned int idx2,
const unsigned int idx3,
143 const unsigned int idx4,
145 bool getMMFFVdWParams(
const unsigned int idx1,
const unsigned int idx2,
149 void setMMFFHeavyAtomType(
const RingMembershipSize &rmSize,
const Atom *atom);
150 void setMMFFHydrogenType(
const Atom *atom);
151 void setMMFFFormalCharge(
const unsigned int idx,
const double fChg) {
152 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
154 this->d_MMFFAtomPropertiesPtrVect[idx]->mmffFormalCharge = fChg;
156 void setMMFFPartialCharge(
const unsigned int idx,
const double pChg) {
157 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
159 this->d_MMFFAtomPropertiesPtrVect[idx]->mmffPartialCharge = pChg;
165 bool d_stretchBendTerm;
171 boost::uint8_t d_dielModel;
173 boost::uint8_t d_verbosity;
174 std::ostream *d_oStream;
175 std::vector<MMFFAtomPropertiesPtr> d_MMFFAtomPropertiesPtrVect;
178 const unsigned int idx2,
179 const unsigned int idx3);
181 const unsigned int idx1,
182 const unsigned int idx2,
183 const unsigned int idx3,
184 const unsigned int idx4);
189 const unsigned int idx2);
191 const unsigned int numAtoms, ...);
195 const unsigned int bondType1,
196 const unsigned int bondType2);
203 unsigned int idx2,
unsigned int idx3);
boost::uint8_t getMMFFVerbosity()
bool getMMFFStretchBendTerm()
void setMMFFAngleTerm(const bool state)
const std::string getMMFFVariant()
void setMMFFVdWTerm(const bool state)
RDKIT_FORCEFIELDHELPERS_EXPORT bool isAtomNOxide(const Atom *atom)
class to store MMFF parameters for angle bending
RDKIT_FORCEFIELDHELPERS_EXPORT bool areAtomsInSameRingOfSize(const ROMol &mol, const unsigned int ringSize, const unsigned int numAtoms,...)
boost::shared_ptr< MMFFAtomProperties > MMFFAtomPropertiesPtr
void setMMFFDielectricConstant(const double dielConst)
bool getMMFFTorsionTerm()
RWMol is a molecule class that is intended to be edited.
RDKIT_FORCEFIELDHELPERS_EXPORT bool isAtomInAromaticRingOfSize(const Atom *atom, const unsigned int ringSize)
std::ostream & getMMFFOStream()
RDKIT_FORCEFIELDHELPERS_EXPORT unsigned int isAngleInRingOfSize3or4(const ROMol &mol, const unsigned int idx1, const unsigned int idx2, const unsigned int idx3)
RDKIT_FORCEFIELDHELPERS_EXPORT unsigned int getPeriodicTableRow(const int atomicNum)
void setMMFFBondTerm(const bool state)
RDKIT_FORCEFIELDHELPERS_EXPORT bool isRingAromatic(const ROMol &mol, const INT_VECT &ringIndxVect)
void setMMFFTorsionTerm(const bool state)
std::vector< int > INT_VECT
class to store MMFF parameters for stretch-bending
RDKIT_FORCEFIELDHELPERS_EXPORT 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 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)
#define URANGE_CHECK(x, hi)
class for representing a bond
void setMMFFEleTerm(const bool state)
boost::uint8_t getMMFFAtomType(const unsigned int idx)
void setMMFFOStream(std::ostream *oStream)
#define RDKIT_FORCEFIELDHELPERS_EXPORT
RDKIT_FORCEFIELDHELPERS_EXPORT bool areAtomsInSameAromaticRing(const ROMol &mol, const unsigned int idx1, const unsigned int idx2)
void setMMFFVariant(const std::string &mmffVariant)
#define PRECONDITION(expr, mess)
RDKIT_FORCEFIELDHELPERS_EXPORT void setMMFFAromaticity(RWMol &mol)
RDKIT_FORCEFIELDHELPERS_EXPORT unsigned int sanitizeMMFFMol(RWMol &mol)
class to store MMFF parameters for torsions
RDKIT_FORCEFIELDHELPERS_EXPORT unsigned int isTorsionInRingOfSize4or5(const ROMol &mol, const unsigned int idx1, const unsigned int idx2, const unsigned int idx3, const unsigned int idx4)
double getMMFFDielectricConstant()
void setMMFFDielectricModel(boost::uint8_t dielModel)
The class for representing atoms.
RDKIT_FORCEFIELDHELPERS_EXPORT unsigned int getMMFFStretchBendType(const unsigned int angleType, const unsigned int bondType1, const unsigned int bondType2)
boost::uint8_t getMMFFDielectricModel()
class to store MMFF Properties