RDKit::RWMol Class Reference

RWMol is a molecule class that is intended to be edited. More...

`#include <RWMol.h>`

Inheritance diagram for RDKit::RWMol:

## Public Member Functions

| RWMol ()
| RWMol (const ROMol &other, bool quickCopy=false, int confId=-1)
| copy constructor with a twist More...
| RWMol (const RWMol &other)
RWMol & | operator= (const RWMol &)
void | insertMol (const ROMol &other)
| insert the atoms and bonds from `other` into this molecule More...
Atoms
unsigned int | addAtom (bool updateLabel=true)
| adds an empty Atom to our collection More...
unsigned int | addAtom (Atom *atom, bool updateLabel=true, bool takeOwnership=false)
| adds an Atom to our collection More...
void | replaceAtom (unsigned int idx, Atom *atom, bool updateLabel=false, bool preserveProps=false)
| adds an Atom to our collection More...
Atom * | getLastAtom ()
| returns a pointer to the highest-numbered Atom More...
Atom * | getActiveAtom ()
| returns a pointer to the "active" Atom More...
void | setActiveAtom (Atom *atom)
| sets our `activeAtom` More...
void | setActiveAtom (unsigned int idx)
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
void | removeAtom (unsigned int idx)
| removes an Atom from the molecule More...
void | removeAtom (Atom *atom)
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
Bonds
unsigned int | addBond (unsigned int beginAtomIdx, unsigned int endAtomIdx, Bond::BondType order=Bond::UNSPECIFIED)
| adds a Bond between the indicated Atoms More...
unsigned int | addBond (Atom *beginAtom, Atom *endAtom, Bond::BondType order=Bond::UNSPECIFIED)
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
unsigned int | addBond (Bond *bond, bool takeOwnership=false)
| adds a Bond to our collection More...
Bond * | createPartialBond (unsigned int beginAtomIdx, Bond::BondType order=Bond::UNSPECIFIED)
| starts a Bond and sets its beginAtomIdx More...
unsigned int | finishPartialBond (unsigned int endAtomIdx, int bondBookmark, Bond::BondType order=Bond::UNSPECIFIED)
| finishes a partially constructed bond More...
void | removeBond (unsigned int beginAtomIdx, unsigned int endAtomIdx)
| removes a bond from the molecule More...
void | replaceBond (unsigned int idx, Bond *bond, bool preserveProps=false, bool keepSGroups=true)
| replaces a particular Bond More...
void | setStereoGroups (std::vector< StereoGroup > &&stereo_groups)
| Sets groups of atoms with relative stereochemistry. More...
void | clear ()
| removes all atoms, bonds, properties, bookmarks, etc. More...
void | beginBatchEdit ()
void | rollbackBatchEdit ()
void | commitBatchEdit ()
Public Member Functions inherited from RDKit::ROMol
CXXAtomIterator< MolGraph, Atom * > | atoms ()
| C++11 Range iterator. More...
CXXAtomIterator< const MolGraph, Atom *const > | atoms () const
CXXAtomIterator< const MolGraph, Atom *const, MolGraph::adjacency_iterator > | atomNeighbors (Atom const *at) const
CXXAtomIterator< MolGraph, Atom *, MolGraph::adjacency_iterator > | atomNeighbors (Atom const *at)
CXXBondIterator< const MolGraph, Bond *const, MolGraph::out_edge_iterator > | atomBonds (Atom const *at) const
CXXBondIterator< MolGraph, Bond *, MolGraph::out_edge_iterator > | atomBonds (Atom const *at)
CXXBondIterator< MolGraph, Bond * > | bonds ()
CXXBondIterator< const MolGraph, Bond *const > | bonds () const
| ROMol ()
| ROMol (const ROMol &other, bool quickCopy=false, int confId=-1)
| copy constructor with a twist More...
| ROMol (const std::string &binStr)
| construct a molecule from a pickle string More...
| ROMol (const std::string &binStr, unsigned int propertyFlags)
| construct a molecule from a pickle string More...
virtual | ~ROMol ()
unsigned int | getNumAtoms () const
| returns our number of atoms More...
unsigned int | getNumAtoms (bool onlyExplicit) const
unsigned int | getNumHeavyAtoms () const
| returns our number of heavy atoms (atomic number > 1) More...
Atom * | getAtomWithIdx (unsigned int idx)
| returns a pointer to a particular Atom More...
const Atom * | getAtomWithIdx (unsigned int idx) const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
template<class U >
Atom * | getAtomWithIdx (const U idx)
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
template<class U >
const Atom * | getAtomWithIdx (const U idx) const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
unsigned int | getAtomDegree (const Atom *at) const
| returns the degree (number of neighbors) of an Atom in the graph More...
unsigned int | getNumBonds (bool onlyHeavy=1) const
| returns our number of Bonds More...
Bond * | getBondWithIdx (unsigned int idx)
| returns a pointer to a particular Bond More...
const Bond * | getBondWithIdx (unsigned int idx) const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
template<class U >
Bond * | getBondWithIdx (const U idx)
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
template<class U >
const Bond * | getBondWithIdx (const U idx) const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
Bond * | getBondBetweenAtoms (unsigned int idx1, unsigned int idx2)
| returns a pointer to the bond between two atoms, Null on failure More...
const Bond * | getBondBetweenAtoms (unsigned int idx1, unsigned int idx2) const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
template<class U , class V >
Bond * | getBondBetweenAtoms (const U idx1, const V idx2)
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
template<class U , class V >
const Bond * | getBondBetweenAtoms (const U idx1, const V idx2) const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
void | setAtomBookmark (Atom *at, int mark)
| associates an Atom pointer with a bookmark More...
void | replaceAtomBookmark (Atom *at, int mark)
| associates an Atom pointer with a bookmark More...
Atom * | getAtomWithBookmark (int mark)
| returns the first Atom associated with the `bookmark` provided More...
Atom * | getUniqueAtomWithBookmark (int mark)
ATOM_PTR_LIST & | getAllAtomsWithBookmark (int mark)
| returns all Atoms associated with the `bookmark` provided More...
void | clearAtomBookmark (int mark)
| removes a `bookmark` from our collection More...
void | clearAtomBookmark (int mark, const Atom *atom)
| removes a particular Atom from the list associated with the `bookmark` More...
void | clearAllAtomBookmarks ()
| blows out all atomic `bookmarks` More...
bool | hasAtomBookmark (int mark) const
| queries whether or not any atoms are associated with a `bookmark` More...
ATOM_BOOKMARK_MAP * | getAtomBookmarks ()
| returns a pointer to all of our atom `bookmarks` More...
void | setBondBookmark (Bond *bond, int mark)
| associates a Bond pointer with a bookmark More...
Bond * | getBondWithBookmark (int mark)
| returns the first Bond associated with the `bookmark` provided More...
Bond * | getUniqueBondWithBookmark (int mark)
BOND_PTR_LIST & | getAllBondsWithBookmark (int mark)
| returns all bonds associated with the `bookmark` provided More...
void | clearBondBookmark (int mark)
| removes a `bookmark` from our collection More...
void | clearBondBookmark (int mark, const Bond *bond)
| removes a particular Bond from the list associated with the `bookmark` More...
void | clearAllBondBookmarks ()
| blows out all bond `bookmarks` More...
bool | hasBondBookmark (int mark) const
| queries whether or not any bonds are associated with a `bookmark` More...
BOND_BOOKMARK_MAP * | getBondBookmarks ()
| returns a pointer to all of our bond `bookmarks` More...
const Conformer & | getConformer (int id=-1) const
Conformer & | getConformer (int id=-1)
void | removeConformer (unsigned int id)
| Delete the conformation with the specified ID. More...
void | clearConformers ()
| Clear all the conformations on the molecule. More...
unsigned int | addConformer (Conformer *conf, bool assignId=false)
| Add a new conformation to the molecule. More...
unsigned int | getNumConformers () const
RingInfo * | getRingInfo () const
ADJ_ITER_PAIR | getAtomNeighbors (Atom const *at) const
| provides access to all neighbors around an Atom More...
OBOND_ITER_PAIR | getAtomBonds (Atom const *at) const
| provides access to all Bond objects connected to an Atom More...
ATOM_ITER_PAIR | getVertices ()
| returns an iterator pair for looping over all Atoms More...
BOND_ITER_PAIR | getEdges ()
| returns an iterator pair for looping over all Bonds More...
ATOM_ITER_PAIR | getVertices () const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
BOND_ITER_PAIR | getEdges () const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
MolGraph const & | getTopology () const
| brief returns a pointer to our underlying BGL object More...
AtomIterator | beginAtoms ()
| get an AtomIterator pointing at our first Atom More...
ConstAtomIterator | beginAtoms () const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
AtomIterator | endAtoms ()
| get an AtomIterator pointing at the end of our Atoms More...
ConstAtomIterator | endAtoms () const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
BondIterator | beginBonds ()
| get a BondIterator pointing at our first Bond More...
ConstBondIterator | beginBonds () const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
BondIterator | endBonds ()
| get a BondIterator pointing at the end of our Bonds More...
ConstBondIterator | endBonds () const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
AromaticAtomIterator | beginAromaticAtoms ()
| get an AtomIterator pointing at our first aromatic Atom More...
ConstAromaticAtomIterator | beginAromaticAtoms () const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
AromaticAtomIterator | endAromaticAtoms ()
| get an AtomIterator pointing at the end of our Atoms More...
ConstAromaticAtomIterator | endAromaticAtoms () const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
HeteroatomIterator | beginHeteros ()
| get an AtomIterator pointing at our first hetero Atom More...
ConstHeteroatomIterator | beginHeteros () const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
HeteroatomIterator | endHeteros ()
| get an AtomIterator pointing at the end of our Atoms More...
ConstHeteroatomIterator | endHeteros () const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
QueryAtomIterator | beginQueryAtoms (QueryAtom const *query)
| get an AtomIterator pointing at our first Atom that matches `query` More...
ConstQueryAtomIterator | beginQueryAtoms (QueryAtom const *) const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
QueryAtomIterator | endQueryAtoms ()
| get an AtomIterator pointing at the end of our Atoms More...
ConstQueryAtomIterator | endQueryAtoms () const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
MatchingAtomIterator | beginMatchingAtoms (bool(*query)(Atom *))
| get an AtomIterator pointing at our first Atom that matches `query` More...
ConstMatchingAtomIterator | beginMatchingAtoms (bool(*query)(const Atom *)) const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
MatchingAtomIterator | endMatchingAtoms ()
| get an AtomIterator pointing at the end of our Atoms More...
ConstMatchingAtomIterator | endMatchingAtoms () const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
ConformerIterator | beginConformers ()
ConformerIterator | endConformers ()
ConstConformerIterator | beginConformers () const
ConstConformerIterator | endConformers () const
void | clearComputedProps (bool includeRings=true) const
| clears all of our `computed` `properties` More...
void | updatePropertyCache (bool strict=true)
| calculates any of our lazy `properties` More...
bool | needsUpdatePropertyCache () const
void | debugMol (std::ostream &str) const
| sends some debugging info to a stream More...
Atom * | operator[] (const vertex_descriptor &v)
const Atom * | operator[] (const vertex_descriptor &v) const
Bond * | operator[] (const edge_descriptor &e)
const Bond * | operator[] (const edge_descriptor &e) const
const std::vector< StereoGroup > & | getStereoGroups () const
| Gets a reference to the groups of atoms with relative stereochemistry. More...
Public Member Functions inherited from RDKit::RDProps
| RDProps ()
| RDProps (const RDProps &rhs)
RDProps & | operator= (const RDProps &rhs)
void | clear ()
const Dict & | getDict () const
| gets the underlying Dictionary More...
Dict & | getDict ()
STR_VECT | getPropList (bool includePrivate=true, bool includeComputed=true) const
| returns a list with the names of our `properties` More...
template<typename T >
void | setProp (const std::string &key, T val, bool computed=false) const
| sets a `property` value More...
template<typename T >
void | getProp (const std::string &key, T &res) const
| allows retrieval of a particular property value More...
template<typename T >
T | getProp (const std::string &key) const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
template<typename T >
bool | getPropIfPresent (const std::string &key, T &res) const
bool | hasProp (const std::string &key) const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
void | clearProp (const std::string &key) const
| clears the value of a `property` More...
void | clearComputedProps () const
| clears all of our `computed` `properties` More...
void | updateProps (const RDProps &source, bool preserveExisting=false)
| update the properties from another More...

