summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2010-12-03 14:34:25 +0100
committerChristoph Helma <helma@in-silico.ch>2010-12-03 14:34:25 +0100
commitb6df3d3f4c58e9dec6f7fedb2a9498f7443a8a03 (patch)
treefa1068f48b85309e9d78bdad8ede1b1609f8d7c9
parent6cc34db9dfed2d49286d9c2a26fc6563c66b38a0 (diff)
OpenBabel descriptors added
-rw-r--r--fminer.rb2
m---------libfminer0
-rw-r--r--openbabel.rb65
3 files changed, 40 insertions, 27 deletions
diff --git a/fminer.rb b/fminer.rb
index 06d66fb..df91701 100644
--- a/fminer.rb
+++ b/fminer.rb
@@ -6,7 +6,6 @@ ENV['FMINER_PVALUES'] = 'true'
@@last = Last::Last.new
# Get list of fminer algorithms
-#
# @return [text/uri-list] URIs of fminer algorithms
get '/fminer/?' do
response['Content-Type'] = 'text/uri-list'
@@ -56,7 +55,6 @@ get "/fminer/last/?" do
end
# Run bbrc algorithm on dataset
-#
# @param [String] dataset_uri URI of the training dataset
# @param [String] prediction_feature URI of the prediction feature (i.e. dependent variable)
# @param [optional] parameters BBRC parameters, accepted parameters are
diff --git a/libfminer b/libfminer
-Subproject e0eee431ecb954328ff64e3cc48840c7003a276
+Subproject 6e35cacd8da45f21c4039591d339a74af9a44a6
diff --git a/openbabel.rb b/openbabel.rb
index a261866..a5a8841 100644
--- a/openbabel.rb
+++ b/openbabel.rb
@@ -1,28 +1,43 @@
-get '/openbabel/:smiles/:property/?' do
+# Calculate OpenBabel descriptors
+# Supports the following OpenBabel methods (see OpenBabel API http://openbabel.org/api/2.2.0/)
+# - NumAtoms Number of atoms
+# - NumBonds Number of bonds
+# - NumHvyAtoms Number of heavy atoms
+# - NumResidues Number of residues
+# - NumRotors Number of rotatable bonds
+# - GetFormula Stochoimetric formula
+# - GetEnergy Heat of formation for this molecule (in kcal/mol)
+# - GetMolWt Standard molar mass given by IUPAC atomic masses (amu)
+# - GetExactMass Mass given by isotopes (or most abundant isotope, if not specified)
+# - GetTotalCharge Total charge
+# - HBA1 Number of Hydrogen Bond Acceptors 1 (JoelLib)
+# - HBA2 Number of Hydrogen Bond Acceptors 2 (JoelLib)
+# - HBD Number of Hydrogen Bond Donors (JoelLib)
+# - L5 Lipinski Rule of Five
+# - logP Octanol/water partition coefficient
+# - MR Molar refractivity
+# - MW Molecular Weight
+# - nF Number of Fluorine Atoms
+# - nHal Number of halogen atoms
+# - spinMult Total Spin Multiplicity
+# - TPSA Topological polar surface area
+# @param [URI] compound_uri Compound URI
+# @return [Sting] descriptor value
+post '/openbabel/:property' do
obconversion = OpenBabel::OBConversion.new
obmol = OpenBabel::OBMol.new
- obconversion.set_in_and_out_formats 'smi', 'can'
- case params[:property]
- when 'logP'
- #logP = OpenBabel::OBLogP.new
- #logP.predict(obmol)
- "not yet implemented"
- when 'psa'
- #psa = OpenBabel::OBPSA.new
- "not yet implemented"
- when 'mr'
- #mr = OpenBabel::OBMR.new
- "not yet implemented"
- else
- begin
- obconversion.read_string obmol, params[:smiles]
- rescue
- halt 404, "Incorrect Smiles string #{params[:smiles]}"
- end
- begin
- eval("obmol.#{params[:property]}").to_s
- rescue
- halt 404, "Could not calculate property #{params[:property]}"
- end
- end
+ compound = OpenTox::Compound.new params[:compound_uri]
+ obconversion.set_in_and_out_formats 'inchi', 'can'
+ obconversion.read_string obmol, compound.to_inchi
+ obmol_methods = ["num_atoms", "num_bonds", "num_hvy_atoms", "num_residues", "num_rotors", "get_formula", "get_energy", "get_mol_wt", "get_exact_mass", "get_total_charge", "get_total_spin_multiplicity"]
+
+ descriptor_methods = [ "HBA1", "HBA2", "HBD", "L5", "logP", "MR", "MW", "nF", "nHal", "spinMult", "TPSA" ]
+ if obmol_methods.include? params[:property].underscore
+ eval("obmol.#{params[:property].underscore}").to_s
+ elsif descriptor_methods.include? params[:property]
+ descriptor = OpenBabel::OBDescriptor.find_type(params[:property])
+ descriptor.predict(obmol).to_s
+ else
+ halt 404, "Cannot calculate property #{params[:property]} with OpenBabel"
+ end
end