From a0d99ccf4d2120dff26b2625a4bc1f5eca350f2b Mon Sep 17 00:00:00 2001 From: Andreas Maunz Date: Thu, 29 Mar 2012 10:43:26 +0200 Subject: first commit --- README.md | 14 ++++++++++++++ Rakefile | 8 ++++++++ ext/openbabel/Makefile | 8 ++++++++ ext/openbabel/extconf.rb | 27 +++++++++++++++++++++++++++ lib/openbabel.rb | 1 + openbabel-0.0.1.gem | Bin 0 -> 3584 bytes openbabel-2.3.1.gem | Bin 0 -> 4096 bytes openbabel.gemspec | 17 +++++++++++++++++ test/test_openbabel.rb | 21 +++++++++++++++++++++ 9 files changed, 96 insertions(+) create mode 100644 README.md create mode 100644 Rakefile create mode 100644 ext/openbabel/Makefile create mode 100644 ext/openbabel/extconf.rb create mode 100644 lib/openbabel.rb create mode 100644 openbabel-0.0.1.gem create mode 100644 openbabel-2.3.1.gem create mode 100644 openbabel.gemspec create mode 100644 test/test_openbabel.rb diff --git a/README.md b/README.md new file mode 100644 index 0000000..a86dbc3 --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# openbabel gem + +GEM for [OpenBabel](http://openbabel.sf.net), a chemical library by Noel O'Boyle and others. + +openbabel gem has been tested with ruby 1.9. It only compiles on POSIX systems and requires: + + * cmake + * curl + * tar, sed, make (those should be present anyway) + +## Install +gem install openbabel + +It downloads the sources, compiles the ruby bindings and installs them. Check out [http://cs.maunz.de](http://cs.maunz.de) for more information. diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..debc11c --- /dev/null +++ b/Rakefile @@ -0,0 +1,8 @@ +require 'rake/testtask' + +Rake::TestTask.new do |t| + t.libs << 'test' +end + +desc "Run tests" +task :default => :test diff --git a/ext/openbabel/Makefile b/ext/openbabel/Makefile new file mode 100644 index 0000000..581ad59 --- /dev/null +++ b/ext/openbabel/Makefile @@ -0,0 +1,8 @@ +.PHONY: openbabel.so +openbabel.so: + chmod 755 openbabel.so + +.PHONY: install +install: + mkdir -p ../../lib/openbabel + mv openbabel.so ../../lib/openbabel diff --git a/ext/openbabel/extconf.rb b/ext/openbabel/extconf.rb new file mode 100644 index 0000000..4b6189c --- /dev/null +++ b/ext/openbabel/extconf.rb @@ -0,0 +1,27 @@ +require 'fileutils' +require 'tmpdir' + +ob_num_ver="2.3.1" +ob_ver="openbabel-"+ob_num_ver + +main_dir = Dir.mktmpdir +ob_main_dir=main_dir+"/"+ob_ver +ob_bindings_dir=ob_main_dir+"/scripts/ruby" + +begin + Dir.chdir main_dir do + FileUtils.rm_rf ob_main_dir + `curl -L -d use_mirror=netcologne "http://downloads.sourceforge.net/project/openbabel/openbabel/#{ob_num_ver}/openbabel-#{ob_num_ver}.tar.gz" | tar xz` + end + Dir.chdir ob_main_dir do + `cmake #{ob_main_dir}` + end + Dir.chdir ob_bindings_dir do + `sed -i 's/Init_OpenBabel/Init_openbabel/g' *cpp` + require './extconf.rb' + `make` + end + FileUtils.cp(ob_bindings_dir+"/openbabel.so", "./") +ensure + FileUtils.remove_entry_secure main_dir +end diff --git a/lib/openbabel.rb b/lib/openbabel.rb new file mode 100644 index 0000000..1d53401 --- /dev/null +++ b/lib/openbabel.rb @@ -0,0 +1 @@ +require 'openbabel/openbabel' diff --git a/openbabel-0.0.1.gem b/openbabel-0.0.1.gem new file mode 100644 index 0000000..a9098c9 Binary files /dev/null and b/openbabel-0.0.1.gem differ diff --git a/openbabel-2.3.1.gem b/openbabel-2.3.1.gem new file mode 100644 index 0000000..706f164 Binary files /dev/null and b/openbabel-2.3.1.gem differ diff --git a/openbabel.gemspec b/openbabel.gemspec new file mode 100644 index 0000000..9409965 --- /dev/null +++ b/openbabel.gemspec @@ -0,0 +1,17 @@ +Gem::Specification.new do |s| + s.name = "openbabel" + s.version = "2.3.1" + + s.authors = ["Andreas Maunz"] + s.date = %q{2012-04-03} + s.description = %q{OpenBabel as a GEM} + s.email = %q{andreas@maunz.de} + s.homepage = %q{http://cs.maunz.de} + s.require_paths = ["lib"] + s.rubygems_version = %q{1.6.2} + s.summary = %q{OpenBabel!} + s.test_files = ["test/test_openbabel.rb"] + + s.files = ["Rakefile", "lib/openbabel.rb", "ext/openbabel/Makefile"] + s.extensions = ['ext/openbabel/extconf.rb'] +end diff --git a/test/test_openbabel.rb b/test/test_openbabel.rb new file mode 100644 index 0000000..40f0cf9 --- /dev/null +++ b/test/test_openbabel.rb @@ -0,0 +1,21 @@ +require 'test/unit' +require 'openbabel' +include OpenBabel + +class OBTest < Test::Unit::TestCase + def test_obmol + # Code from http://goo.gl/9H1LZ + + smi2mol = OBConversion.new + smi2mol.set_in_format("smi") + + mol = OBMol.new + smi2mol.read_string(mol, 'CC(C)CCCC(C)C1CCC2C1(CCC3C2CC=C4C3(CCC(C4)O)C)C') # cholesterol, no chirality + mol.add_hydrogens + + assert_equal(mol.num_atoms, 74) + assert_in_delta(mol.get_mol_wt, 386.65, 0.1) + assert_equal(mol.get_formula, "C27H46O") + + end +end -- cgit v1.2.3