Loading...
Searching...
No Matches
OBTetrahedralStereo::Config Struct Reference

`#include <openbabel/stereo/tetrahedral.h>`

## Public Member Functions

| Config ()
| Config (unsigned long _center, unsigned long from_or_towards, const OBStereo::Refs &_refs, OBStereo::Winding _winding=OBStereo::Clockwise, OBStereo::View _view=OBStereo::ViewFrom)
bool | operator== (const Config &other) const
bool | operator!= (const Config &other) const

## Public Attributes

Data members defining stereochemistry.
unsigned long | center
union { |
unsigned long from |
unsigned long towards |
}; |
OBStereo::Refs | refs
OBStereo::Winding | winding
OBStereo::View | view
bool | specified

## Detailed Description

Stereochemical configuration for tetrahedral stereocenters.

The config struct represents the stereochemistry in a well defined way. For tetrahedral stereo centers, the following data members define the special orientation of the atoms:

- OBStereo::Ref `center:` Atom id of the stereogenic center atom.
- OBStereo::Ref `from/towards`: Atom id (or OBStereo::ImplicitRef) for the atom to view from/towards.
- OBStereo::Refs `refs:` The three remaining atom ids (may also contain one OBStereo::NoRef element if from/towards is set to a real atom id).
- OBStereo::View `view:` Specify the viewing from or towards the atom with `from/towards` id.
- OBStereo::Winding `winding:` Clockwise or AntiClockwise (order in the Refs `refs` list)

Only `center` is specific for OBTetrahedralStereo::Config. The other data members occur in all OBTetraNonPlanarStereo derived classes.

## Constructor & Destructor Documentation

## Config() [1/2]

Config | ( |  | ) |

inline

Default constructor. Initializes the `from/torards` and `center` to OBStereo::NoRef, the `winding` to OBStereo::Clockwise and `view` to OBStereo::ViewFrom.

Referenced by operator!=(), and operator==().

## Config() [2/2]

Config | ( | unsigned long | _center,
|  | unsigned long | from_or_towards,
|  | const OBStereo::Refs & | _refs,
|  | OBStereo::Winding | _winding = OBStereo::Clockwise,
|  | OBStereo::View | _view = OBStereo::ViewFrom )

inline

Constructor with all parameters.

Parameters

  _center | The center (chiral) atom id.
  from_or_towards | The atom id from which to view or view towards (see `view`).
  _refs | The 3 reference ids.
  _winding | The winding for the 3 ids in `_refs`.
  _view | Specify viewing from or towards the atom with `from_or_towards` id.

## Member Function Documentation

## operator==()

bool operator== | ( | const Config & | other | ) | const

Equal to operator. Comparing OBTetrahedralStereo::Config structs is done using the information stored in the struct's data members (i.e. `view`, `winding`, `from/towards` and `refs`).

There are a number of cases resuling in false being returned:

- The centers don't match.
- One of the Refs lists does not contain 3 elements.
- 2 or more OBStereo::ImplicitRef values in a single Config struct

When either Config struct is unspecified (i.e. the stereochemistry implied is accidental), true is returned.

It doesn't matter if the two Config structs use the same view, same from/towards Ref or the same winding. All needed conversions will be carried out automatically (see OBTetraNonPlanerStereo::ToConfig). These conversions ensure the spacial orientation of the 4 groups remains unchanged.

Another key feature is the ability to comapre Config structs regardless of implicit (OBStereo::ImplicitRef) or explicit hydrogens. This is best illustrated with some examples. In these examples the same ref has already been selected as from/towards atom and both use the same winding and view direction. We will focus on how the three remaining refs are interpreted.

      234 == 234 // true
      2H4 == 234 // 3 is missing, must be the implicit --> 234 == 234 // true
      2H4 == 243 // same as above, but now 234 == 243 // false
      234 == H34 // 2 is missing, must be implicit --> 234 == 234 // true

By comparing the second and third example above, it can be clearly seen that the value of 1 Ref can actually be ignored. It's position in the sequence (or the winding) is defined by the two explicit Ref values.

Returns
  True if both Config structs represent the same stereochemistry.

## operator!=()

bool operator!= | ( | const Config & | other | ) | const

inline

Not equal to operator. This is the inverse of the Equal to operator==.

Returns
  True if the two Config structs represent a different stereochemistry.

## Member Data Documentation

## center

unsigned long center

Referenced by OpenBabel::CanonicalLabels(), Config(), Config(), OBTetrahedralConfig::Convert(), OBMol::CopySubstructure(), OBBuilder::CorrectStereoAtoms(), OBSmartsMatcher::match(), and OBMol::operator+=().

## from

unsigned long from

Referenced by Config(), Config(), OBTetrahedralConfig::Convert(), OBMol::CopySubstructure(), OpenBabel::DeleteStereoOnAtom(), OBSmartsMatcher::match(), OBMol::operator+=(), and OBTetrahedralConfig::operator==().

## towards

unsigned long towards

## [union]

union { ... }

This anonymous union helps to keep code clean. Both the `from` and `towards` data members contain the same OBStereo::Ref (same memory address) but can be used interchangeably to match the context of the code. The real viewing direction is specified by the `view` data member.

## refs

OBStereo::Refs refs

The 3 reference ids.

Referenced by Config(), OBTetrahedralConfig::Convert(), OBMol::CopySubstructure(), OpenBabel::DeleteStereoOnAtom(), OBSmartsMatcher::match(), OBMol::operator+=(), and OBTetrahedralConfig::operator==().

## winding

OBStereo::Winding winding

Referenced by Config(), Config(), OBTetrahedralConfig::Convert(), and OBSmartsMatcher::match().

## view

OBStereo::View view

Specify viewing from or towards the atom with `from/towards` id.

Referenced by Config(), Config(), OBTetrahedralConfig::Convert(), and OBSmartsMatcher::match().

## specified

bool specified

True if the stereochemistry is specified. When false, the described special orientation is only accidental (i.e. unspecified).

Referenced by OpenBabel::CanonicalLabels(), Config(), Config(), OBTetrahedralConfig::Convert(), OBMol::CopySubstructure(), OBBuilder::CorrectStereoAtoms(), and OBSmartsMatcher::match().

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

- tetrahedral.h