## Additional Inherited Members

Protected Attributes inherited from RDKit::ROMol
unsigned int | numBonds {0}
Protected Attributes inherited from RDKit::RDProps
Dict | d_props

## Detailed Description

RWMol is a molecule class that is intended to be edited.

See documentation for ROMol for general remarks

Definition at line 32 of file RWMol.h.

## Constructor & Destructor Documentation

## RWMol() [1/3]

RDKit::RWMol::RWMol | ( |  | ) |

inline

Definition at line 34 of file RWMol.h.

## RWMol() [2/3]

RDKit::RWMol::RWMol | ( | const ROMol & | other,
|  | bool | quickCopy = `false`,
|  | int | confId = `-1`
| ) |  |

inline

copy constructor with a twist

Parameters

  other | the molecule to be copied
  quickCopy | (optional) if this is true, the resulting ROMol will not copy any of the properties or bookmarks and conformers from `other`. This can make the copy substantially faster (thus the name).
  confId | if this is >=0, the resulting ROMol will contain only the specified conformer from `other`.

Definition at line 45 of file RWMol.h.

## RWMol() [3/3]

RDKit::RWMol::RWMol | ( | const RWMol & | other | ) |

inline

Definition at line 47 of file RWMol.h.

## Member Function Documentation

## addAtom() [1/2]

