summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormguetlein <martin.guetlein@gmail.com>2012-06-09 10:27:12 +0200
committermguetlein <martin.guetlein@gmail.com>2012-06-09 10:27:12 +0200
commitb45be18db5701e781943aafe4078a7ad67904975 (patch)
tree5e2aed581e44ad4364c863988693e48dab73f57f
parentf4c7c9325814666ca853f09cb240a278cb6165f8 (diff)
new branch val_exp
-rw-r--r--.gitignore7
-rw-r--r--algorithm_test.rb134
-rw-r--r--fminer.rb42
m---------libfminer0
4 files changed, 170 insertions, 13 deletions
diff --git a/.gitignore b/.gitignore
index e3debba..fa8bcaf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,3 @@
-tmp/*
-log/*
-public/*.owl
-*.*~
+.buildpath
+.loadpath
+.project
diff --git a/algorithm_test.rb b/algorithm_test.rb
new file mode 100644
index 0000000..08c7d4c
--- /dev/null
+++ b/algorithm_test.rb
@@ -0,0 +1,134 @@
+require "rubygems"
+require "sinatra"
+before {
+ request.env['HTTP_HOST']="local-ot/algorithm"
+ request.env["REQUEST_URI"]=request.env["PATH_INFO"]
+}
+
+require "opentox-ruby"
+ENV['RACK_ENV'] = 'test'
+require 'application.rb'
+require 'test/unit'
+require 'rack/test'
+LOGGER = Logger.new(STDOUT)
+LOGGER.datetime_format = "%Y-%m-%d %H:%M:%S "
+
+module Sinatra
+
+ set :raise_errors, false
+ set :show_exceptions, false
+
+ module UrlForHelper
+ BASE = "http://local-ot/algorithm"
+ def url_for url_fragment, mode=:path_only
+ case mode
+ when :path_only
+ raise "not impl"
+ when :full
+ end
+ "#{BASE}#{url_fragment}"
+ end
+ end
+end
+
+class AlgorithmTest < Test::Unit::TestCase
+ include Rack::Test::Methods
+
+ def app
+ Sinatra::Application
+ end
+
+ def test_prediction
+
+ begin
+
+ #dataset_uri = "http://apps.ideaconsult.net:8080/ambit2/dataset/603204?pagesize=100&page=0"
+ #test_dataset_uri = "http://apps.ideaconsult.net:8080/ambit2/dataset/603204?pagesize=100&page=1"
+ #feature_dataset_uri = "http://apps.ideaconsult.net:8080/ambit2/dataset/603204?pagesize=200&page=0"
+ #prediction_feature = "http://apps.ideaconsult.net:8080/ambit2/feature/528321"
+
+ dataset_uri = "http://apps.ideaconsult.net:8080/ambit2/dataset/425254"
+ prediction_feature = "http://apps.ideaconsult.net:8080/ambit2/feature/528321"
+
+# dataset_uri = "http://local-ot/dataset/1488"
+# prediction_feature = "http://local-ot/dataset/1315/feature/Rodent%20carcinogenicity"
+ params = {:dataset_uri=>dataset_uri,
+ :prediction_feature=>prediction_feature,
+ :min_frequency=>7} #multi: 10=>4, 5=>>3000
+ post "/fminer/bbrc",params
+
+# params = {:dataset_uri=>dataset_uri,
+# :prediction_feature=>prediction_feature, :feature_dataset_uri=>feature_dataset_uri}
+# post "/lazar",params
+
+ uri = wait_for_task(last_response.body)
+ puts uri
+
+# model = uri
+# puts "model #{model}"
+# params = {:dataset_uri=>test_dataset_uri}
+# puts OpenTox::RestClientWrapper.post(model,params)
+
+ #puts "features: "+OpenTox::Dataset.find(uri).features.size.to_s
+
+
+# params = {:dataset_uri=>"http://local-ot/dataset/1724",
+# :feature_dataset_uri=>"http://local-ot/dataset/1725"}
+# #post "/fminer/match",params
+# #uri = wait_for_task(last_response.body)
+# #puts uri
+#
+# fminer = File.join(CONFIG[:services]["opentox-algorithm"],"fminer/bbrc")
+# OpenTox::RestClientWrapper.post(fminer,params)
+
+# params = {:dataset_uri=>"http://local-ot/dataset/1488",
+# :prediction_feature=>"http://local-ot/dataset/1315/feature/Rodent%20carcinogenicity",
+# :min_frequency=>50}
+# post "/lazar",params
+# uri = wait_for_task(last_response.body)
+# puts uri
+ puts "features: "+OpenTox::Dataset.find(uri).features.size.to_s
+
+ # fminer = File.join(CONFIG[:services]["opentox-algorithm"],"fminer/bbrc")
+ # OpenTox::RestClientWrapper.post(fminer,params)
+
+ rescue => ex
+ rep = OpenTox::ErrorReport.create(ex, "")
+ puts rep.to_yaml
+ end
+
+ #get "/lazar",nil,'HTTP_ACCEPT' => "application/rdf+xml"
+ #get "/fminer",nil,'HTTP_ACCEPT' => "application/rdf+xml"
+ #OpenTox::Algorithm.Generic.find("http://localhost/algorithm/lazar")
+
+ # puts last_response.body
+
+# webservice = "http://ot.algorithm.de/lazar"
+# headers = {:dataset_uri=>"http://ot.dataset.de/2",
+# :prediction_feature=>"http://localhost/toxmodel/feature%23Hamster%20Carcinogenicity%20(DSSTOX/CPDB)",
+# :feature_generation_uri=>"http://ot.algorithm.de/fminer"}
+#
+# #puts OpenTox::RestClientWrapper.post(webservice,headers)
+# post webservice,headers
+# #puts
+# uri = wait_for_task(last_response.body.to_s)
+# puts uri
+# puts OpenTox::RestClientWrapper.get(uri,:accept => 'application/rdf+xml')
+# #get uri
+
+ end
+
+ # see test_util.rb
+ def wait_for_task(uri)
+ if uri.task_uri?
+ task = OpenTox::Task.find(uri)
+ task.wait_for_completion
+ raise "task failed: "+uri.to_s if task.error?
+ uri = task.result_uri
+ end
+ return uri
+ end
+
+
+
+end \ No newline at end of file
diff --git a/fminer.rb b/fminer.rb
index 95ce469..36e1d73 100644
--- a/fminer.rb
+++ b/fminer.rb
@@ -98,16 +98,38 @@ post '/fminer/:method/match?' do
f_dataset.features.each do |f,m|
res_dataset.add_feature(f,m)
end
- c_dataset.compounds.each do |c|
- res_dataset.add_compound(c)
- comp = OpenTox::Compound.new(c)
- f_dataset.features.each do |f,m|
- if params[:nr_hits] == "true"
+
+ step_width = 100 / c_dataset.compounds.size.to_f
+ count = 0
+
+ if params[:nr_hits] == "true"
+ c_dataset.compounds.each do |c|
+ res_dataset.add_compound(c)
+ comp = OpenTox::Compound.new(c)
+ f_dataset.features.each do |f,m|
hits = comp.match_hits([m[OT.smarts]])
res_dataset.add(c,f,hits[m[OT.smarts]]) if hits[m[OT.smarts]]
- else
- res_dataset.add(c,f,1) if comp.match?(m[OT.smarts])
end
+ count += 1
+ task.progress step_width*count
+ end
+ else
+ LOGGER.debug "match #{c_dataset.compounds.size} compounds with #{f_dataset.features.keys.size} features"
+
+ obconversion = OpenBabel::OBConversion.new
+ obmol = OpenBabel::OBMol.new
+ obconversion.set_in_format('inchi')
+ smarts_pattern = OpenBabel::OBSmartsPattern.new
+ c_dataset.compounds.each do |c|
+ res_dataset.add_compound(c)
+ comp = OpenTox::Compound.new(c)
+ obconversion.read_string(obmol,comp.inchi)
+ f_dataset.features.each do |f,m|
+ smarts_pattern.init(m[OT.smarts])
+ res_dataset.add(c,f,1) if smarts_pattern.match(obmol)
+ end
+ count += 1
+ task.progress step_width*count if count%100==0
end
end
res_dataset.save @subjectid
@@ -167,7 +189,8 @@ post '/fminer/bbrc/?' do
fminer.smi = [] # AM LAST: needed for matching the patterns back
# Add data to fminer
- fminer.add_fminer_data(@@bbrc, params, @value_map)
+ #fminer.add_fminer_data(@@bbrc, params, @value_map)
+ fminer.add_fminer_data(@@bbrc, @value_map)
g_array=fminer.all_activities.values # DV: calculation of global median for effect calculation
g_median=g_array.to_scale.median
@@ -298,7 +321,8 @@ post '/fminer/last/?' do
fminer.smi = [] # AM LAST: needed for matching the patterns back
# Add data to fminer
- fminer.add_fminer_data(@@last, params, @value_map)
+ #fminer.add_fminer_data(@@last, params, @value_map)
+ fminer.add_fminer_data(@@last, @value_map)
raise "No compounds in dataset #{fminer.training_dataset.uri}" if fminer.compounds.size==0
diff --git a/libfminer b/libfminer
-Subproject f9e560dc0a7a5d5af439814ab5fa9ce027a025b
+Subproject 4577dcacb352af3fdca925714dc570de9e02582