Open Babel
3.0
|
#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 | |
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 |
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:
center:
Atom id of the stereogenic center atom.from/towards
: Atom id (or OBStereo::ImplicitRef) for the atom to view from/towards.refs:
The three remaining atom ids (may also contain one OBStereo::NoRef element if from/towards is set to a real atom id).view:
Specify the viewing from or towards the atom with from/towards
id.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.
|
inline |
Default constructor. Initializes the from/torards
and center
to OBStereo::NoRef, the winding
to OBStereo::Clockwise and view
to OBStereo::ViewFrom.
|
inline |
Constructor with all 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. |
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:
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.
|
inline |
Not equal to operator. This is the inverse of the Equal to operator==.
unsigned long center |
unsigned long from |
unsigned long towards |
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.
OBStereo::Refs refs |
The 3 reference ids.
Referenced by OBTetrahedralConfig::Convert(), OBMol::CopySubstructure(), OpenBabel::DeleteStereoOnAtom(), OpenBabel::findMetalloceneBonds(), OBSmartsMatcher::match(), OBMol::operator+=(), and OBTetrahedralConfig::operator==().
OBStereo::Winding winding |
Referenced by OBTetrahedralConfig::Convert(), and OBSmartsMatcher::match().
OBStereo::View view |
Specify viewing from or towards the atom with from/towards
id.
Referenced by OBTetrahedralConfig::Convert(), and 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(), OBTetrahedralConfig::Convert(), OBMol::CopySubstructure(), OBBuilder::CorrectStereoAtoms(), OpenBabel::findMetalloceneBonds(), and OBSmartsMatcher::match().