13#ifndef _RD_MMFFATOMTYPER_H__
14#define _RD_MMFFATOMTYPER_H__
55class RingMembershipSize;
80 std::ostream &oStream = std::cout);
84 const unsigned int idx2,
85 const unsigned int idx3)
const;
87 const ROMol &mol,
const unsigned int idx1,
const unsigned int idx2,
88 const unsigned int idx3,
const unsigned int idx4)
const;
91 const ROMol &mol,
unsigned int idx2,
unsigned int idx3)
const;
93 const ROMol &mol,
const Bond *bond)
const;
95 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
97 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffAtomType;
100 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
102 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffFormalCharge;
105 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
107 return this->d_MMFFAtomPropertiesPtrVect[idx]->mmffPartialCharge;
114 this->d_stretchBendTerm = state;
126 PRECONDITION((mmffVariant ==
"MMFF94") || (mmffVariant ==
"MMFF94s"),
129 this->d_mmffs = mmffVariant ==
"MMFF94s";
132 return (this->d_mmffs ?
"MMFF94s" :
"MMFF94");
135 PRECONDITION(dielConst > 0.0,
"bad dielectric constant");
137 this->d_dielConst = dielConst;
141 this->d_dielModel = dielModel;
145 this->d_verbosity = verbosity;
152 const unsigned int idx2,
unsigned int &bondType,
153 MMFFBond &mmffBondStretchParams)
const;
155 const unsigned int idx2,
const unsigned int idx3,
156 unsigned int &angleType,
159 const unsigned int idx2,
160 const unsigned int idx3,
161 unsigned int &stretchBendType,
166 const unsigned int idx2,
const unsigned int idx3,
167 const unsigned int idx4,
unsigned int &torsionType,
168 MMFFTor &mmffTorsionParams)
const;
170 const unsigned int idx2,
const unsigned int idx3,
171 const unsigned int idx4,
172 MMFFOop &mmffOopBendParams)
const;
177 void setMMFFHeavyAtomType(
const RingMembershipSize &rmSize,
const Atom *atom);
178 void setMMFFHydrogenType(
const Atom *atom);
179 void setMMFFFormalCharge(
const unsigned int idx,
const double fChg) {
180 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
182 this->d_MMFFAtomPropertiesPtrVect[idx]->mmffFormalCharge = fChg;
184 void setMMFFPartialCharge(
const unsigned int idx,
const double pChg) {
185 URANGE_CHECK(idx, this->d_MMFFAtomPropertiesPtrVect.size());
187 this->d_MMFFAtomPropertiesPtrVect[idx]->mmffPartialCharge = pChg;
193 bool d_stretchBendTerm;
199 std::uint8_t d_dielModel;
201 std::uint8_t d_verbosity;
202 std::ostream *d_oStream;
203 std::vector<MMFFAtomPropertiesPtr> d_MMFFAtomPropertiesPtrVect;
206 const ROMol &mol,
const unsigned int idx1,
const unsigned int idx2,
207 const unsigned int idx3);
209 const ROMol &mol,
const unsigned int idx1,
const unsigned int idx2,
210 const unsigned int idx3,
const unsigned int idx4);
214 const Atom *atom,
const unsigned int ringSize);
217 const ROMol &mol,
const unsigned int idx1,
const unsigned int idx2);
219 const ROMol &mol,
const unsigned int ringSize,
const unsigned int numAtoms,
223 const unsigned int angleType,
const unsigned int bondType1,
224 const unsigned int bondType2);
226 const int atomicNum);
233 unsigned int idx2,
unsigned int idx3);
#define URANGE_CHECK(x, hi)
#define PRECONDITION(expr, mess)
class to store MMFF parameters for angle bending
class to store MMFF parameters for bond stretching
class to store MMFF parameters for out-of-plane bending
class to store MMFF Properties
class to store MMFF parameters for stretch-bending
class to store MMFF parameters for torsions
The class for representing atoms.
class for representing a bond
~MMFFAtomProperties()=default
std::uint8_t mmffAtomType
void setMMFFStretchBendTerm(const bool state)
bool getMMFFVdWParams(const unsigned int idx1, const unsigned int idx2, MMFFVdWRijstarEps &mmffVdWParams) const
void setMMFFOopTerm(const bool state)
bool getMMFFStretchBendTerm() const
double getMMFFFormalCharge(const unsigned int idx) const
std::ostream & getMMFFOStream()
bool getMMFFVdWTerm() const
void setMMFFVariant(const std::string &mmffVariant)
unsigned int getMMFFAngleType(const ROMol &mol, const unsigned int idx1, const unsigned int idx2, const unsigned int idx3) const
void setMMFFDielectricModel(std::uint8_t dielModel)
unsigned int getMMFFBondType(const Bond *bond) const
std::uint8_t getMMFFAtomType(const unsigned int idx) const
const std::pair< unsigned int, unsigned int > getMMFFTorsionType(const ROMol &mol, const unsigned int idx1, const unsigned int idx2, const unsigned int idx3, const unsigned int idx4) const
double getMMFFDielectricConstant() const
void setMMFFBondTerm(const bool state)
void setMMFFVerbosity(std::uint8_t verbosity)
bool getMMFFBondTerm() const
void computeMMFFCharges(const ROMol &mol)
void setMMFFTorsionTerm(const bool state)
void setMMFFEleTerm(const bool state)
double getMMFFPartialCharge(const unsigned int idx) const
std::uint8_t getMMFFVerbosity() const
void setMMFFDielectricConstant(const double dielConst)
bool getMMFFBondStretchParams(const ROMol &mol, const unsigned int idx1, const unsigned int idx2, unsigned int &bondType, MMFFBond &mmffBondStretchParams) const
void setMMFFVdWTerm(const bool state)
bool getMMFFAngleTerm() const
bool getMMFFTorsionTerm() const
bool getMMFFOopTerm() const
std::uint8_t getMMFFDielectricModel() const
const std::string getMMFFVariant() const
bool getMMFFOopBendParams(const ROMol &mol, const unsigned int idx1, const unsigned int idx2, const unsigned int idx3, const unsigned int idx4, MMFFOop &mmffOopBendParams) const
const ForceFields::MMFF::MMFFBond * getMMFFBondStretchEmpiricalRuleParams(const ROMol &mol, const Bond *bond) const
bool getMMFFEleTerm() const
const ForceFields::MMFF::MMFFTor * getMMFFTorsionEmpiricalRuleParams(const ROMol &mol, unsigned int idx2, unsigned int idx3) const
bool getMMFFStretchBendParams(const ROMol &mol, const unsigned int idx1, const unsigned int idx2, const unsigned int idx3, unsigned int &stretchBendType, MMFFStbn &mmffStretchBendParams, MMFFBond mmffBondStretchParams[2], MMFFAngle &mmffAngleBendParams) const
void setMMFFAngleTerm(const bool state)
~MMFFMolProperties()=default
MMFFMolProperties(ROMol &mol, const std::string &mmffVariant="MMFF94", std::uint8_t verbosity=MMFF_VERBOSITY_NONE, std::ostream &oStream=std::cout)
void setMMFFOStream(std::ostream *oStream)
bool getMMFFAngleBendParams(const ROMol &mol, const unsigned int idx1, const unsigned int idx2, const unsigned int idx3, unsigned int &angleType, MMFFAngle &mmffAngleBendParams) const
bool getMMFFTorsionParams(const ROMol &mol, const unsigned int idx1, const unsigned int idx2, const unsigned int idx3, const unsigned int idx4, unsigned int &torsionType, MMFFTor &mmffTorsionParams) const
RWMol is a molecule class that is intended to be edited.
#define RDKIT_FORCEFIELDHELPERS_EXPORT
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFTorCollection * getMMFFTor(const bool isMMFFs)
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFOopCollection * getMMFFOop(const bool isMMFFs)
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFDefCollection * getMMFFDef()
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFAromCollection * getMMFFArom()
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFPBCICollection * getMMFFPBCI()
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFAngleCollection * getMMFFAngle()
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFHerschbachLaurieCollection * getMMFFHerschbachLaurie()
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFVdWCollection * getMMFFVdW()
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFPropCollection * getMMFFProp()
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFStbnCollection * getMMFFStbn()
RDKIT_FORCEFIELDHELPERS_EXPORT const ForceFields::MMFF::MMFFDfsbCollection * getMMFFDfsb()
RDKIT_FORCEFIELDHELPERS_EXPORT unsigned int getPeriodicTableRow(const int atomicNum)
RDKIT_FORCEFIELDHELPERS_EXPORT unsigned int sanitizeMMFFMol(RWMol &mol)
RDKIT_FORCEFIELDHELPERS_EXPORT bool areAtomsInSameAromaticRing(const ROMol &mol, const unsigned int idx1, const unsigned int idx2)
boost::shared_ptr< MMFFAtomProperties > MMFFAtomPropertiesPtr
RDKIT_FORCEFIELDHELPERS_EXPORT unsigned int getMMFFStretchBendType(const unsigned int angleType, const unsigned int bondType1, const unsigned int bondType2)
RDKIT_FORCEFIELDHELPERS_EXPORT bool isRingAromatic(const ROMol &mol, const INT_VECT &ringIndxVect)
RDKIT_FORCEFIELDHELPERS_EXPORT bool isAtomInAromaticRingOfSize(const Atom *atom, const unsigned int ringSize)
RDKIT_FORCEFIELDHELPERS_EXPORT unsigned int isAngleInRingOfSize3or4(const ROMol &mol, const unsigned int idx1, const unsigned int idx2, const unsigned int idx3)
RDKIT_FORCEFIELDHELPERS_EXPORT bool areAtomsInSameRingOfSize(const ROMol &mol, const unsigned int ringSize, const unsigned int numAtoms,...)
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)
RDKIT_FORCEFIELDHELPERS_EXPORT bool isAtomNOxide(const Atom *atom)
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)
std::vector< int > INT_VECT