unsigned int RDKit::RWMol::addAtom | ( | Atom * | atom,
|  | bool | updateLabel = `true`,
|  | bool | takeOwnership = `false`
| ) |  |

inline

adds an Atom to our collection

Parameters

  atom | pointer to the Atom to add
  updateLabel | (optional) if this is true, the new Atom will be our `activeAtom`
  takeOwnership | (optional) if this is true, we take ownership of `atom` instead of copying it.

Returns
  the index of the added atom

Definition at line 77 of file RWMol.h.

## addAtom() [2/2]

unsigned int RDKit::RWMol::addAtom | ( | bool | updateLabel = `true` | ) |

adds an empty Atom to our collection

Parameters

  updateLabel | (optional) if this is true, the new Atom will be our `activeAtom`

Returns
  the index of the added atom

Referenced by RDKit::RGroupDecompData::addAtoms(), RDKit::SLNParse::addAtomToMol(), and RDKit::SLNParse::startMol().

## addBond() [1/3]

unsigned int RDKit::RWMol::addBond | ( | Atom * | beginAtom,
|  | Atom * | endAtom,
|  | Bond::BondType | order = `Bond::UNSPECIFIED`
| ) |  |

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## addBond() [2/3]

unsigned int RDKit::RWMol::addBond | ( | Bond * | bond,
|  | bool | takeOwnership = `false`
| ) |  |

