OBRing Class Reference

Stores information on rings in a molecule from SSSR perception. More...

#include <openbabel/ring.h>

List of all members.

Public Member Functions

size_t Size () const
size_t PathSize () const
bool IsAromatic ()
void SetType (char *type)
void SetType (std::string &type)
char * GetType ()
unsigned int GetRootAtom ()
bool IsMember (OBAtom *a)
bool IsMember (OBBond *b)
bool IsInRing (int i)
void SetParent (OBMol *m)
OBMolGetParent ()
bool findCenterAndNormal (vector3 &center, vector3 &norm1, vector3 &norm2)

 OBRing ()
 OBRing (std::vector< int > &path, int size)
 OBRing (std::vector< int > &path, OBBitVec set)
 OBRing (const OBRing &src)
OBRingoperator= (const OBRing &src)

Public Attributes

int ring_id
std::vector< int > _path
OBBitVec _pathset

Detailed Description

Stores information on rings in a molecule from SSSR perception.

Ring information beyond atom and bond membership is usually not necessary, but more information can be had about the rings in a molecule. The OBRing class is used to store the information from a Smallest Set of Smallest Rings (SSSR) perception of a molecule. The OBMol member function OBMol::GetSSSR() stores the information it perceives in a vector<OBRing*> inside the molecule. Perception is only done once for a molecule unless the connection table is modified. The following code demonstrates how to extract the SSSR information:

    OBMol mol;

    vector<OBRing*> vr;
    vr = mol.GetSSSR();

OBRings store the atom numbers of the atoms in each of the smallest set of smallest rings in both a vector<int> and an OBBitVec. An example of how to print out the atom numbers present in all SSSR rings is show below:

    vector<OBRing*>::iterator i;
    vector<int>::iterator j;
    vector<OBRing*> *rlist = (vector<OBRing*>*)mol.GetData("RingList");
    for (i = rlist->begin();i != rlist->end();++i)
       for(j = (*i)->_path.begin(); j != (*i)->_path.end(); ++j)
          cout << *j << ' ';
       cout << endl;

will produce something like the following output for benzene:

    1 2 3 4 5 6

Ring information is automatically deleted from an OBMol when it goes out of scope or the OBMol::Clear() member function is called.

Implements blue-obelisk:findSmallestSetOfSmallestRings.

Constructor & Destructor Documentation

OBRing (  )  [inline]
OBRing ( std::vector< int > &  path,
int  size 

Initialize a ring from a set of atom indexes path and with size.

OBRing ( std::vector< int > &  path,
OBBitVec  set 
) [inline]
OBRing ( const OBRing src  ) 

OBRing copy constructor.

src reference to original OBRing object (rhs)

Member Function Documentation

OBRing & operator= ( const OBRing src  ) 

OBRing assignment operator.

src reference to original OBRing object (rhs)
reference to modified OBRing object (lhs)
size_t Size (  )  const [inline]
the size of this ring (i.e., how many atoms in the cycle)

Referenced by OpenBabel::CompareRingSize(), and OBRing::GetRootAtom().

size_t PathSize (  )  const [inline]
the size of this ring (i.e., how many atoms in the cycle)
Use Size() instead
bool IsAromatic (  ) 
whether this ring is aromatic If all atoms in this ring are aromatic, the ring will be considered aromatic
This method uses implicit bonding -- bond info is not stored in OBRing
void SetType ( char *  type  ) 

Set the ring type (see OBRingTyper for more).

void SetType ( std::string &  type  ) 

Set the ring type (see OBRingTyper for more).

char * GetType ( void   ) 
the ring type
unsigned int GetRootAtom (  ) 
the index for the root atom. O for furan, S for thiazole, N for pyrrole. For 6 membered aromatic rings, the first non carbon atom is used for root. For 5 members rings the O, S or N (BOSum=3, valence=3) will be used for root
bool IsMember ( OBAtom a  ) 
Whether atom a is a member of this ring

Referenced by OpenBabel::get_bonds_of_ring().

bool IsMember ( OBBond b  ) 
Whether both atoms in bond b are in this ring
This method uses implicit bonding -- bond info is not stored in OBRing
bool IsInRing ( int  i  )  [inline]
Whether i as an atom index is in this ring

Referenced by OBAromaticTyper::SelectRootAtoms().

void SetParent ( OBMol m  )  [inline]

Set the parent of this ring to m.

Referenced by OBMol::FindLSSR(), and OBMol::FindSSSR().

OBMol* GetParent (  )  [inline]
the parent of this ring, or NULL if none has been defined

Referenced by OBRing::GetRootAtom(), and OBRing::GetType().

bool findCenterAndNormal ( vector3 center,
vector3 norm1,
vector3 norm2 

Set the supplied vectors to the center of this ring, along with the normal (in both directions).

center The center of the ring
norm1 The normal of the best-fit plane for this ring
norm2 -1 * norm1 (i.e., the opposite direction of norm1)
True (success)

Member Data Documentation

int ring_id

a unique id to ensure a stable sort in SSSR determination

Referenced by OpenBabel::CompareRingSize().

the path of this ring as a redundant bit vector

Referenced by OBRing::IsMember(), OBRing::OBRing(), OBRing::operator=(), and OpenBabel::visitRing().

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