RDKit
Open-source cheminformatics and machine learning.
Loading...
Searching...
No Matches
RDKit::Canon Namespace Reference

Namespaces

namespace  detail
 

Classes

class  AtomCompareFunctor
 
struct  bondholder
 
struct  canon_atom
 
class  ChiralAtomCompareFunctor
 
class  MolStackElem
 these are the actual elements in the molecular stack More...
 
union  MolStackUnion
 used to store components in the molecular stack More...
 
class  SpecialChiralityAtomCompareFunctor
 
class  SpecialSymmetryAtomCompareFunctor
 

Typedefs

typedef std::vector< MolStackElemMolStack
 
typedef std::tuple< int, int, Bond * > PossibleType
 used to represent possible branches from an atom
 

Enumerations

enum  AtomColors { WHITE_NODE = 0 , GREY_NODE , BLACK_NODE }
 used in traversals of the molecule More...
 
enum  MolStackTypes {
  MOL_STACK_ATOM = 0 , MOL_STACK_BOND , MOL_STACK_RING , MOL_STACK_BRANCH_OPEN ,
  MOL_STACK_BRANCH_CLOSE
}
 used to indicate types of entries in the molecular stack: More...
 

Functions

RDKIT_GRAPHMOL_EXPORT void canonicalizeFragment (ROMol &mol, int atomIdx, std::vector< AtomColors > &colors, const std::vector< unsigned int > &ranks, MolStack &molStack, const boost::dynamic_bitset<> *bondsInPlay=nullptr, const std::vector< std::string > *bondSymbols=nullptr, bool doIsomericSmiles=false, bool doRandom=false, bool doChiralInversions=true)
 constructs the canonical traversal order for a molecular fragment
 
RDKIT_GRAPHMOL_EXPORT bool chiralAtomNeedsTagInversion (const RDKit::ROMol &mol, const RDKit::Atom *atom, bool isAtomFirst, size_t numClosures)
 
RDKIT_GRAPHMOL_EXPORT void canonicalizeEnhancedStereo (ROMol &mol, const std::vector< unsigned int > *atomRanks=nullptr)
 Canonicalizes the atom stereo labels in enhanced stereo groups.
 
RDKIT_GRAPHMOL_EXPORT void updateAtomNeighborIndex (canon_atom *atoms, std::vector< bondholder > &nbrs)
 
RDKIT_GRAPHMOL_EXPORT void updateAtomNeighborNumSwaps (canon_atom *atoms, std::vector< bondholder > &nbrs, unsigned int atomIdx, std::vector< std::pair< unsigned int, unsigned int > > &result)
 
template<typename CompareFunc >
void RefinePartitions (const ROMol &mol, canon_atom *atoms, CompareFunc compar, int mode, int *order, int *count, int &activeset, int *next, int *changed, char *touchedPartitions)
 
template<typename CompareFunc >
void BreakTies (const ROMol &mol, canon_atom *atoms, CompareFunc compar, int mode, int *order, int *count, int &activeset, int *next, int *changed, char *touchedPartitions)
 
RDKIT_GRAPHMOL_EXPORT void CreateSinglePartition (unsigned int nAtoms, int *order, int *count, canon_atom *atoms)
 
RDKIT_GRAPHMOL_EXPORT void ActivatePartitions (unsigned int nAtoms, int *order, int *count, int &activeset, int *next, int *changed)
 
RDKIT_GRAPHMOL_EXPORT void rankMolAtoms (const ROMol &mol, std::vector< unsigned int > &res, bool breakTies=true, bool includeChirality=true, bool includeIsotopes=true, bool includeAtomMaps=true)
 
RDKIT_GRAPHMOL_EXPORT void rankFragmentAtoms (const ROMol &mol, std::vector< unsigned int > &res, const boost::dynamic_bitset<> &atomsInPlay, const boost::dynamic_bitset<> &bondsInPlay, const std::vector< std::string > *atomSymbols, const std::vector< std::string > *bondSymbols, bool breakTies, bool includeChirality, bool includeIsotope, bool includeAtomMaps)
 