inline

adds a Bond to our collection

Parameters

  bond | pointer to the Bond to add
  takeOwnership | (optional) if this is true, we take ownership of `bond` instead of copying it.

Returns
  the new number of bonds

Definition at line 136 of file RWMol.h.

## addBond() [3/3]

unsigned int RDKit::RWMol::addBond | ( | unsigned int | beginAtomIdx,
|  | unsigned int | endAtomIdx,
|  | Bond::BondType | order = `Bond::UNSPECIFIED`
| ) |  |

adds a Bond between the indicated Atoms

Returns
  the number of Bonds

Referenced by RDKit::RGroupDecompData::addAtoms(), RDKit::SLNParse::addAtomToMol(), and RDKit::SLNParse::startMol().

## beginBatchEdit()

void RDKit::RWMol::beginBatchEdit | ( |  | ) |

## clear()

void RDKit::RWMol::clear | ( |  | ) |

inline

removes all atoms, bonds, properties, bookmarks, etc.

Definition at line 207 of file RWMol.h.

## commitBatchEdit()

void RDKit::RWMol::commitBatchEdit | ( |  | ) |

## createPartialBond()

Bond* RDKit::RWMol::createPartialBond | ( | unsigned int | beginAtomIdx,
|  | Bond::BondType | order = `Bond::UNSPECIFIED`
| ) |  |

starts a Bond and sets its beginAtomIdx

Returns
  a pointer to the new bond

