University of Tuebingen Lehrstuhl Kognitive Systeme, Prof Dr. Zell
print version HomeJOELib JOELib Tutorial Basics Atoms
 
Home
Introduction
Users/Publications
Screenshots
JOELib Tutorial
Contents
Preface
Installation
Basics
Atoms
Bonds
Molecule
Functionalities
Utilities
Maintenance
Descriptors
Algorithms
Interfaces
Interfaces JNI
Interface ML
Documentation
Examples
Applications
Support
Structures
Bibliography
Glossary
Index
JOELib2 Tutorial
JOELib API
JOELib2 API
Download
Mailing lists
License
Acknowledgements
Links
 
JOELib@FM
JOELib@SF
PMD Online
PMD Offline
CVS Repository
 
Research at WSI-RA
Software at WSI-RA
WSI-RA Department
Faculty
University
 

Chapter 2. JOELib basics

Table of Contents
Atoms
Bonds
Molecule

Atoms

Accessing atoms

Atoms V in joelib.molecule.JOEAtom are represented as nodes of a molecular graph G.

For getting all atoms of a molecule you can use an iterator or a simple index access.

Example 2-1. Using an iterator for accessing atoms

JOEAtom atom;
AtomIterator ait = molecule.atomIterator();
while(ait.hasNext())
{
  atom = ait.nextAtom();
}

Example 2-2. Using the atom index for accessing atoms

JOEAtom atom;
for(int index=1;index<=molecule.numAtoms();index++)
{
  atom = molecule.getAtom(index);
}

Chemical properties

Atoms V are in fact unlabeled nodes of a molecular graph G. The chemical atom properties are assigned with a set A={α11,...,α|A|} of labelling functions αi:G,V,Aj≠i→WV,i. We can distinguish between a set of critical labelling functions Achem (chemical kernel) and all other optional chemical properties.

  • The chemical kernel or chemical base knowledge uses the following functions for which the dependencies are also shown:

    • The chemical element αelem(V). This atom property can be accessed by JOEElementTable.instance().getSymbol(atom.getAtomicNum()).

    • Valence or bond order αval(G,V). This atom property can be accessed by atom.getValence().

    • Ring size αring(G,V) which is based on a ring search algorithm, e.g. the Smallest Set of Smallest Ring (SSSR) [fig96]. This atom property can be accessed by atom.isInRing() or atom.isInRingSize(int).

    • Binary aromaticity flag αarom(G,V,αelemval). This atom property can be accessed by atom.isAromatic().

    • Hybridisation αhyb(G,V,αvalarom). This atom property can be accessed by atom.getHyb().

    • Chirality informations αstereo(G,V,αvalhyb). This atom property can be accessed by atom.isClockwise() or atom.isAntiClockwise().

    • The implicite valence (hydrogen saturation) αiVal(G,V,αvalhyb). This atom property can be accessed by atom.getImplicitValence().

    So we obtain as chemical base knowledge (chemical kernel) Achem(lib=JOELib,kernelID)={αelemvalringaromhybstereoiVal}

  • Other atom properties are available through look-up tables or other algorithms based on Achem(lib=JOELib,kernelID). The most important one is the atom type αtype(G,V,Achem) which uses the Programmable ATom TYper (PATTY) [bs93] based on the Smiles ARbitrary Target Specification (SMARTS) substructure search [smarts]. By using an internal look-up table (joelib.data.JOETypeTable) we can now create easily chemical file formats, like Sybyl MOL2 or AMBER.

    More atom property assignment functions and algorithms are can be found in the Section called Atom properties in Chapter 5.

All atom properties are automatically assigned by the expert systems (the Section called Assigning atom types, aromatic flags, hybridization and hydrogens in Chapter 3). We can also see that there is much room for interpreting the single assignment functions and we strongly recommend an indentifier and version number for each single function. We have introduced also a chemical kernel identifier, especially to grant identically results for all kind of algorithms, like SMARTS substructure search, similarity searches, descriptor calculations and much more.

If you are going to work on graph based algorithms: please remember that typical chemical atom types are ONLY a special case of much more labels for the atoms of molecular structures. The number is possibly infinite or at least a very large finite number, and we have also properties like atom.isHeteroatom(), atom.isAxial() and much more. Especially if you take also calculated atom properties, like e.g. CESTATE, into account. So sooner or later we will face the combinatorial optimization problem to find a good set of atom property assignment functions to fit to our problem, e.g. finding descriptors using atom properties for model building, similarity searches, and so on. Finally, we can see that there is a strong relationship between atom label assignment functions and the NP complete feature selection problem [wz03, wfz04a,wfz04b,fwz04].

Internally atoms have special atom types, which were defined as SMARTS [smarts] patterns in the joelib/data/plain/atomtype.txt-file. These types can be used to develop descriptors or to export molecules easily to other file formats (e.g. force field or ab inito programs). For the last task there is the joelib.data.JOETypeTable helper class available, which uses the default converting types defined in joelib/data/plain/types.txt. The atom properties can be changed with standard set and get methods.


Last changes: 08.12.2010, 16:50 CET (UTC/GMT +1 hour) wegner.
http://www.ra.cs.uni-tuebingen.de/software/joelib/tutorial/basics/basics.html
2003 University of Tübingen, Germany