RDKit
Open-source cheminformatics and machine learning.
MolOps.h File Reference
#include <RDGeneral/export.h>
#include <vector>
#include <map>
#include <list>
#include <RDGeneral/BoostStartInclude.h>
#include <boost/smart_ptr.hpp>
#include <boost/dynamic_bitset.hpp>
#include <RDGeneral/BoostEndInclude.h>
#include <RDGeneral/types.h>
#include "SanitException.h"

Go to the source code of this file.

Classes

struct  RDKit::MolOps::AdjustQueryParameters
 

Namespaces

 RDKit
 Std stuff.
 
 RDKit::MolOps
 Groups a variety of molecular query and transformation operations.
 

Typedefs

typedef std::vector< double > RDKit::INVAR_VECT
 
typedef INVAR_VECT::iterator RDKit::INVAR_VECT_I
 
typedef INVAR_VECT::const_iterator RDKit::INVAR_VECT_CI
 

Functions

RDKIT_GRAPHMOL_EXPORT int RDKit::MolOps::countAtomElec (const Atom *at)
 return the number of electrons available on an atom to donate for More...
 
RDKIT_GRAPHMOL_EXPORT int RDKit::MolOps::getFormalCharge (const ROMol &mol)
 sums up all atomic formal charges and returns the result More...
 
RDKIT_GRAPHMOL_EXPORT bool RDKit::MolOps::atomHasConjugatedBond (const Atom *at)
 returns whether or not the given Atom is involved in a conjugated bond More...
 
RDKIT_GRAPHMOL_EXPORT unsigned int RDKit::MolOps::getMolFrags (const ROMol &mol, std::vector< int > &mapping)
 find fragments (disconnected components of the molecular graph) More...
 
RDKIT_GRAPHMOL_EXPORT unsigned int RDKit::MolOps::getMolFrags (const ROMol &mol, std::vector< std::vector< int >> &frags)
 find fragments (disconnected components of the molecular graph) More...
 
RDKIT_GRAPHMOL_EXPORT std::vector< boost::shared_ptr< ROMol > > RDKit::MolOps::getMolFrags (const ROMol &mol, bool sanitizeFrags=true, std::vector< int > *frags=0, std::vector< std::vector< int >> *fragsMolAtomMapping=0, bool copyConformers=true)
 splits a molecule into its component fragments More...
 
template<typename T >
RDKIT_GRAPHMOL_EXPORT std::map< T, boost::shared_ptr< ROMol > > RDKit::MolOps::getMolFragsWithQuery (const ROMol &mol, T(*query)(const ROMol &, const Atom *), bool sanitizeFrags=true, const std::vector< T > *whiteList=0, bool negateList=false)
 splits a molecule into pieces based on labels assigned using a query More...
 
RDKIT_GRAPHMOL_EXPORT double RDKit::MolOps::computeBalabanJ (const ROMol &mol, bool useBO=true, bool force=false, const std::vector< int > *bondPath=0, bool cacheIt=true)
 calculates Balaban's J index for the molecule More...
 
RDKIT_GRAPHMOL_EXPORT double RDKit::MolOps::computeBalabanJ (double *distMat, int nb, int nAts)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Ring finding and SSSR
RDKIT_GRAPHMOL_EXPORT int RDKit::MolOps::findSSSR (const ROMol &mol, std::vector< std::vector< int >> &res)
 finds a molecule's Smallest Set of Smallest Rings More...
 
RDKIT_GRAPHMOL_EXPORT int RDKit::MolOps::findSSSR (const ROMol &mol, std::vector< std::vector< int >> *res=0)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::fastFindRings (const ROMol &mol)
 use a DFS algorithm to identify ring bonds and atoms in a molecule More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::findRingFamilies (const ROMol &mol)
 
RDKIT_GRAPHMOL_EXPORT int RDKit::MolOps::symmetrizeSSSR (ROMol &mol, std::vector< std::vector< int >> &res)
 symmetrize the molecule's Smallest Set of Smallest Rings More...
 
RDKIT_GRAPHMOL_EXPORT int RDKit::MolOps::symmetrizeSSSR (ROMol &mol)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Shortest paths and other matrices
RDKIT_GRAPHMOL_EXPORT double * RDKit::MolOps::getAdjacencyMatrix (const ROMol &mol, bool useBO=false, int emptyVal=0, bool force=false, const char *propNamePrefix=0, const boost::dynamic_bitset<> *bondsToUse=0)
 returns a molecule's adjacency matrix More...
 
