Class for handling and storing square planar stereochemistry. More...
#include <openbabel/stereo/squareplanar.h>
Classes | |
struct | Config |
Stereochemical configuration for square planar stereocenters. More... | |
Public Member Functions | |
OBSquarePlanarStereo (OBMol *mol) | |
virtual | ~OBSquarePlanarStereo () |
OBGenericData * | Clone (OBBase *mol) 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 |
SquarePlanar stereochemistry | |
OBStereo::Type | GetType () const |
bool | IsValid () const |
void | SetConfig (const Config &config) |
Config | GetConfig (OBStereo::Shape shape=OBStereo::ShapeU) const |
Config | GetConfig (unsigned long start, OBStereo::Shape shape=OBStereo::ShapeU) const |
bool | operator== (const OBSquarePlanarStereo &other) const |
bool | operator!= (const OBSquarePlanarStereo &other) const |
Query methods to compare stereochemistry. | |
bool | IsTrans (unsigned long id1, unsigned long id2) const |
bool | IsCis (unsigned long id1, unsigned long id2) const |
unsigned long | GetTransRef (unsigned long id) const |
std::vector< unsigned long > | GetCisRefs (unsigned long id) const |
Geniric (for all OBStereo::Type) stereochemistry | |
OBMol * | GetMolecule () const |
void | SetSpecified (bool specified) |
bool | IsSpecified () const |
Static Public Member Functions | |
template<typename ConfigType > | |
static ConfigType | ToConfig (const ConfigType &cfg, unsigned long start, OBStereo::Shape shape=OBStereo::ShapeU) |
Protected Attributes | |
std::string | _attr |
unsigned int | _type |
DataOrigin | _source |
Class for handling and storing square planar stereochemistry.
The OBSquarePlanarStereo class is used to represent square planar stereochemistry. Like all OBTetraPlanarStereo subclasses, it uses the OBStereo::Shape parameters to set/get the reference ids.
This class works with reference ids only, it never uses the molecule to get more information. Like all stereo classes, errors, warnings or info is reported using OBMessageHandler.
OBSquarePlanarStereo | ( | OBMol * | mol ) |
Constructor.
virtual ~OBSquarePlanarStereo | ( | ) | [virtual] |
Destructor.
OBStereo::Type GetType | ( | void | ) | const [inline, virtual] |
bool IsValid | ( | ) | const |
Config GetConfig | ( | OBStereo::Shape | shape = OBStereo::ShapeU ) |
const |
Get the configuration as Config struct.
Config GetConfig | ( | unsigned long | start, |
OBStereo::Shape | shape = OBStereo::ShapeU |
||
) | const |
Get the configuration as Config struct and ensure refs[0] is equal to start
.
bool operator== | ( | const OBSquarePlanarStereo & | other ) | const |
Compare the stereochemistry stored in the Config struct with the stereochemistry specified in the Config struct from other
.
Equal to operator. Comparing OBSquarePlanarStereo::Config structs is done using the information stored in the struct's data members (i.e. center, refs and shape).
There are a number of cases resuling in false being returned:
center
atom ids don't matchrefs
don't share a single common element)In the simplest case where both refs
contain exactly the same elements (OBStereo::ContainsSameRefs()), coould include OBStereo::ImplicitRef), both Config struct are normalized to OBStereo::ShapeU starting with the same element. After this normalization, there are two possible orientations to overlay the shape on the double bond. From the illustration below, it can be seen only refs
[2] has to be checked in order to conclude both Config structs have the same stereochemistry.
1 4 1 4 1------4 \ / | | | C | | | / \ | | | 2 3 2------3 2------3 1 2 3 4 1 2 3 4 | | | | <- in any case, refs[0] & refs[2] remain unchanged 1 2 3 4 1 4 3 2
When comparing a Config struct with explicit hydrogen(s) to one with implicit hydrogen(s), both refs
are also normalized to OBStereo::ShapeU starting with the same common element. This shared element cannot be OBStereo::ImplicitRef. Depending on the position of the OBStereo::ImplicitRef element(s) in the refs
, 3 cases are possible:
refs[2] != OBStereo::ImplicitId: (analog to the case above where they contained the same elements ) 1 2 3 4 | | <- refs[0] & refs[2] remain unchanged 1 H 3 H else: 1 2 3 4 | | <- refs[0] & refs[3] remain unchanged 1 H H 4 1 2 3 4 | | <- refs[0] & refs[1] remain unchanged 1 2 H H
In each case, the orientation of the U shape is also defined since there can be only one OBStereo::ImplicitRef for each side of the double bond.
bool operator!= | ( | const OBSquarePlanarStereo & | other ) | const [inline] |
Not equal to operator. This is the inverse of the Equal to operator==.
OBGenericData* Clone | ( | OBBase * | mol ) | const [virtual] |
Reimplemented from OBGenericData.
bool IsTrans | ( | unsigned long | id1, |
unsigned long | id2 | ||
) | const |
bool IsCis | ( | unsigned long | id1, |
unsigned long | id2 | ||
) | const |
unsigned long GetTransRef | ( | unsigned long | id ) | const |
Get the reference id trans from reference id
.
std::vector<unsigned long> GetCisRefs | ( | unsigned long | id ) | const |
Get the reference id cis from reference id
.
static ConfigType ToConfig | ( | const ConfigType & | cfg, |
unsigned long | start, | ||
OBStereo::Shape | shape = OBStereo::ShapeU |
||
) | [inline, static, inherited] |
OBMol* GetMolecule | ( | ) | const [inline, inherited] |
Get the molecule. This can be used by subclasses when more information is needed (e.g. OBCisTransStereo::GetCisRef, ...).
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] |
void SetAttribute | ( | const std::string & | v ) | [inline, inherited] |
Set the attribute (key), which can be used to retrieve this data.
Referenced by OBGastChrg::AssignPartialCharges(), OBMol::DoTransformations(), OBMol::FindLSSR(), OBMol::FindSSSR(), OBForceField::GetAtomTypes(), OBMol::GetFormula(), OBMol::GetLSSR(), OBForceField::GetPartialCharges(), OBMol::GetSSSR(), OBDescriptor::PredictAndSave(), and OBMol::SetFormula().
void SetOrigin | ( | const DataOrigin | s ) | [inline, inherited] |
Set the origin of this data, which can be used to filter the data.
Referenced by OBGastChrg::AssignPartialCharges(), OpenBabel::CalcSignedVolume(), OBMol::FindAngles(), OBMol::FindLSSR(), OBMol::FindSSSR(), OBMol::FindTorsions(), OBMol::GetFormula(), OBMol::GetLSSR(), OBMol::GetSSSR(), OBDescriptor::PredictAndSave(), and OBMol::SetFormula().
virtual const std::string& GetAttribute | ( | ) | const [inline, virtual, inherited] |
Referenced by OBMoleculeFormat::MakeCombinedMolecule().
unsigned int GetDataType | ( | ) | const [inline, inherited] |
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] |
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().
DataOrigin _source [protected, inherited] |
source of data for accounting
Referenced by OBChiralData::operator=(), OBTorsionData::operator=(), OBAngleData::operator=(), OBConformerData::operator=(), and OBSymmetryData::operator=().