Due to the necessidad to find I number of lone pair orbitals into an Atom, I have found a logarithm that try to find a SIMPLE WAY the molecular geometry for following from Valence Shell ElectronPair Reupulsion or VSEPR model and at the same time its hybridization of atoms in a molecule. The basic premise of the model is that the electrons are paired in a molecule and that the molecule geometry is determined only by the repulsion between the pairs. The geomtry adopted by a molecule is then the one in which the reulsions are minimized.

I have created a new Class HybridizationStateVSEPRMatcher.java into atomType file together with HybridizationStateMatcher.java. I believe that hier is correct. It gives you the hybridization as CDK.Constant. public int getHybridization(Atom atom, AtomContainer container) throws CDKException . T
This class is an experimental alternative to the HybridizationStateMatcher.java. I think its not complet and gives incorrect solutions. (exemple for one Test).

*   #pairs on            hybridization         geomtry             number for CDK.Constants
*    an atom              of the atom
*  ******************************************************************************************
*      2                     sp                               linear                        1
*      3                     sp^2                trigonal planarb                  2
*      4                     sp^3                     tetrahedral                     3
*      5                     sp^3d            rigonal bipyramid                  4
*      6                     sp^3d^2               octahedral                      5
*      7                     sp^3d^3   pentagonal bipyramid                6
This class only works if the central atom is a s-block or p-block element (groups IIA trhough VIIIA), not a transition metal.

It needed the valency of an atom. For this I created a hybridizationVSEPR_atomtypes.xml with the valency of all atoms with exception of the transition metals. It is practicaler than with

<atomType id="H">
    <atom elementType="H">
      <scalar dataType="xsd:integer" dictRef="cdk:valency">1</scalar>

At the same time I have had to modify AtomTypeHandler  Into endElement and startElement one paar line more ( atomType.setValency(Integer.parseInt(currentChars)); )
Also I have had to introduce into AtomType one methode for valency. With its getValency und setVelency
     * Returns the covalent radius for this AtomType.
     * @return The covalent radius for this AtomType
     * @see    #setCovalentRadius
    public double getCovalentRadius() {
        return this.covalentRadius;
*  Sets the the exact electron valency of the AtomType object.
  * @param  electronValency  The new electronValency value
public void setValency(int valency)
this.electronValency = valency;

and by I complete with into CDK.Contanst the rest of possibilities with its hybridization sp^3d^1 (int 4) , sp^3d^2 ( int 5) , and sp^3d^3 (int 6).
And naturally a test for each thing.

I think it will interessant in order to extend the capacity with hybridization and geometry to work.

Miuel Rojas Cherto(miguel.rojas@uni-koeln.de)
Junior Research Group for Applied Bioinformatics(http://almost.cubic.uni-koeln.de/jrg)
Cologne University BioInformatics Center (http://www.cubic.uni-koeln.de)
Zülpicher Str. 47, 50674 Cologne
Tel: +49(0)221-470-7428   Fax: +49 (0) 221-470-7786