RDKit: RDKit::Bond Class Reference

| RDKit Open-source cheminformatics and machine learning.

- Main Page
- Namespaces
- Classes
- Files

- Class List
- Class Hierarchy
- Class Members

Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
RDKit::Bond Class Reference

class for representing a bond More...

`#include <Bond.h>`

Inheritance diagram for RDKit::Bond:

## Public Types
enum | BondType { UNSPECIFIED = 0, SINGLE, DOUBLE, TRIPLE, QUADRUPLE, QUINTUPLE, HEXTUPLE, ONEANDAHALF, TWOANDAHALF, THREEANDAHALF, FOURANDAHALF, FIVEANDAHALF, AROMATIC, IONIC, HYDROGEN, THREECENTER, DATIVEONE, DATIVE, DATIVEL, DATIVER, OTHER, ZERO }
| the type of Bond More...
enum | BondDir { NONE = 0, BEGINWEDGE, BEGINDASH, ENDDOWNRIGHT, ENDUPRIGHT, EITHERDOUBLE, UNKNOWN }
| the bond's direction (for chirality) More...
enum | BondStereo { STEREONONE = 0, STEREOANY, STEREOZ, STEREOE }
| the nature of the bond's stereochem (for cis/trans) More...
typedef boost::shared_ptr< Bond > | BOND_SPTR
typedef Queries::Query< int, Bond const *, true > | QUERYBOND_QUERY

## Public Member Functions
| Bond ()
| Bond (BondType bT)
| construct with a particular BondType More...
| Bond (const Bond &other)
virtual | ~Bond ()
Bond & | operator= (const Bond &other)
virtual Bond * | copy () const
| returns a copy More...
BondType | getBondType () const
| returns our `bondType` More...
void | setBondType (BondType bT)
| sets our `bondType` More...
double | getBondTypeAsDouble () const
| returns our `bondType` as a double (e.g. SINGLE->1.0, AROMATIC->1.5, etc.) More...
double | getValenceContrib (const Atom *at) const
| returns our contribution to the explicit valence of an Atom More...
double | getValenceContrib (ATOM_SPTR at) const
void | setIsAromatic (bool what)
| sets our `isAromatic` flag More...
bool | getIsAromatic () const
| returns the status of our `isAromatic` flag More...
void | setIsConjugated (bool what)
| sets our `isConjugated` flag More...
bool | getIsConjugated () const
| returns the status of our `isConjugated` flag More...
ROMol & | getOwningMol () const
| returns a reference to the ROMol that owns this Bond More...
void | setOwningMol (ROMol *other)
| sets our owning molecule More...
void | setOwningMol (ROMol &other)
| sets our owning molecule More...
unsigned int | getIdx () const
| returns our index within the ROMol More...
void | setIdx (unsigned int index)
| sets our index within the ROMol More...
unsigned int | getBeginAtomIdx () const
| returns the index of our begin Atom More...
unsigned int | getEndAtomIdx () const
| returns the index of our end Atom More...
unsigned int | getOtherAtomIdx (unsigned int thisIdx) const
| given the index of one Atom, returns the index of the other More...
void | setBeginAtomIdx (unsigned int what)
| sets the index of our begin Atom More...
void | setEndAtomIdx (unsigned int what)
| sets the index of our end Atom More...
void | setBeginAtom (Atom *at)
| sets our begin Atom More...
void | setBeginAtom (ATOM_SPTR at)
void | setEndAtom (Atom *at)
| sets our end Atom More...
void | setEndAtom (ATOM_SPTR at)
Atom * | getBeginAtom () const
| returns a pointer to our begin Atom More...
Atom * | getEndAtom () const
| returns a pointer to our end Atom More...
Atom * | getOtherAtom (Atom const *what) const
| returns a pointer to the other Atom More...
virtual bool | hasQuery () const
virtual void | setQuery (QUERYBOND_QUERY *what)
| NOT CALLABLE. More...
virtual QUERYBOND_QUERY * | getQuery () const
| NOT CALLABLE. More...
virtual void | expandQuery (QUERYBOND_QUERY *what, Queries::CompositeQueryType how=Queries::COMPOSITE_AND, bool maintainOrder=true)
| NOT CALLABLE. More...
virtual bool | Match (Bond const *what) const
| returns whether or not we match the argument More...
virtual bool | Match (const Bond::BOND_SPTR what) const
void | setBondDir (BondDir what)
| sets our direction More...
BondDir | getBondDir () const
| returns our direction More...
void | setStereo (BondStereo what)
| sets our stereo code More...
BondStereo | getStereo () const
| returns our stereo code More...
const INT_VECT & | getStereoAtoms () const
| returns the indices of our stereo atoms More...
INT_VECT & | getStereoAtoms ()
STR_VECT | getPropList () const
| returns a list with the names of our `properties` More...
template<typename T >
void | setProp (const char *key, T val, bool computed=false) const
| sets a `property` value More...
template<typename T >
void | setProp (const std::string &key, T val, bool computed=false) const
template<typename T >
void | getProp (const char *key, T &res) const
| allows retrieval of a particular property value More...
template<typename T >
void | getProp (const std::string &key, T &res) const
template<typename T >
T | getProp (const char *key) const
template<typename T >
T | getProp (const std::string &key) const
template<typename T >
bool | getPropIfPresent (const char *key, T &res) const
template<typename T >
bool | getPropIfPresent (const std::string &key, T &res) const
bool | hasProp (const char *key) const
| returns whether or not we have a `property` with name `key` More...
bool | hasProp (const std::string &key) const
void | clearProp (const char *key) const
| clears the value of a `property` More...
void | clearProp (const std::string &key) const
void | clearComputedProps () const
| clears all of our `computed` `properties` More...
void | updatePropertyCache (bool strict=true)
| calculates any of our lazy `properties` More...

