13 #ifndef _RD_MMFFATOMTYPER_H__ 14 #define _RD_MMFFATOMTYPER_H__ 30 namespace DefaultParameters {
45 class RingMembershipSize;
50 : mmffAtomType(0), mmffFormalCharge(0.0), mmffPartialCharge(0.0){};
52 std::uint8_t mmffAtomType;
68 std::ostream &oStream = std::cout);
70 unsigned int getMMFFBondType(
const Bond *bond);
71 unsigned int getMMFFAngleType(
const ROMol &mol,
const unsigned int idx1,
72 const unsigned int idx2,
73 const unsigned int idx3);
74 const std::pair<unsigned int, unsigned int> getMMFFTorsionType(
75 const ROMol &mol,
const unsigned int idx1,
const unsigned int idx2,
76 const unsigned int idx3,
const unsigned int idx4);
77 void computeMMFFCharges(
const ROMol &mol);
79 const ROMol &mol,
unsigned int idx2,
unsigned int idx3);
83 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
85 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffAtomType;
88 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
90 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffFormalCharge;
93 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
95 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffPartialCharge;
102 this->d_stretchBendTerm = state;
114 PRECONDITION((mmffVariant ==
"MMFF94") || (mmffVariant ==
"MMFF94s"),
117 this->d_mmffs = ((mmffVariant ==
"MMFF94s") ?
true :
false);
120 return (this->d_mmffs ?
"MMFF94s" :
"MMFF94");
123 PRECONDITION(dielConst > 0.0,
"bad dielectric constant");
125 this->d_dielConst = dielConst;
129 this->d_dielModel = dielModel;
133 this->d_verbosity = verbosity;
139 bool getMMFFBondStretchParams(
const ROMol &mol,
const unsigned int idx1,
140 const unsigned int idx2,
unsigned int &bondType,
142 bool getMMFFAngleBendParams(
const ROMol &mol,
143 const unsigned int idx1,
144 const unsigned int idx2,
const unsigned int idx3,
145 unsigned int &angleType,
147 bool getMMFFStretchBendParams(
const ROMol &mol,
const unsigned int idx1,
148 const unsigned int idx2,
149 const unsigned int idx3,
150 unsigned int &stretchBendType,
154 bool getMMFFTorsionParams(
const ROMol &mol,
const unsigned int idx1,
155 const unsigned int idx2,
const unsigned int idx3,
156 const unsigned int idx4,
unsigned int &torsionType,
158 bool getMMFFOopBendParams(
const ROMol &mol,
const unsigned int idx1,
159 const unsigned int idx2,
const unsigned int idx3,
160 const unsigned int idx4,
162 bool getMMFFVdWParams(
const unsigned int idx1,
const unsigned int idx2,
166 void setMMFFHeavyAtomType(
const RingMembershipSize &rmSize,
const Atom *atom);
167 void setMMFFHydrogenType(
const Atom *atom);
168 void setMMFFFormalCharge(
const unsigned int idx,
const double fChg) {
169 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
171 this->d_MMFFAtomPropertiesPtrVect[idx]->mmffFormalCharge = fChg;
173 void setMMFFPartialCharge(
const unsigned int idx,
const double pChg) {
174 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
176 this->d_MMFFAtomPropertiesPtrVect[idx]->mmffPartialCharge = pChg;
182 bool d_stretchBendTerm;
188 std::uint8_t d_dielModel;
190 std::uint8_t d_verbosity;
191 std::ostream *d_oStream;
192 std::vector<MMFFAtomPropertiesPtr> d_MMFFAtomPropertiesPtrVect;
195 const ROMol &mol,
const unsigned int idx1,
const unsigned int idx2,
196 const unsigned int idx3);
198 const ROMol &mol,
const unsigned int idx1,
const unsigned int idx2,
199 const unsigned int idx3,
const unsigned int idx4);
203 const Atom *atom,
const unsigned int ringSize);
206 const ROMol &mol,
const unsigned int idx1,
const unsigned int idx2);
208 const ROMol &mol,
const unsigned int ringSize,
const unsigned int numAtoms,
213 const unsigned int angleType,
const unsigned int bondType1,
214 const unsigned int bondType2);
216 const int atomicNum);
223 unsigned int idx2,
unsigned int idx3);
bool getMMFFStretchBendTerm()
void setMMFFAngleTerm(const bool state)
const std::string getMMFFVariant()
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFOopCollection * getMMFFOop(const bool isMMFFs)
void setMMFFVdWTerm(const bool state)
RDKIT_FORCEFIELDHELPERS_EXPORT bool isAtomNOxide(const Atom *atom)
class to store MMFF parameters for angle bending
void setMMFFDielectricModel(std::uint8_t dielModel)
RDKIT_FORCEFIELDHELPERS_EXPORT bool areAtomsInSameRingOfSize(const ROMol &mol, const unsigned int ringSize, const unsigned int numAtoms,...)
void setMMFFVerbosity(std::uint8_t verbosity)
boost::shared_ptr< MMFFAtomProperties > MMFFAtomPropertiesPtr
void setMMFFDielectricConstant(const double dielConst)
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFVdWCollection * getMMFFVdW()
bool getMMFFTorsionTerm()
RWMol is a molecule class that is intended to be edited.
std::uint8_t getMMFFDielectricModel()
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)
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFDfsbCollection * getMMFFDfsb()
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFHerschbachLaurieCollection * getMMFFHerschbachLaurie()
void setMMFFBondTerm(const bool state)
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFTorCollection * getMMFFTor(const bool isMMFFs)
RDKIT_FORCEFIELDHELPERS_EXPORT bool isRingAromatic(const ROMol &mol, const INT_VECT &ringIndxVect)
void setMMFFTorsionTerm(const bool state)
std::uint8_t getMMFFVerbosity()
std::uint8_t getMMFFAtomType(const unsigned int idx)
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 setMMFFOopTerm(const bool state)
double getMMFFPartialCharge(const unsigned int idx)
#define URANGE_CHECK(x, hi)
class for representing a bond
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFAngleCollection * getMMFFAngle()
void setMMFFEleTerm(const bool state)
void setMMFFOStream(std::ostream *oStream)
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFPropCollection * getMMFFProp()
#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)
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFAromCollection * getMMFFArom()
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFStbnCollection * getMMFFStbn()
double getMMFFDielectricConstant()
The class for representing atoms.
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFPBCICollection * getMMFFPBCI()
RDKIT_FORCEFIELDHELPERS_EXPORT unsigned int getMMFFStretchBendType(const unsigned int angleType, const unsigned int bondType1, const unsigned int bondType2)
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFDefCollection * getMMFFDef()
class to store MMFF Properties