The caller should set a bookmark to the returned Bond in order to be able to later complete it:

      Bond *pBond = mol->createPartialBond(1);
      mol->setBondBookmark(pBond,666);
      ... do some other stuff ...
      mol->finishPartialBond(2,666,Bond::SINGLE);
      mol->clearBondBookmark(666,pBond);

or, if we want to set the `BondType` initially:

      Bond *pBond = mol->createPartialBond(1,Bond::DOUBLE);
      mol->setBondBookmark(pBond,666);
      ... do some other stuff ...
      mol->finishPartialBond(2,666);
      mol->clearBondBookmark(666,pBond);

the call to finishPartialBond() will take priority if you set the `BondType` in both calls.

## finishPartialBond()

unsigned int RDKit::RWMol::finishPartialBond | ( | unsigned int | endAtomIdx,
|  | int | bondBookmark,
|  | Bond::BondType | order = `Bond::UNSPECIFIED`
| ) |  |

finishes a partially constructed bond

Returns
  the final number of Bonds

See the documentation for createPartialBond() for more details

## getActiveAtom()

Atom* RDKit::RWMol::getActiveAtom | ( |  | ) |

returns a pointer to the "active" Atom

If we have an `activeAtom`, it will be returned, otherwise the results of getLastAtom() will be returned.

Referenced by RDKit::SLNParse::addAtomToMol(), RDKit::SLNParse::addBranchToMol(), and RDKit::SLNParse::closeRingBond().

## getLastAtom()

Atom* RDKit::RWMol::getLastAtom | ( |  | ) |

inline

returns a pointer to the highest-numbered Atom

Definition at line 96 of file RWMol.h.

## insertMol()

void RDKit::RWMol::insertMol | ( | const ROMol & | other | ) |

insert the atoms and bonds from `other` into this molecule

Referenced by RDKit::SLNParse::addBranchToMol().

## operator=()

RWMol& RDKit::RWMol::operator= | ( | const RWMol & |  | ) |

## removeAtom() [1/2]

void RDKit::RWMol::removeAtom | ( | Atom * | atom | ) |

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## removeAtom() [2/2]

void RDKit::RWMol::removeAtom | ( | unsigned int | idx | ) |

removes an Atom from the molecule

## removeBond()

void RDKit::RWMol::removeBond | ( | unsigned int | beginAtomIdx,
|  | unsigned int | endAtomIdx
| ) |  |

removes a bond from the molecule

## replaceAtom()

void RDKit::RWMol::replaceAtom | ( | unsigned int | idx,
|  | Atom * | atom,
|  | bool | updateLabel = `false`,
|  | bool | preserveProps = `false`
| ) |  |

adds an Atom to our collection

replaces a particular Atom

Parameters

  idx | the index of the Atom to replace
  atom | the new atom, which will be copied.
  updateLabel | (optional) if this is true, the new Atom will be our `activeAtom`
  preserveProps | if true preserve the original atom property data

## replaceBond()

void RDKit::RWMol::replaceBond | ( | unsigned int | idx,
|  | Bond * | bond,
|  | bool | preserveProps = `false`,
|  | bool | keepSGroups = `true`
| ) |  |

replaces a particular Bond

Parameters

  idx | the index of the Bond to replace
  bond | the new bond, which will be copied.
  preserveProps | if true preserve the original bond property data
  keepSGroups | if true, keep Substance groups referencing the bond

## rollbackBatchEdit()

void RDKit::RWMol::rollbackBatchEdit | ( |  | ) |

inline

Definition at line 215 of file RWMol.h.

## setActiveAtom() [1/2]

void RDKit::RWMol::setActiveAtom | ( | Atom * | atom | ) |

sets our `activeAtom`

Referenced by RDKit::SLNParse::addBranchToMol().

## setActiveAtom() [2/2]

void RDKit::RWMol::setActiveAtom | ( | unsigned int | idx | ) |

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## setStereoGroups()

void RDKit::RWMol::setStereoGroups | ( | std::vector< StereoGroup > && | stereo_groups | ) |

inline

Sets groups of atoms with relative stereochemistry.

Parameters

  stereo_groups | the new set of stereo groups. All will be replaced.

Stereo groups are also called enhanced stereochemistry in the SDF/Mol3000 file format. stereo_groups should be std::move()ed into this function.

Definition at line 202 of file RWMol.h.

The documentation for this class was generated from the following file:

- RWMol.h