RDKIT_GRAPHMOL_EXPORT double * RDKit::MolOps::getDistanceMat (const ROMol &mol, bool useBO=false, bool useAtomWts=false, bool force=false, const char *propNamePrefix=0)
 Computes the molecule's topological distance matrix. More...
 
RDKIT_GRAPHMOL_EXPORT double * RDKit::MolOps::getDistanceMat (const ROMol &mol, const std::vector< int > &activeAtoms, const std::vector< const Bond * > &bonds, bool useBO=false, bool useAtomWts=false)
 Computes the molecule's topological distance matrix. More...
 
RDKIT_GRAPHMOL_EXPORT double * RDKit::MolOps::get3DDistanceMat (const ROMol &mol, int confId=-1, bool useAtomWts=false, bool force=false, const char *propNamePrefix=0)
 Computes the molecule's 3D distance matrix. More...
 
RDKIT_GRAPHMOL_EXPORT std::list< int > RDKit::MolOps::getShortestPath (const ROMol &mol, int aid1, int aid2)
 Find the shortest path between two atoms. More...
 
Stereochemistry
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::cleanupChirality (RWMol &mol)
 removes bogus chirality markers (those on non-sp3 centers): More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::assignChiralTypesFrom3D (ROMol &mol, int confId=-1, bool replaceExistingTags=true)
 Uses a conformer to assign ChiralType to a molecule's atoms. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::assignStereochemistryFrom3D (ROMol &mol, int confId=-1, bool replaceExistingTags=true)
 Uses a conformer to assign ChiralTypes to a molecule's atoms and stereo flags to its bonds. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::assignChiralTypesFromBondDirs (ROMol &mol, int confId=-1, bool replaceExistingTags=true)
 Use bond directions to assign ChiralTypes to a molecule's atoms and stereo flags to its bonds. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::detectBondStereochemistry (ROMol &mol, int confId=-1)
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::setDoubleBondNeighborDirections (ROMol &mol, const Conformer *conf=nullptr)
 Sets bond directions based on double bond stereochemistry. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::setBondStereoFromDirections (ROMol &mol)
 Assign CIS/TRANS bond stereochemistry tags based on neighboring directions. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::assignStereochemistry (ROMol &mol, bool cleanIt=false, bool force=false, bool flagPossibleStereoCenters=false)
 Assign stereochemistry tags to atoms (i.e. R/S) and bonds (i.e. Z/E) More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::removeStereochemistry (ROMol &mol)
 Removes all stereochemistry information from atoms (i.e. R/S) and bonds. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::findPotentialStereoBonds (ROMol &mol, bool cleanIt=false)
 finds bonds that could be cis/trans in a molecule and mark them as Bond::STEREOANY. More...
 
RDKIT_GRAPHMOL_EXPORT unsigned RDKit::MolOps::getNumAtomsWithDistinctProperty (const ROMol &mol, std::string prop)
 returns the number of atoms which have a particular property set More...
 
Ring finding and SSSR
RDKIT_GRAPHMOL_EXPORT int RDKit::MolOps::findSSSR (const ROMol &mol, std::vector< std::vector< int >> &res)
 finds a molecule's Smallest Set of Smallest Rings More...
 
RDKIT_GRAPHMOL_EXPORT int RDKit::MolOps::findSSSR (const ROMol &mol, std::vector< std::vector< int >> *res=0)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::fastFindRings (const ROMol &mol)
 use a DFS algorithm to identify ring bonds and atoms in a molecule More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::findRingFamilies (const ROMol &mol)
 
RDKIT_GRAPHMOL_EXPORT int RDKit::MolOps::symmetrizeSSSR (ROMol &mol, std::vector< std::vector< int >> &res)
 symmetrize the molecule's Smallest Set of Smallest Rings More...
 
RDKIT_GRAPHMOL_EXPORT int RDKit::MolOps::symmetrizeSSSR (ROMol &mol)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
Shortest paths and other matrices
RDKIT_GRAPHMOL_EXPORT double * RDKit::MolOps::getAdjacencyMatrix (const ROMol &mol, bool useBO=false, int emptyVal=0, bool force=false, const char *propNamePrefix=0, const boost::dynamic_bitset<> *bondsToUse=0)
 returns a molecule's adjacency matrix More...
 
