I use python binding, executing the following code:
mol = openbabel.OBMol()
conversion = openbabel.OBConversion()
conversion.SetInFormat('sdf')
conversion.ReadFile(mol, 'at-406-s2754.SDF')
# <http://file.selleck.cn/downloads/product-sdf/at-406-s2754.SDF>
mol.AddHydrogens()
stereofacade = openbabel.OBStereoFacade(mol)
for atom in openbabel.OBMolAtomIter(mol):
atomid = atom.GetId() # unsigned long atomId (0-based)
if not stereofacade.HasTetrahedralStereo(atomid):
continue
tetrahedralstereo = stereofacade.GetTetrahedralStereo(atomid)
config = tetrahedralstereo.GetConfig()
print '!!Config:', atomid, config.view, config.winding, \
config.center, config.refs, config.from_or_towards, \
config.specified
The output:
!!Config: 16 1 1 16 (14L, 17L, 20L) 4294967294 True
!!Config: 19 1 1 19 (21L, 20L, 18L) 4294967294 True
!!Config: 25 1 1 25 (27L, 26L, 24L) 4294967294 True
!!Config: 29 1 1 29 (38L, 28L, 37L) 4294967294 True
I think the value 4294967294 for config.from_or_towards is something like -1 or NaN translated from C++. However, from atom.GetId() I know that all atoms, including the new added H, have a id, from 1 to 83. The value 4294967294 may disturb comparison of config objects (not shown). And further, if I save the mol with H and load the saved file, config.from_or_towards is nolonger 4294967294 but a meaningful integer.
I think that is a bug, steming from the lazy updating of OBStereoFacade, which should update automatically when running AddHydrogens.
Does this occur with the latest OB release?
The version installed by Debian should be 2.3.2.
apt-cache show libopenbabel4shows:Package: libopenbabel4
Source: openbabel (2.3.2+dfsg-1)
Version: 2.3.2+dfsg-1+b1
Installed-Size: 11264
Maintainer: Debichem Team debichem-devel@lists.alioth.debian.org
Architecture: amd64