## Protected Member Functions
void | initBond ()

## Protected Attributes
bool | df_isAromatic
| sets our owning molecule More...
bool | df_isConjugated
boost::uint8_t | d_bondType
boost::uint8_t | d_dirTag
boost::uint8_t | d_stereo
atomindex_t | d_index
atomindex_t | d_beginAtomIdx
atomindex_t | d_endAtomIdx
ROMol * | dp_mol
Dict * | dp_props
INT_VECT * | dp_stereoAtoms

## Friends
class | RWMol
class | ROMol

## Detailed Description

class for representing a bond

Notes:

- many of the methods of Atom require that the Atom be associated with a molecule (an ROMol).
- each Bond maintains a Dict of `properties:`
  - Each `property` is keyed by name and can store an arbitrary type.
  - `Properties` can be marked as `calculated`, in which case they will be cleared when the `clearComputedProps()` method is called.
  - Because they have no impact upon chemistry, all `property` operations are `const`, this allows extra flexibility for clients who need to store extra data on Bond objects.

Definition at line 46 of file Bond.h.

## Member Typedef Documentation

typedef boost::shared_ptr<Bond> RDKit::Bond::BOND_SPTR

Definition at line 51 of file Bond.h.

typedef Queries::Query<int, Bond const *, true> RDKit::Bond::QUERYBOND_QUERY

Definition at line 53 of file Bond.h.

## Member Enumeration Documentation

enum RDKit::Bond::BondDir

the bond's direction (for chirality)

Enumerator
NONE | no special style
BEGINWEDGE | wedged: narrow at begin
BEGINDASH | dashed: narrow at begin
ENDDOWNRIGHT | for cis/trans
ENDUPRIGHT | ditto
EITHERDOUBLE | a "crossed" double bond
UNKNOWN | intentionally unspecified stereochemistry

Definition at line 83 of file Bond.h.

enum RDKit::Bond::BondStereo

the nature of the bond's stereochem (for cis/trans)