RDKIT_GRAPHMOL_EXPORT double * RDKit::MolOps::getDistanceMat (const ROMol &mol, bool useBO=false, bool useAtomWts=false, bool force=false, const char *propNamePrefix=0)
 Computes the molecule's topological distance matrix. More...
 
RDKIT_GRAPHMOL_EXPORT double * RDKit::MolOps::getDistanceMat (const ROMol &mol, const std::vector< int > &activeAtoms, const std::vector< const Bond * > &bonds, bool useBO=false, bool useAtomWts=false)
 Computes the molecule's topological distance matrix. More...
 
RDKIT_GRAPHMOL_EXPORT double * RDKit::MolOps::get3DDistanceMat (const ROMol &mol, int confId=-1, bool useAtomWts=false, bool force=false, const char *propNamePrefix=0)
 Computes the molecule's 3D distance matrix. More...
 
RDKIT_GRAPHMOL_EXPORT std::list< int > RDKit::MolOps::getShortestPath (const ROMol &mol, int aid1, int aid2)
 Find the shortest path between two atoms. More...
 
Stereochemistry
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::cleanupChirality (RWMol &mol)
 removes bogus chirality markers (those on non-sp3 centers): More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::assignChiralTypesFrom3D (ROMol &mol, int confId=-1, bool replaceExistingTags=true)
 Uses a conformer to assign ChiralType to a molecule's atoms. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::assignStereochemistryFrom3D (ROMol &mol, int confId=-1, bool replaceExistingTags=true)
 Uses a conformer to assign ChiralTypes to a molecule's atoms and stereo flags to its bonds. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::assignChiralTypesFromBondDirs (ROMol &mol, int confId=-1, bool replaceExistingTags=true)
 Use bond directions to assign ChiralTypes to a molecule's atoms and stereo flags to its bonds. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::detectBondStereochemistry (ROMol &mol, int confId=-1)
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::setDoubleBondNeighborDirections (ROMol &mol, const Conformer *conf=nullptr)
 Sets bond directions based on double bond stereochemistry. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::setBondStereoFromDirections (ROMol &mol)
 Assign CIS/TRANS bond stereochemistry tags based on neighboring directions. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::assignStereochemistry (ROMol &mol, bool cleanIt=false, bool force=false, bool flagPossibleStereoCenters=false)
 Assign stereochemistry tags to atoms (i.e. R/S) and bonds (i.e. Z/E) More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::removeStereochemistry (ROMol &mol)
 Removes all stereochemistry information from atoms (i.e. R/S) and bonds. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::findPotentialStereoBonds (ROMol &mol, bool cleanIt=false)
 finds bonds that could be cis/trans in a molecule and mark them as Bond::STEREOANY. More...
 
RDKIT_GRAPHMOL_EXPORT unsigned RDKit::MolOps::getNumAtomsWithDistinctProperty (const ROMol &mol, std::string prop)
 returns the number of atoms which have a particular property set More...
 

Variables

const RDKIT_GRAPHMOL_EXPORT int ci_LOCAL_INF
 

Dealing with hydrogens

enum  RDKit::MolOps::AdjustQueryWhichFlags {
  RDKit::MolOps::ADJUST_IGNORENONE = 0x0, RDKit::MolOps::ADJUST_IGNORECHAINS = 0x1, RDKit::MolOps::ADJUST_IGNORERINGS = 0x4, RDKit::MolOps::ADJUST_IGNOREDUMMIES = 0x2,
  RDKit::MolOps::ADJUST_IGNORENONDUMMIES = 0x8, RDKit::MolOps::ADJUST_IGNOREMAPPED = 0x10, RDKit::MolOps::ADJUST_IGNOREALL = 0xFFFFFFF
}
 
RDKIT_GRAPHMOL_EXPORT ROMol * RDKit::MolOps::addHs (const ROMol &mol, bool explicitOnly=false, bool addCoords=false, const UINT_VECT *onlyOnAtoms=NULL, bool addResidueInfo=false)
 returns a copy of a molecule with hydrogens added in as explicit Atoms More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::addHs (RWMol &mol, bool explicitOnly=false, bool addCoords=false, const UINT_VECT *onlyOnAtoms=NULL, bool addResidueInfo=false)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
