Hi everyone,

I'm trying to invert the chirality of a chemical group using Python. I had 
searched quite 
a while before finding something that I could use (despite the fact the 
question showed up 
a few times in the mailing list).

My starting points were a discussion on Blueobelisk[1] and a guide file[2] that 
Noel 
linked in an old mailing list thread but I couldn't find in the current release.
The example in [2] didn't work in my case, and it seems to use deprecated 
.Set*ClockwiseStereo() functions, therefore, I tried the other one that's 
following the 
blessed way (correct me if I'm wrong) with OBStereoFacade.
Here is the code, that works up to a certain point:

-----
import pybel
ob = pybel.ob

smarts = pybel.Smarts("c[C@H](C(=O)O)")
inverse = pybel.Smarts("c[C@@H](C(=O)O)")
outputfile = pybel.Outputfile('smi', 'converted.smi', overwrite=1)

inmol = [ '[O]C(=O)[C@H](c1cccnc1)C' ]
for smi in inmol:
     mol = pybel.readstring('smi', smi)
     old = mol.__str__
     matches = smarts.findall(mol)
     firstmatch = matches[0]
     if matches:
         print "MATCH"
         facade = ob.OBStereoFacade(mol.OBMol)
         for matchingatom in firstmatch:
             ts = facade.GetTetrahedralStereo(matchingatom)
             if ts:
                 print "TS\t", ts
                 config = ts.GetConfig()
                 print "CONFIG\t", config
                 # these commands will raise an error
                 # ob.OBTetrahedralStereo.Invert(config)
                 # ob.OBTetrahedralStereo_invert(config)
                 config.Invert()

                 ts.SetConfig(config)
         assert inverse.findall(mol), "Hasn't been inverted!"
     outputfile.write(mol)
     new = mol.__str__
     print "STILL THE SAME?", old == new

outputfile.close()
-----
When attempting to invert the chirality, it fails with the following error:

  Traceback (most recent call last):
    File "invertChiralityFacade.py", line 24, in <module>
      config.Invert()
  AttributeError: 'OBTetrahedralConfig' object has no attribute 'Invert'

I've tried all combinations mentioned here [3] and none of them worked. 
Besides, it seems 
here is no mention of the Invert function in openbabel.py.
I would really appreciate any input on the matter.

Thanks!

Stefano


[1] 
http://blueobelisk.shapado.com/questions/which-openbabel-dev-version-methods-should-be-used-for-altering-stereochemistry
[2] 
http://www.filewatcher.com/p/openbabel-2.3.0.tar.gz.14321281/openbabel-2.3.0/doc/guide/_sources/UseTheLibrary/PythonExamples.txt.html
[3] https://code.google.com/p/pythonocc/issues/detail?id=20


-- 
  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: (858) 784-2055
     fax: (858) 784-2860
     email: fo...@scripps.edu
     http://www.scripps.edu/~forli/

------------------------------------------------------------------------------
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
Find What Matters Most in Your Big Data with HPCC Systems
Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
Leverages Graph Analysis for Fast Processing & Easy Data Exploration
http://p.sf.net/sfu/hpccsystems
_______________________________________________
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss

Reply via email to