349 lines
10 KiB
Diff
349 lines
10 KiB
Diff
Index: scripts/openbabel-python2.i
|
|
===================================================================
|
|
--- scripts/openbabel-python2.i (revision 0)
|
|
+++ scripts/openbabel-python2.i (revision 2535)
|
|
@@ -0,0 +1,92 @@
|
|
+%module obconversion
|
|
+
|
|
+%{
|
|
+// used to set import/export for Cygwin DLLs
|
|
+#ifdef WIN32
|
|
+#define USING_OBDLL
|
|
+#endif
|
|
+
|
|
+#include <openbabel/base.h>
|
|
+
|
|
+#include <openbabel/generic.h>
|
|
+#include <openbabel/griddata.h>
|
|
+#include <openbabel/math/vector3.h>
|
|
+#include <openbabel/bitvec.h>
|
|
+
|
|
+#include <openbabel/mol.h>
|
|
+#include <openbabel/obconversion.h>
|
|
+#include <openbabel/oberror.h>
|
|
+#include <openbabel/plugin.h>
|
|
+#include <openbabel/fingerprint.h>
|
|
+#include <openbabel/descriptor.h>
|
|
+#include <openbabel/format.h>
|
|
+#include <openbabel/forcefield.h>
|
|
+#include <openbabel/op.h>
|
|
+
|
|
+%}
|
|
+
|
|
+// These methods are renamed to valid Python method names, as otherwise
|
|
+// they cannot be used from Python
|
|
+%rename(inc) *::operator++;
|
|
+%rename(good) *::operator bool;
|
|
+
|
|
+%import <openbabel/babelconfig.h>
|
|
+
|
|
+%import <openbabel/base.h>
|
|
+%import <openbabel/generic.h>
|
|
+%import <openbabel/griddata.h>
|
|
+
|
|
+%import <openbabel/math/vector3.h>
|
|
+%import <openbabel/bitvec.h>
|
|
+
|
|
+%import <openbabel/chains.h>
|
|
+%import <openbabel/typer.h>
|
|
+
|
|
+%include <openbabel/plugin.h>
|
|
+%include <openbabel/oberror.h>
|
|
+%include <openbabel/format.h>
|
|
+%include <openbabel/obconversion.h>
|
|
+%import <openbabel/residue.h>
|
|
+%import <openbabel/internalcoord.h>
|
|
+%import <openbabel/atom.h>
|
|
+%import <openbabel/bond.h>
|
|
+%import <openbabel/mol.h>
|
|
+%import <openbabel/ring.h>
|
|
+%import <openbabel/parsmart.h>
|
|
+
|
|
+%include <openbabel/fingerprint.h>
|
|
+%include <openbabel/descriptor.h>
|
|
+%include <openbabel/forcefield.h>
|
|
+
|
|
+%include <openbabel/op.h>
|
|
+%include <openbabel/bitvec.h>
|
|
+
|
|
+%ignore *::operator=;
|
|
+
|
|
+%include "carrays.i"
|
|
+%array_class(double, doubleArray)
|
|
+%pythoncode %{
|
|
+def double_array(mylist):
|
|
+ """Create a C array of doubles from a list."""
|
|
+ c = doubleArray(len(mylist))
|
|
+ for i,v in enumerate(mylist):
|
|
+ c[i] = v
|
|
+ return c
|
|
+%}
|
|
+
|
|
+# Functions to set the log file to std::cout and std::cerr
|
|
+
|
|
+%ignore OBForceField::SetLogFile(std::ostream *pos);
|
|
+%extend OpenBabel::OBForceField {
|
|
+ void SetLogToStdOut()
|
|
+ {
|
|
+ self->SetLogFile(&std::cout);
|
|
+ }
|
|
+
|
|
+ void SetLogToStdErr()
|
|
+ {
|
|
+ self->SetLogFile(&std::cerr);
|
|
+ }
|
|
+};
|
|
+
|
|
+
|
|
Index: scripts/openbabel-python3.i
|
|
===================================================================
|
|
--- scripts/openbabel-python3.i (revision 0)
|
|
+++ scripts/openbabel-python3.i (revision 2535)
|
|
@@ -0,0 +1,65 @@
|
|
+%module obtemplate
|
|
+
|
|
+%{
|
|
+// used to set import/export for Cygwin DLLs
|
|
+#ifdef WIN32
|
|
+#define USING_OBDLL
|
|
+#endif
|
|
+
|
|
+#include <openbabel/base.h>
|
|
+#include <openbabel/mol.h>
|
|
+#include <openbabel/atom.h>
|
|
+#include <openbabel/bond.h>
|
|
+#include <openbabel/residue.h>
|
|
+#include <openbabel/ring.h>
|
|
+
|
|
+%}
|
|
+
|
|
+%include "std_list.i"
|
|
+%include "std_map.i"
|
|
+%include "std_vector.i"
|
|
+%include "std_string.i"
|
|
+
|
|
+namespace std {
|
|
+%template (vectorInt) vector<int>;
|
|
+%template (vectorUnsignedInt) vector<unsigned int>;
|
|
+%template (vvInt) vector< vector<int> >;
|
|
+%template (vectorDouble) vector<double>;
|
|
+%template (vectorString) vector<std::string>;
|
|
+%template (vVector3) vector<OpenBabel::vector3>;
|
|
+
|
|
+%template (vectorMol) vector<OpenBabel::OBMol>;
|
|
+%template (vectorBond) vector<OpenBabel::OBBond>;
|
|
+%template (vectorResidue) vector<OpenBabel::OBResidue>;
|
|
+%template (vectorRing) vector<OpenBabel::OBRing>;
|
|
+%template (vectorpRing) vector<OpenBabel::OBRing*>;
|
|
+%template (vectorData) vector<OpenBabel::OBGenericData*>;
|
|
+}
|
|
+
|
|
+// These methods are renamed to valid Python method names, as otherwise
|
|
+// they cannot be used from Python
|
|
+%rename(inc) *::operator++;
|
|
+%rename(good) *::operator bool;
|
|
+
|
|
+%import <openbabel/babelconfig.h>
|
|
+
|
|
+%import <openbabel/base.h>
|
|
+%import <openbabel/residue.h>
|
|
+%import <openbabel/atom.h>
|
|
+%import <openbabel/bond.h>
|
|
+%import <openbabel/mol.h>
|
|
+%import <openbabel/ring.h>
|
|
+
|
|
+%ignore *::operator=;
|
|
+
|
|
+%include "carrays.i"
|
|
+%array_class(double, doubleArray)
|
|
+%pythoncode %{
|
|
+def double_array(mylist):
|
|
+ """Create a C array of doubles from a list."""
|
|
+ c = doubleArray(len(mylist))
|
|
+ for i,v in enumerate(mylist):
|
|
+ c[i] = v
|
|
+ return c
|
|
+%}
|
|
+
|
|
Index: scripts/python/setup.py
|
|
===================================================================
|
|
--- scripts/python/setup.py (revision 2534)
|
|
+++ scripts/python/setup.py (revision 2535)
|
|
@@ -60,13 +60,27 @@
|
|
|
|
OBinclude,OBlibrary = find_likely_directory()
|
|
|
|
-obExtension = Extension('_openbabel',
|
|
- ['openbabel_python.cpp'],
|
|
- include_dirs=OBinclude,
|
|
- library_dirs=OBlibrary,
|
|
- libraries=['openbabel']
|
|
- )
|
|
+obCore = Extension('_obcore',
|
|
+ ['obcore.cpp'],
|
|
+ include_dirs=OBinclude,
|
|
+ library_dirs=OBlibrary,
|
|
+ libraries=['openbabel']
|
|
+ )
|
|
|
|
+obConversion = Extension('_obconversion',
|
|
+ ['obconversion.cpp'],
|
|
+ include_dirs=OBinclude,
|
|
+ library_dirs=OBlibrary,
|
|
+ libraries=['openbabel']
|
|
+ )
|
|
+
|
|
+obTemplate = Extension('_obtemplate',
|
|
+ ['obtemplate.cpp'],
|
|
+ include_dirs=OBinclude,
|
|
+ library_dirs=OBlibrary,
|
|
+ libraries=['openbabel']
|
|
+ )
|
|
+
|
|
setup(name='openbabel',
|
|
version='1.3',
|
|
author='Noel O\'Boyle',
|
|
@@ -74,7 +88,7 @@
|
|
url='http://openbabel.sourceforge.net/',
|
|
license='http://www.gnu.org/copyleft/gpl.html',
|
|
py_modules=['openbabel','pybel'],
|
|
- ext_modules=[obExtension],
|
|
+ ext_modules=[obCore, obConversion, obTemplate],
|
|
description = 'openbabel: Python interface to the Open Babel chemistry library',
|
|
classifiers=[
|
|
'Development Status :: 5 - Production/Stable',
|
|
Index: scripts/python/openbabel.py
|
|
===================================================================
|
|
--- scripts/python/openbabel.py (revision 0)
|
|
+++ scripts/python/openbabel.py (revision 2535)
|
|
@@ -0,0 +1,11 @@
|
|
+import sys
|
|
+if sys.platform.find("linux") != -1:
|
|
+ try:
|
|
+ import dl
|
|
+ except ImportError:
|
|
+ import DLFCN as dl
|
|
+ sys.setdlopenflags(sys.getdlopenflags() | dl.RTLD_GLOBAL)
|
|
+
|
|
+import obcore
|
|
+import obconversion
|
|
+import obtemplate
|
|
Index: scripts/Makefile.am
|
|
===================================================================
|
|
--- scripts/Makefile.am (revision 2534)
|
|
+++ scripts/Makefile.am (revision 2535)
|
|
@@ -20,8 +20,9 @@
|
|
|
|
if MAINTAINER_MODE
|
|
if BUILD_SWIG
|
|
-BUILT_SOURCES = perl/openbabel_perl.cpp python/openbabel_python.cpp \
|
|
- java/openbabel_java.cpp
|
|
+BUILT_SOURCES = perl/openbabel_perl.cpp \
|
|
+ java/openbabel_java.cpp \
|
|
+ python/obcore.cpp python/obconversion.cpp python/obtemplate.cpp
|
|
|
|
script_includes = $(top_srcdir)/include/openbabel
|
|
script_headers = $(script_includes)/mol.h $(script_includes)/obconversion.h \
|
|
@@ -34,20 +35,18 @@
|
|
sed -e "s/^@EXPORT.*/& sub dl_load_flags { 0x01 }/" <perl/OpenBabel.pm >perl/OpenBabel.new;
|
|
mv perl/OpenBabel.new perl/OpenBabel.pm;
|
|
|
|
-python/openbabel_python.cpp: openbabel-python.i $(script_headers)
|
|
- $(SWIG) -python -modern -naturalvar -fastinit \
|
|
+python/obconversion.cpp: openbabel-python2.i $(script_headers)
|
|
+ $(SWIG) -small -O -python -templatereduce -naturalvar \
|
|
-c++ -o $@ -I$(top_srcdir)/include -I$(top_builddir)/include $<;
|
|
- echo "import sys" >python/ob.py;
|
|
- echo "if sys.platform.find(\"linux\") != -1:" >>python/ob.py;
|
|
- echo " try:" >>python/ob.py;
|
|
- echo " import dl" >>python/ob.py;
|
|
- echo " except ImportError:" >>python/ob.py;
|
|
- echo " import DLFCN as dl" >>python/ob.py;
|
|
- echo " sys.setdlopenflags(sys.getdlopenflags() | dl.RTLD_GLOBAL)" >>python/ob.py;
|
|
- echo >>python/ob.py;
|
|
- cat python/openbabel.py >>python/ob.py;
|
|
- mv python/ob.py python/openbabel.py;
|
|
|
|
+python/obtemplate.cpp: openbabel-python3.i $(script_headers)
|
|
+ $(SWIG) -small -O -python -templatereduce -naturalvar \
|
|
+ -c++ -o $@ -I$(top_srcdir)/include -I$(top_builddir)/include $<;
|
|
+
|
|
+python/obcore.cpp: openbabel-python.i $(script_headers)
|
|
+ $(SWIG) -small -O -python -templatereduce -naturalvar \
|
|
+ -c++ -o $@ -I$(top_srcdir)/include -I$(top_builddir)/include $<;
|
|
+
|
|
java/openbabel_java.cpp: openbabel-java.i $(script_headers)
|
|
$(SWIG) -java -naturalvar -c++ -o $@ -I$(top_srcdir)/include \
|
|
-I$(top_builddir)/include $<;
|
|
Index: scripts/openbabel-python.i
|
|
===================================================================
|
|
--- scripts/openbabel-python.i (revision 2534)
|
|
+++ scripts/openbabel-python.i (revision 2535)
|
|
@@ -1,4 +1,4 @@
|
|
-%module openbabel
|
|
+%module obcore
|
|
|
|
%{
|
|
// used to set import/export for Cygwin DLLs
|
|
@@ -41,28 +41,6 @@
|
|
|
|
%}
|
|
|
|
-%include "std_list.i"
|
|
-%include "std_map.i"
|
|
-%include "std_vector.i"
|
|
-%include "std_string.i"
|
|
-
|
|
-namespace std {
|
|
-%template (vectorInt) vector<int>;
|
|
-%template (vectorUnsignedInt) vector<unsigned int>;
|
|
-%template (vvInt) vector< vector<int> >;
|
|
-%template (vectorDouble) vector<double>;
|
|
-%template (vectorString) vector<std::string>;
|
|
-%template (vVector3) vector<OpenBabel::vector3>;
|
|
-
|
|
-%template (vectorMol) vector<OpenBabel::OBMol>;
|
|
-%template (vectorBond) vector<OpenBabel::OBBond>;
|
|
-%template (vectorResidue) vector<OpenBabel::OBResidue>;
|
|
-%template (vectorRing) vector<OpenBabel::OBRing>;
|
|
-%template (vectorpRing) vector<OpenBabel::OBRing*>;
|
|
-%template (vectorData) vector<OpenBabel::OBGenericData*>;
|
|
-}
|
|
-
|
|
-
|
|
%inline %{
|
|
OpenBabel::OBPairData *toPairData(OpenBabel::OBGenericData *data) {
|
|
return (OpenBabel::OBPairData *) data;
|
|
@@ -95,11 +73,11 @@
|
|
//# %import <openbabel/bitvec.h>
|
|
%import <openbabel/typer.h>
|
|
|
|
-%include <openbabel/plugin.h>
|
|
+%import <openbabel/plugin.h>
|
|
|
|
-%include <openbabel/oberror.h>
|
|
-%include <openbabel/format.h>
|
|
-%include <openbabel/obconversion.h>
|
|
+%import <openbabel/oberror.h>
|
|
+%import <openbabel/format.h>
|
|
+%import <openbabel/obconversion.h>
|
|
%include <openbabel/residue.h>
|
|
%include <openbabel/internalcoord.h>
|
|
%include <openbabel/atom.h>
|
|
@@ -110,11 +88,11 @@
|
|
%include <openbabel/alias.h>
|
|
%include <openbabel/atomclass.h>
|
|
|
|
-%include <openbabel/fingerprint.h>
|
|
-%include <openbabel/descriptor.h>
|
|
-%include <openbabel/forcefield.h>
|
|
+%import <openbabel/fingerprint.h>
|
|
+%import <openbabel/descriptor.h>
|
|
+%import <openbabel/forcefield.h>
|
|
|
|
-%include <openbabel/op.h>
|
|
+%import <openbabel/op.h>
|
|
|
|
%include <openbabel/bitvec.h>
|
|
|