Hi,

I have a large set of C++ molecule-manipulation libraries that 
internally use OpenBabel to handle molecule input and structure, and I'm 
trying to wrap them into a Python library using standard Python C API 
techniques. These routines work fine when called from a C program, but 
when called from the .so used for the Python library, 
OBConversion::FindFormat segfaults. I don't know how to follow the code 
path in the source code, as it appears to be generated by macros and 
eventually calls down into an independent set of .so's for each file 
format. Does anyone know how to get the molecule loader routines to work 
from dynamic libraries?

I've put up a minimal test case at 
http://cs.stanford.edu/people/ihaque/ob_bug_repro.tar. You may have to 
adjust the paths in the Makefile to correspond to your Python and OB 
installations. Here's sample output (note that I added a tracing printf 
to OBConversion::FormatFromExt that isn't in the mainline OB 2.3.0 source):

$ python numatoms.py test.sdf
Molecule hasFilename test.sdf
FormatFromExt calling FindFormat with arg sdf
Segmentation fault

$ ./numatoms test.sdf
Filename test.sdf
FormatFromExt calling FindFormat with arg sdf
Detected format: MDL MOL format
Reads and writes V2000 and V3000 versions
Read Options, e.g. -as
  s  determine chirality from atom parity flags
        This is valid only for 0D information. Atom
        parity is always ignored on reading for MOL files
        containing 2D or 3D information.
  T  read title only
  P  read title and properties only
        When filtering an sdf file on title or properties
        only, avoid lengthy chemical interpretation by
        using the T or P option together with copy format.

Write Options, e.g. -x3
  3  output V3000 not V2000 (used for >999 atoms/bonds)
  m  write no properties
  w  recalculate wedge and hash bonds(2D structures only)
  A  output in Alias form, e.g. Ph, if present


Molecule has 27 atoms.


Thanks,

Imran Haque
http://cs.stanford.edu/people/ihaque
iha...@stanford.edu


PS - Using Pybel is not an option here because I don't want to 
reimplement all the C++ functionality in Python - I just need to be able 
to call into it.

------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today
http://p.sf.net/sfu/msIE9-sfdev2dev
_______________________________________________
OpenBabel-discuss mailing list
OpenBabel-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-discuss

Reply via email to