Enumerator
STEREONONE |
STEREOANY |
STEREOZ |
STEREOE |

Definition at line 95 of file Bond.h.

enum RDKit::Bond::BondType

the type of Bond

Enumerator
UNSPECIFIED |
SINGLE |
DOUBLE |
TRIPLE |
QUADRUPLE |
QUINTUPLE |
HEXTUPLE |
ONEANDAHALF |
TWOANDAHALF |
THREEANDAHALF |
FOURANDAHALF |
FIVEANDAHALF |
AROMATIC |
IONIC |
HYDROGEN |
THREECENTER |
DATIVEONE | one-electron dative (e.g. from a C in a Cp ring to a metal)
DATIVE | standard two-electron dative
DATIVEL | standard two-electron dative
DATIVER | standard two-electron dative
OTHER |
ZERO | Zero-order bond (from.

Definition at line 56 of file Bond.h.

## Constructor & Destructor Documentation

RDKit::Bond::Bond | ( |  | ) |

RDKit::Bond::Bond | ( | BondType | bT | ) |
| explicit

construct with a particular BondType

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

virtual RDKit::Bond::~Bond | ( |  | ) |
| virtual

## Member Function Documentation

void RDKit::Bond::clearComputedProps | ( |  | ) | const
| inline

clears all of our `computed` `properties`

Definition at line 417 of file Bond.h.

References RDKit::Dict::clearVal(), detail::computedPropName, dp_props, getPropIfPresent(), and RDKit::Dict::setVal().

void RDKit::Bond::clearProp | ( | const char * | key | ) | const
| inline

clears the value of a `property`

Notes:

- if no `property` with name `key` exists, a KeyErrorException will be thrown.
- if the `property` is marked as `computed`, it will also be removed from our list of `computedProperties`

Definition at line 399 of file Bond.h.

void RDKit::Bond::clearProp | ( | const std::string & | key | ) | const
| inline

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

Definition at line 404 of file Bond.h.

References RDKit::Dict::clearVal(), detail::computedPropName, dp_props, getPropIfPresent(), and RDKit::Dict::setVal().

virtual Bond* RDKit::Bond::copy | ( |  | ) | const
| virtual

returns a copy

Note: the caller is responsible for `delete`ing the returned pointer.

Reimplemented in RDKit::QueryBond.

virtual void RDKit::Bond::expandQuery | ( | QUERYBOND_QUERY * | what,
|  | Queries::CompositeQueryType | how = `Queries::COMPOSITE_AND`,
|  | bool | maintainOrder = `true`
| ) |  |
| virtual

NOT CALLABLE.

Reimplemented in RDKit::QueryBond.

Atom* RDKit::Bond::getBeginAtom | ( |  | ) | const

returns a pointer to our begin Atom

Notes:

- requires an owning molecule

unsigned int RDKit::Bond::getBeginAtomIdx | ( |  | ) | const
| inline

returns the index of our begin Atom

Notes:

- this makes no sense if we do not have an owning molecule

Definition at line 172 of file Bond.h.

References d_beginAtomIdx.

BondDir RDKit::Bond::getBondDir | ( |  | ) | const
| inline

returns our direction

Definition at line 271 of file Bond.h.

References d_dirTag.

Referenced by RDKit::queryBondDir().

BondType RDKit::Bond::getBondType | ( |  | ) | const
| inline

returns our `bondType`

Definition at line 119 of file Bond.h.

References d_bondType.

Referenced by RDKit::queryBondOrder().

double RDKit::Bond::getBondTypeAsDouble | ( |  | ) | const

returns our `bondType` as a double (e.g. SINGLE->1.0, AROMATIC->1.5, etc.)

Atom* RDKit::Bond::getEndAtom | ( |  | ) | const

returns a pointer to our end Atom

Notes:

- requires an owning molecule

unsigned int RDKit::Bond::getEndAtomIdx | ( |  | ) | const
| inline

returns the index of our end Atom

Notes:

- this makes no sense if we do not have an owning molecule

Definition at line 179 of file Bond.h.

References d_endAtomIdx.

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

unsigned int RDKit::Bond::getIdx | ( |  | ) | const
| inline

returns our index within the ROMol

Notes:

- this makes no sense if we do not have an owning molecule

Definition at line 158 of file Bond.h.

References d_index.

Referenced by RDKit::FMCS::TargetMatch::init(), RDKit::queryBondIsInRingOfSize(), RDKit::queryBondMinRingSize(), RDKit::queryIsBondInNRings(), and RDKit::queryIsBondInRing().

bool RDKit::Bond::getIsAromatic | ( |  | ) | const
| inline

returns the status of our `isAromatic` flag

Definition at line 138 of file Bond.h.

References df_isAromatic.

bool RDKit::Bond::getIsConjugated | ( |  | ) | const
| inline

returns the status of our `isConjugated` flag

Definition at line 143 of file Bond.h.

References df_isConjugated.

Atom* RDKit::Bond::getOtherAtom | ( | Atom const * | what | ) | const

returns a pointer to the other Atom

Notes:

- requires an owning molecule

unsigned int RDKit::Bond::getOtherAtomIdx | ( | unsigned int | thisIdx | ) | const

given the index of one Atom, returns the index of the other

Notes:

- this makes no sense if we do not have an owning molecule

ROMol& RDKit::Bond::getOwningMol | ( |  | ) | const
| inline

returns a reference to the ROMol that owns this Bond

Definition at line 146 of file Bond.h.

References dp_mol.

Referenced by RDKit::queryBondIsInRingOfSize(), RDKit::queryBondMinRingSize(), RDKit::queryIsBondInNRings(), and RDKit::queryIsBondInRing().

template<typename T >

void RDKit::Bond::getProp | ( | const char * | key,
|  | T & | res
| ) |  | const
| inline

allows retrieval of a particular property value

Parameters

  key | the name under which the `property` should be stored. If a `property` is already stored under this name, it will be replaced.
  res | a reference to the storage location for the value.

Notes:

- if no `property` with name `key` exists, a KeyErrorException will be thrown.
- the `boost::lexical_cast` machinery is used to attempt type conversions. If this fails, a `boost::bad_lexical_cast` exception will be thrown.

Definition at line 345 of file Bond.h.

References dp_props, RDKit::Dict::getVal(), and PRECONDITION.

template<typename T >

void RDKit::Bond::getProp | ( | const std::string & | key,
|  | T & | res
| ) |  | const
| inline

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

Definition at line 351 of file Bond.h.

References dp_props, RDKit::Dict::getVal(), and PRECONDITION.

template<typename T >

T RDKit::Bond::getProp | ( | const char * | key | ) | const
| inline

Definition at line 358 of file Bond.h.

References dp_props, and RDKit::Dict::getVal().

template<typename T >

T RDKit::Bond::getProp | ( | const std::string & | key | ) | const
| inline

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

Definition at line 363 of file Bond.h.

References dp_props, and RDKit::Dict::getVal().

template<typename T >

bool RDKit::Bond::getPropIfPresent | ( | const char * | key,
|  | T & | res
| ) |  | const
| inline

returns whether or not we have a `property` with name `key` and assigns the value if we do

Definition at line 371 of file Bond.h.

References dp_props, and RDKit::Dict::getValIfPresent().

Referenced by clearComputedProps(), clearProp(), and setProp().

template<typename T >

bool RDKit::Bond::getPropIfPresent | ( | const std::string & | key,
|  | T & | res
| ) |  | const
| inline

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

Definition at line 376 of file Bond.h.

References dp_props, and RDKit::Dict::getValIfPresent().

STR_VECT RDKit::Bond::getPropList | ( |  | ) | const
| inline

returns a list with the names of our `properties`

Definition at line 296 of file Bond.h.

References dp_props, and RDKit::Dict::keys().

virtual QUERYBOND_QUERY* RDKit::Bond::getQuery | ( |  | ) | const
| virtual

NOT CALLABLE.

Reimplemented in RDKit::QueryBond.

BondStereo RDKit::Bond::getStereo | ( |  | ) | const
| inline

returns our stereo code

Definition at line 276 of file Bond.h.

References d_stereo.

const INT_VECT& RDKit::Bond::getStereoAtoms | ( |  | ) | const
| inline

returns the indices of our stereo atoms

Definition at line 279 of file Bond.h.

References dp_stereoAtoms.

INT_VECT& RDKit::Bond::getStereoAtoms | ( |  | ) |
| inline

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

Definition at line 286 of file Bond.h.

References dp_stereoAtoms.

double RDKit::Bond::getValenceContrib | ( | const Atom * | at | ) | const

returns our contribution to the explicit valence of an Atom

Notes:

- requires an owning molecule

double RDKit::Bond::getValenceContrib | ( | ATOM_SPTR | at | ) | const

bool RDKit::Bond::hasProp | ( | const char * | key | ) | const
| inline

returns whether or not we have a `property` with name `key`

Definition at line 381 of file Bond.h.

References dp_props, and RDKit::Dict::hasVal().

bool RDKit::Bond::hasProp | ( | const std::string & | key | ) | const
| inline

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

Definition at line 386 of file Bond.h.

References dp_props, and RDKit::Dict::hasVal().

virtual bool RDKit::Bond::hasQuery | ( |  | ) | const
| inlinevirtual

Reimplemented in RDKit::QueryBond.

Definition at line 243 of file Bond.h.

void RDKit::Bond::initBond | ( |  | ) |
| protected

virtual bool RDKit::Bond::Match | ( | Bond const * | what | ) | const
| virtual

returns whether or not we match the argument

Notes:

- for Bond objects, "match" means that either one of the Bonds has `bondType` Bond::UNSPECIFIED or both Bonds have the same `bondType`.

Reimplemented in RDKit::QueryBond.

virtual bool RDKit::Bond::Match | ( | const Bond::BOND_SPTR | what | ) | const
| virtual

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

Reimplemented in RDKit::QueryBond.

Bond& RDKit::Bond::operator= | ( | const Bond & | other | ) |

void RDKit::Bond::setBeginAtom | ( | Atom * | at | ) |

sets our begin Atom

Notes:

- requires an owning molecule

void RDKit::Bond::setBeginAtom | ( | ATOM_SPTR | at | ) |

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

void RDKit::Bond::setBeginAtomIdx | ( | unsigned int | what | ) |

sets the index of our begin Atom

Notes:

- requires an owning molecule

void RDKit::Bond::setBondDir | ( | BondDir | what | ) |
| inline

sets our direction

Definition at line 269 of file Bond.h.

References d_dirTag.

void RDKit::Bond::setBondType | ( | BondType | bT | ) |
| inline

sets our `bondType`

Definition at line 121 of file Bond.h.

References d_bondType.

void RDKit::Bond::setEndAtom | ( | Atom * | at | ) |

sets our end Atom

Notes:

- requires an owning molecule

void RDKit::Bond::setEndAtom | ( | ATOM_SPTR | at | ) |

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

void RDKit::Bond::setEndAtomIdx | ( | unsigned int | what | ) |

sets the index of our end Atom

Notes:

- requires an owning molecule

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

void RDKit::Bond::setIdx | ( | unsigned int | index | ) |
| inline

sets our index within the ROMol

Notes:

- this makes no sense if we do not have an owning molecule
- the index should be `< this->getOwningMol()->getNumBonds()`

Definition at line 165 of file Bond.h.

References d_index.

void RDKit::Bond::setIsAromatic | ( | bool | what | ) |
| inline

sets our `isAromatic` flag

Definition at line 136 of file Bond.h.

References df_isAromatic.

void RDKit::Bond::setIsConjugated | ( | bool | what | ) |
| inline

sets our `isConjugated` flag

Definition at line 141 of file Bond.h.

References df_isConjugated.

void RDKit::Bond::setOwningMol | ( | ROMol * | other | ) |

sets our owning molecule

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

void RDKit::Bond::setOwningMol | ( | ROMol & | other | ) |
| inline

sets our owning molecule

Definition at line 150 of file Bond.h.

References setOwningMol().

Referenced by setOwningMol().

template<typename T >

void RDKit::Bond::setProp | ( | const char * | key,
|  | T | val,
|  | bool | computed = `false`
| ) |  | const
| inline

sets a `property` value

Parameters

  key | the name under which the `property` should be stored. If a `property` is already stored under this name, it will be replaced.
  val | the value to be stored
  computed | (optional) allows the `property` to be flagged `computed`.

Definition at line 308 of file Bond.h.

template<typename T >

void RDKit::Bond::setProp | ( | const std::string & | key,
|  | T | val,
|  | bool | computed = `false`
| ) |  | const
| inline

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

Definition at line 315 of file Bond.h.

References detail::computedPropName, dp_props, getPropIfPresent(), and RDKit::Dict::setVal().

virtual void RDKit::Bond::setQuery | ( | QUERYBOND_QUERY * | what | ) |
| virtual

NOT CALLABLE.

Reimplemented in RDKit::QueryBond.

void RDKit::Bond::setStereo | ( | BondStereo | what | ) |
| inline

sets our stereo code

Definition at line 274 of file Bond.h.

References d_stereo.

void RDKit::Bond::updatePropertyCache | ( | bool | strict = `true` | ) |
| inline

calculates any of our lazy `properties`

Notes:

- requires an owning molecule

Definition at line 431 of file Bond.h.

## Friends And Related Function Documentation

friend class ROMol
| friend

Definition at line 48 of file Bond.h.

friend class RWMol
| friend

Definition at line 47 of file Bond.h.

## Member Data Documentation

atomindex_t RDKit::Bond::d_beginAtomIdx
| protected

Definition at line 444 of file Bond.h.

Referenced by getBeginAtomIdx().

boost::uint8_t RDKit::Bond::d_bondType
| protected

Definition at line 440 of file Bond.h.

Referenced by getBondType(), and setBondType().

boost::uint8_t RDKit::Bond::d_dirTag
| protected

Definition at line 441 of file Bond.h.

Referenced by getBondDir(), and setBondDir().

atomindex_t RDKit::Bond::d_endAtomIdx
| protected

Definition at line 444 of file Bond.h.

Referenced by getEndAtomIdx().

atomindex_t RDKit::Bond::d_index
| protected

Definition at line 443 of file Bond.h.

Referenced by getIdx(), and setIdx().

boost::uint8_t RDKit::Bond::d_stereo
| protected

Definition at line 442 of file Bond.h.

Referenced by getStereo(), and setStereo().

bool RDKit::Bond::df_isAromatic
| protected

sets our owning molecule

sets our owning molecule

Definition at line 438 of file Bond.h.

Referenced by getIsAromatic(), and setIsAromatic().

bool RDKit::Bond::df_isConjugated
| protected

Definition at line 439 of file Bond.h.

Referenced by getIsConjugated(), and setIsConjugated().

ROMol* RDKit::Bond::dp_mol
| protected

Definition at line 445 of file Bond.h.

Referenced by getOwningMol().

Dict* RDKit::Bond::dp_props
| protected

Definition at line 446 of file Bond.h.

Referenced by clearComputedProps(), clearProp(), getProp(), getPropIfPresent(), getPropList(), hasProp(), and setProp().

INT_VECT* RDKit::Bond::dp_stereoAtoms
| protected

Definition at line 447 of file Bond.h.

Referenced by getStereoAtoms().

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

- Bond.h