RDKIT_GRAPHMOL_EXPORT ROMol * RDKit::MolOps::removeHs (const ROMol &mol, bool implicitOnly=false, bool updateExplicitCount=false, bool sanitize=true)
 returns a copy of a molecule with hydrogens removed More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::removeHs (RWMol &mol, bool implicitOnly=false, bool updateExplicitCount=false, bool sanitize=true)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
RDKIT_GRAPHMOL_EXPORT ROMol * RDKit::MolOps::mergeQueryHs (const ROMol &mol, bool mergeUnmappedOnly=false)
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::mergeQueryHs (RWMol &mol, bool mergeUnmappedOnly=false)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
RDKIT_GRAPHMOL_EXPORT ROMol * RDKit::MolOps::adjustQueryProperties (const ROMol &mol, const AdjustQueryParameters *params=NULL)
 returns a copy of a molecule with query properties adjusted More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::adjustQueryProperties (RWMol &mol, const AdjustQueryParameters *params=NULL)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
RDKIT_GRAPHMOL_EXPORT ROMol * RDKit::MolOps::renumberAtoms (const ROMol &mol, const std::vector< unsigned int > &newOrder)
 returns a copy of a molecule with the atoms renumbered More...
 

Sanitization

enum  RDKit::MolOps::SanitizeFlags {
  RDKit::MolOps::SANITIZE_NONE = 0x0, RDKit::MolOps::SANITIZE_CLEANUP = 0x1, RDKit::MolOps::SANITIZE_PROPERTIES = 0x2, RDKit::MolOps::SANITIZE_SYMMRINGS = 0x4,
  RDKit::MolOps::SANITIZE_KEKULIZE = 0x8, RDKit::MolOps::SANITIZE_FINDRADICALS = 0x10, RDKit::MolOps::SANITIZE_SETAROMATICITY = 0x20, RDKit::MolOps::SANITIZE_SETCONJUGATION = 0x40,
  RDKit::MolOps::SANITIZE_SETHYBRIDIZATION = 0x80, RDKit::MolOps::SANITIZE_CLEANUPCHIRALITY = 0x100, RDKit::MolOps::SANITIZE_ADJUSTHS = 0x200, RDKit::MolOps::SANITIZE_ALL = 0xFFFFFFF
}
 
enum  RDKit::MolOps::AromaticityModel {
  RDKit::MolOps::AROMATICITY_DEFAULT = 0x0, RDKit::MolOps::AROMATICITY_RDKIT = 0x1, RDKit::MolOps::AROMATICITY_SIMPLE = 0x2, RDKit::MolOps::AROMATICITY_MDL = 0x4,
  RDKit::MolOps::AROMATICITY_CUSTOM = 0xFFFFFFF
}
 Possible aromaticity models. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::sanitizeMol (RWMol &mol, unsigned int &operationThatFailed, unsigned int sanitizeOps=SANITIZE_ALL)
 carries out a collection of tasks for cleaning up a molecule and More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::sanitizeMol (RWMol &mol)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
RDKIT_GRAPHMOL_EXPORT std::vector< std::unique_ptr< MolSanitizeException > > RDKit::MolOps::detectChemistryProblems (const ROMol &mol, unsigned int sanitizeOps=SANITIZE_ALL)
 Identifies chemistry problems (things that don't make chemical sense) in a molecule. More...
 
RDKIT_GRAPHMOL_EXPORT int RDKit::MolOps::setAromaticity (RWMol &mol, AromaticityModel model=AROMATICITY_DEFAULT, int(*func)(RWMol &)=NULL)
 Sets up the aromaticity for a molecule. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::cleanUp (RWMol &mol)
 Designed to be called by the sanitizer to handle special cases before. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::assignRadicals (RWMol &mol)
 Called by the sanitizer to assign radical counts to atoms. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::adjustHs (RWMol &mol)
 adjust the number of implicit and explicit Hs for special cases More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::Kekulize (RWMol &mol, bool markAtomsBonds=true, unsigned int maxBackTracks=100)
 Kekulizes the molecule. More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::setConjugation (ROMol &mol)
 flags the molecule's conjugated bonds More...
 
RDKIT_GRAPHMOL_EXPORT void RDKit::MolOps::setHybridization (ROMol &mol)
 calculates and sets the hybridization of all a molecule's Stoms More...
 

Variable Documentation

◆ ci_LOCAL_INF

const RDKIT_GRAPHMOL_EXPORT int ci_LOCAL_INF