OBTetrahedralStereo::Config Struct Reference

Stereochemical configuration for tetrahedral stereocenters. More...

#include <openbabel/stereo/tetrahedral.h>

List of all members.

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

unsigned long from
unsigned long towards
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:


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

Constructor & Destructor Documentation

Config (  ) [inline]

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

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.

_centerThe center (chiral) atom id.
from_or_towardsThe atom id from which to view or view towards (see view).
_refsThe 3 reference ids.
_windingThe winding for the 3 ids in _refs.
_viewSpecify viewing from or towards the atom with from_or_towards id.

Member Function Documentation

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.

True if both Config structs represent the same stereochemistry.
bool operator!= ( const Config other ) const [inline]

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

True if the two Config structs represent a different stereochemistry.

Member Data Documentation

unsigned long from

Referenced by OBSmartsMatcher::match().

unsigned long towards
union { ... }

The 3 reference ids.

Referenced by OBSmartsMatcher::match().

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

Referenced by OBSmartsMatcher::match().

bool specified

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

Referenced by OpenBabel::CanonicalLabels(), and OBSmartsMatcher::match().

The documentation for this struct was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines