OBBuilder Class Reference

Class to build 3D structures. More...

#include <openbabel/builder.h>

List of all members.

Public Member Functions

void LoadFragments ()
bool Build (OBMol &mol)

Static Public Member Functions

static vector3 GetNewBondVector (OBAtom *atom)
static vector3 GetNewBondVector (OBAtom *atom, double length)
static bool Connect (OBMol &mol, int a, int b, vector3 &newpos, int bondOrder=1)
static bool Connect (OBMol &mol, int a, int b, int bondOrder=1)
static bool Swap (OBMol &mol, int a, int b, int c, int d)
static void CorrectStereoBonds (OBMol &mol)
static void CorrectStereoAtoms (OBMol &mol)
static OBBitVec GetFragment (OBAtom *atom)
static void AddNbrs (OBBitVec &fragment, OBAtom *atom)


Detailed Description

Class to build 3D structures.

Class for 3D structure generation.

Since:
version 2.2
The OBBuilder class is used for generating 3D structures.

Below is and example which explain the basics.

      //
      // code to read molecule from smiles goes here...
      //
      OBBuilder builder;
      builder.Build(mol);
      //
      // code to write molecule to 3D file format goes here...
      //

Member Function Documentation

void LoadFragments (  ) 

Load fragment info from file, if is it has not already been done.

Referenced by OBBuilder::Build().

vector3 GetNewBondVector ( OBAtom atom  )  [static]

Get the position for a new neighbour on atom.

Parameters:
atom Atom for which we want a new neighbour location.
Returns:
The position for the new atom.

Referenced by OBMol::AddHydrogens(), OBBuilder::Build(), and OBBuilder::Connect().

vector3 GetNewBondVector ( OBAtom atom,
double  length 
) [static]

bool Build ( OBMol mol  ) 

The mol object contains all connectivity information (atomic numbers, bonds, bond orders, ..) but no 3D coordinates. Build generates these coordinates and assigns them.

Parameters:
mol Molecule with the connectivity (from smiles for example). The coordinates are also changed in this mol.

bool Connect ( OBMol mol,
int  a,
int  b,
vector3 newpos,
int  bondOrder = 1 
) [static]

Atoms a and b are part of two fragments that are not connected in mol. Connect will translate and rotate the fragment that contains b so that a and b are seperated by a bond. This bond is also added.

Parameters:
mol The molecule to be modified
a Index for atom in fragment that should not be rotated.
b Index for atom in fragment that should be rotated.
newpos Direction for new bond between a and b
bondOrder Bond order of the new bond between a and b.
Returns:
true if succesful or fails when failed (most likely cause for failing: a and b are in the same fragment, they are connected)

Referenced by OBBuilder::Build(), OBBuilder::Connect(), and OBBuilder::Swap().

bool Connect ( OBMol mol,
int  a,
int  b,
int  bondOrder = 1 
) [static]

Atoms a and b are part of two fragments that are not connected in mol. Connect will translate and rotate the fragment that contains b so that a and b are seperated by a bond. This bond is also added.

Parameters:
mol The molecule to be modified
a Index for atom in fragment that should not be rotated.
b Index for atom in fragment that should be rotated.
bondOrder Bond order of the new bond bewtween a and b.
Returns:
true if succesfull or fails when failed (most likely cause for failing: a and b are in the same fragment, they are connected)

bool Swap ( OBMol mol,
int  a,
int  b,
int  c,
int  d 
) [static]

Swap group b, bonded to a with group d, bonded to c. The bonds a-b and b-c cannot be part of a ring. Atoms a and b will not be moved. Atoms b, d and their connected atoms (after deleting bonds ab and cd) will be translated/rotated.

Example:

    \ /                            /
     b                            d
      \     /     Swap(a,b,c,d)    \     /
       a---x          ---->         a---x 
      /     \     /                /     \     /
     x       c---d                x       c---b
                                               \

This function can also be used to invert chiral centers if a and c are the same atom.

Example

     1                        3
     |      Swap(C,1,C,3)     |
  2>-C-<3      ----->      2>-C-<1
     |                        |
     4                        4

Referenced by OBBuilder::CorrectStereoAtoms().

void CorrectStereoBonds ( OBMol mol  )  [static]

Atoms a and b must be bonded and this bond cannot be part of a ring. The bond will be broken and the smiles fragment will be inserted bewteen the two remaining fragments. The fragment that contains a will not be translated or rotated. Parameters c and d are the index in the smiles to which atoms a and b will be connected respectivly.

Currently only corrects double bond chemistry comming from smiles. (OBBond::IsUp() / OBBond::IsDown())

Referenced by OBBuilder::Build().

void CorrectStereoAtoms ( OBMol mol  )  [static]

Currently only corrects atom chirality comming from smiles. (OBAtom::IsClockwize() / OBBond::IsAntiClockwise())

Referenced by OBBuilder::Build().

OBBitVec GetFragment ( OBAtom atom  )  [static]

Get the fragment to which this atom belongs.

Parameters:
atom Atom in the fragment.
Returns:
The OBBitVec defining the fragment to which a belongs.

Referenced by OBBuilder::Build(), and OBBuilder::Connect().

void AddNbrs ( OBBitVec fragment,
OBAtom atom 
) [static]

Referenced by OBBuilder::GetFragment().


The documentation for this class was generated from the following files: