Hi,I found what looks like another gotcha in the Python implementation, so I'm reporting it because it could be useful to somebody else (also because I want to understand if there's something absolutely wrong about what I do).
The following code will result in a segmentation fault when running on the
attached molecule:
-------------------------------------
import pybel
ob = pybel.ob
pmol = pybel.readfile('pdb', 'taxol.pdb').next()
mol = pmol.OBMol
for a in ob.OBMolAtomIter(mol):
valence = a.GetValence()
implicit = a.GetImplicitValence()
if not (valence == implicit):
mol.AddHydrogens(a)
-------------------------------------
Basically, the code adds hydrogens *on the fly* to atoms that miss them.
Adding Begin/EndModify() would not prevent the crash.
I suspect it has something to do with the fact that I'm altering the molecule data
structure while iterating, and that messes up with the iterator.
In fact, the following code works without errors:
-------------------------------------
import pybel
ob = pybel.ob
pmol = pybel.readfile('pdb', 'taxol.pdb').next()
mol = pmol.OBMol
missing = []
for a in ob.OBMolAtomIter(mol):
valence = a.GetValence()
implicit = a.GetImplicitValence()
if not (valence == implicit):
missing.append(a)
for a in missing:
mol.AddHydrogens(a)
-------------------------------------
Now, I understand that a segFault shouldn't happen, but I'm not sure what would be the way
to prevent it. Is this a bug or something that nobody should ever do (and it should be
added to the documentation)?
Thanks!
S
--
Stefano Forli, PhD
Staff Scientist
Molecular Graphics Laboratory
Dept. of Integrative Structural
and Computational Biology, MB-112F
The Scripps Research Institute
10550 North Torrey Pines Road
La Jolla, CA 92037-1000, USA.
tel: +1 (858)784-2055
fax: +1 (858)784-2860
email: [email protected]
http://www.scripps.edu/~forli/
taxol.pdb
Description: application/aportisdoc
------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________ OpenBabel-discuss mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
