OBTetraNonPlanarStereo Class Reference
[Stereochemistry]

Base class for handling and storing non-planar stereochemistry with 4 reference atom ids. More...

#include <openbabel/stereo/tetranonplanar.h>

Inheritance diagram for OBTetraNonPlanarStereo:
OBStereoBase OBGenericData OBTetrahedralStereo

List of all members.

Public Member Functions

 OBTetraNonPlanarStereo (OBMol *mol)
virtual ~OBTetraNonPlanarStereo ()
virtual OBGenericDataClone (OBBase *) const
void SetAttribute (const std::string &v)
void SetOrigin (const DataOrigin s)
virtual const std::string & GetAttribute () const
unsigned int GetDataType () const
virtual const std::string & GetValue () const
virtual DataOrigin GetOrigin () const
Geniric (for all OBStereo::Type) stereochemistry
OBMolGetMolecule () const
virtual OBStereo::Type GetType () const =0
void SetSpecified (bool specified)
bool IsSpecified () const

Static Public Member Functions

template<typename ConfigType >
static ConfigType ToConfig (const ConfigType &cfg, unsigned long from_or_towards, OBStereo::Winding winding=OBStereo::Clockwise, OBStereo::View view=OBStereo::ViewFrom)
template<typename ConfigType >
static void ChangeWinding (ConfigType &cfg)
template<typename ConfigType >
static void ChangeView (ConfigType &cfg)
template<typename ConfigType >
static void Invert (ConfigType &cfg)

Protected Attributes

std::string _attr
unsigned int _type
DataOrigin _source

Detailed Description

Base class for handling and storing non-planar stereochemistry with 4 reference atom ids.

tetranonplanar.png

Combinations

The four reference ids can be treated like a sequence of 4 numbers. Each element can only occur once. This means there are 4! = 24 combinations.

These are the 24 possible combinations or permutations.

 1234   2134   3124   4123
 1243   2143   3142   4132
 1324   2314   3214   4213
 1342   2341   3241   4231
 1423   2413   3412   4312
 1432   2431   3421   4321

However, when dealing with tetrahedral stereochemistry, it is often easier to visualize by viewing from/towards one of the reference atoms to/from the center atom. This reduces the 24 possible combinations to 3! = 6.

 123   321
 231   213
 312   132

These can be devided in 2 groups: clockwise or anti-clockwise

 clockwise: 123, 231, 312
 anti-clockwise: 321, 213, 132

Since subclass ConfigType structs accept refs viewing from/towards any atom, it is needed to have some rules for converting.

A single permutation of two consecutive elements in a sequence of 3 changes the winding. All permutations can be expressed as a combination of consecutive permutations. The number of consecutive permutations can be calculated from the difference in inversions (NumInversions()).

If we exchange the from atom with another atom in the sequence, the oddness of the difference in inversions between the 2 sequences is calculated. If this is even, no extra permutation is needed. If this is odd, an extra permutation is needed.

Switching between viewing from and viewing towards reverses the winding.

Like all stereo classes, errors, warnings or info is reported using OBMessageHandler.

Since:
version 2.3

Constructor & Destructor Documentation

Constructor

Parameters:
molThe molecule.
virtual ~OBTetraNonPlanarStereo (  ) [virtual]

Destructor.


Member Function Documentation

static ConfigType ToConfig ( const ConfigType &  cfg,
unsigned long  from_or_towards,
OBStereo::Winding  winding = OBStereo::Clockwise,
OBStereo::View  view = OBStereo::ViewFrom 
) [inline, static]

Convert a ConfigType struct from any View/Winding to the desired representation.

This is a template method which works on ConfigType structs from OBTetraNonPlanar subclasses. The subclasses can decide what data member are needed to store the stereogenic unit (i.e. 1 atom for tetrahedral, 3 for allene like, ...) and still use this generic method to handle the real stereochemistry.

A ConfigType struct should at least have the following data members:

 class SomeNonPlanarStereo : public TetraNonPlanarStereo
 {
   public:
     struct Config
     {
       // constructor(s) are recommended!

       // subclass specific stereogenic unit
       ...

       union {
         unsigned long from;
         unsigned long towards;
       };
       OBStereo::Refs refs;
       OBStereo::Winding winding;
       OBStereo::View view;
     };
 };
Parameters:
cfgA ConfigType struct from a OBTetraNonPlanar subclass.
from_or_towardsThe desired from/towards reference id (see view)
windingThe desired winding.
viewThe desired viewing direction.
Returns:
The ConfigType struct with desired from/towards, winding and view.
static void ChangeWinding ( ConfigType &  cfg ) [inline, static]

Change the winding of the ConfigType struct while maintaining the stereochemistry.

static void ChangeView ( ConfigType &  cfg ) [inline, static]

Change the view of the ConfigType struct while maintaining the stereochemistry.

static void Invert ( ConfigType &  cfg ) [inline, static]

Invert the stereochemistry of the ConfigType struct.

OBMol* GetMolecule (  ) const [inline, inherited]

Get the molecule. This can be used by subclasses when more information is needed (e.g. OBCisTransStereo::GetCisRef, ...).

virtual OBStereo::Type GetType (  ) const [pure virtual, inherited]

Reimplemented by subclasses to return the type defined in OBStereo::Type.

Implemented in OBCisTransStereo, OBSquarePlanarStereo, and OBTetrahedralStereo.

void SetSpecified ( bool  specified ) [inline, inherited]

Set whether the stereochemistry is specified. Comparing a specified OBStereoBase derived class (or it's Config struct) with an unspecified one, always returns true.

bool IsSpecified (  ) const [inline, inherited]
Returns:
True if the stereochemistry is specified.
void SetAttribute ( const std::string &  v ) [inline, inherited]
virtual const std::string& GetAttribute (  ) const [inline, virtual, inherited]
Returns:
The attribute (key), which can be used to retrieve this data

Referenced by OBMoleculeFormat::MakeCombinedMolecule().

unsigned int GetDataType (  ) const [inline, inherited]
Returns:
the data type for this object as defined in OBGenericDataType
virtual const std::string& GetValue (  ) const [inline, virtual, inherited]

Base class returns a default value (the attribute type) but should never be called.

Reimplemented in OBCommentData, and OBPairData.

Referenced by OBDepict::DrawMolecule(), OBDescriptor::FilterCompare(), and OBDescriptor::GetValues().

virtual DataOrigin GetOrigin (  ) const [inline, virtual, inherited]

Member Data Documentation

std::string _attr [protected, inherited]

attribute tag (e.g., "UnitCell", "Comment" or "Author")

Referenced by OBRotamerList::Clone(), and OBNasaThermoData::OBNasaThermoData().

unsigned int _type [protected, inherited]

attribute type -- declared for each subclass

Referenced by OBRotamerList::Clone(), and OBNasaThermoData::OBNasaThermoData().


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