void rankFragmentAtoms (const ROMol &mol, std::vector< unsigned int > &res, const boost::dynamic_bitset<> &atomsInPlay, const boost::dynamic_bitset<> &bondsInPlay, const std::vector< std::string > *atomSymbols=nullptr, bool breakTies=true, bool includeChirality=true, bool includeIsotopes=true, bool includeAtomMaps=true)
 
RDKIT_GRAPHMOL_EXPORT void chiralRankMolAtoms (const ROMol &mol, std::vector< unsigned int > &res)
 
RDKIT_GRAPHMOL_EXPORT void initCanonAtoms (const ROMol &mol, std::vector< Canon::canon_atom > &atoms, bool includeChirality=true)
 

Variables

const int MAX_NATOMS = 5000
 used in the canonical traversal code
 
const int MAX_CYCLES = 1000
 used in the canonical traversal code
 
const int MAX_BONDTYPE = 32
 used in the canonical traversal code
 
const unsigned int ATNUM_CLASS_OFFSET = 10000
 

Typedef Documentation

◆ MolStack

Definition at line 95 of file Canon.h.

◆ PossibleType

used to represent possible branches from an atom

Definition at line 98 of file Canon.h.

Enumeration Type Documentation

◆ AtomColors

used in traversals of the molecule

Enumerator
WHITE_NODE 

not visited

GREY_NODE 

visited, but not finished

BLACK_NODE 

visited and finished

Definition at line 30 of file Canon.h.

◆ MolStackTypes

used to indicate types of entries in the molecular stack:

Enumerator
MOL_STACK_ATOM 

an Atom

MOL_STACK_BOND 

a Bond

MOL_STACK_RING 

a ring closure

MOL_STACK_BRANCH_OPEN 

beginning of a branch

MOL_STACK_BRANCH_CLOSE 

end of a branch

Definition at line 37 of file Canon.h.

Function Documentation

◆ ActivatePartitions()

RDKIT_GRAPHMOL_EXPORT void RDKit::Canon::ActivatePartitions ( unsigned int  nAtoms,
int order,
int count,
int activeset,
int next,
int changed 
)

◆ BreakTies()

template<typename CompareFunc >
void RDKit::Canon::BreakTies ( const ROMol mol,
canon_atom atoms,
CompareFunc  compar,
int  mode,
int order,
int count,
int activeset,
int next,
int changed,
char touchedPartitions 
)

◆ canonicalizeEnhancedStereo()

RDKIT_GRAPHMOL_EXPORT void RDKit::Canon::canonicalizeEnhancedStereo ( ROMol mol,
const std::vector< unsigned int > *  atomRanks = nullptr 
)

Canonicalizes the atom stereo labels in enhanced stereo groups.

For example, after calling this function the chiral centers in the molecules C[C@H](F)Cl |&1:1| and C[C@@H](F)Cl |&1:1| will have the same chiral tags.

◆ canonicalizeFragment()

RDKIT_GRAPHMOL_EXPORT void RDKit::Canon::canonicalizeFragment ( ROMol mol,
int  atomIdx,
std::vector< AtomColors > &  colors,
const std::vector< unsigned int > &  ranks,
MolStack molStack,
const boost::dynamic_bitset<> *  bondsInPlay = nullptr,
const std::vector< std::string > *  bondSymbols = nullptr,
bool  doIsomericSmiles = false,
bool  doRandom = false,
bool  doChiralInversions = true 
)

constructs the canonical traversal order for a molecular fragment

Parameters
molthe ROMol we're working on
atomIdxthe index of the atom to start the traversal from
colorsthe traversal status of each atom in mol
ranksthe assigned rank of each atom in mol
molStackthe current traversal stack (used to return the results)

Notes

  • mol will, in general, be modified by this operation as bond directions and the like are changed to fit the canonical traversal order

◆ chiralAtomNeedsTagInversion()

RDKIT_GRAPHMOL_EXPORT bool RDKit::Canon::chiralAtomNeedsTagInversion ( const RDKit::ROMol mol,
const RDKit::Atom atom,
bool  isAtomFirst,
size_t  numClosures 
)

Check if a chiral atom needs to have its tag flipped after reading or before writing SMILES

◆ chiralRankMolAtoms()

RDKIT_GRAPHMOL_EXPORT void RDKit::Canon::chiralRankMolAtoms ( const ROMol mol,
std::vector< unsigned int > &  res 
)

◆ CreateSinglePartition()

RDKIT_GRAPHMOL_EXPORT void RDKit::Canon::CreateSinglePartition ( unsigned int  nAtoms,
int order,
int count,
canon_atom atoms 
)

◆ initCanonAtoms()

RDKIT_GRAPHMOL_EXPORT void RDKit::Canon::initCanonAtoms ( const ROMol mol,
std::vector< Canon::canon_atom > &  atoms,
bool  includeChirality = true 
)

◆ rankFragmentAtoms() [1/2]

RDKIT_GRAPHMOL_EXPORT void RDKit::Canon::rankFragmentAtoms ( const ROMol mol,
std::vector< unsigned int > &  res,
const boost::dynamic_bitset<> &  atomsInPlay,
const boost::dynamic_bitset<> &  bondsInPlay,
const std::vector< std::string > *  atomSymbols,
const std::vector< std::string > *  bondSymbols,
bool  breakTies,
bool  includeChirality,
bool  includeIsotope,
bool  includeAtomMaps 
)

Referenced by rankFragmentAtoms().

◆ rankFragmentAtoms() [2/2]

void RDKit::Canon::rankFragmentAtoms ( const ROMol mol,
std::vector< unsigned int > &  res,
const boost::dynamic_bitset<> &  atomsInPlay,
const boost::dynamic_bitset<> &  bondsInPlay,
const std::vector< std::string > *  atomSymbols = nullptr,
bool  breakTies = true,
bool  includeChirality = true,
bool  includeIsotopes = true,
bool  includeAtomMaps = true 
)
inline

Definition at line 820 of file new_canon.h.

References rankFragmentAtoms(), and RDKit::rdvalue_is().

◆ rankMolAtoms()

RDKIT_GRAPHMOL_EXPORT void RDKit::Canon::rankMolAtoms ( const ROMol mol,
std::vector< unsigned int > &  res,
bool  breakTies = true,
bool  includeChirality = true,
bool  includeIsotopes = true,
bool  includeAtomMaps = true 
)

◆ RefinePartitions()

template<typename CompareFunc >
void RDKit::Canon::RefinePartitions ( const ROMol mol,
canon_atom atoms,
CompareFunc  compar,
int  mode,
int order,
int count,
int activeset,
int next,
int changed,
char touchedPartitions 
)

◆ updateAtomNeighborIndex()

◆ updateAtomNeighborNumSwaps()

RDKIT_GRAPHMOL_EXPORT void RDKit::Canon::updateAtomNeighborNumSwaps ( canon_atom atoms,
std::vector< bondholder > &  nbrs,
unsigned int  atomIdx,
std::vector< std::pair< unsigned int, unsigned int > > &  result 
)

Variable Documentation

◆ ATNUM_CLASS_OFFSET

const unsigned int RDKit::Canon::ATNUM_CLASS_OFFSET = 10000

Definition at line 522 of file new_canon.h.

Referenced by RDKit::Canon::ChiralAtomCompareFunctor::operator()().

◆ MAX_BONDTYPE

const int RDKit::Canon::MAX_BONDTYPE = 32

used in the canonical traversal code

Definition at line 27 of file Canon.h.

◆ MAX_CYCLES

const int RDKit::Canon::MAX_CYCLES = 1000

used in the canonical traversal code

Definition at line 26 of file Canon.h.

◆ MAX_NATOMS

const int RDKit::Canon::MAX_NATOMS = 5000

used in the canonical traversal code

Definition at line 25 of file Canon.h.