summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Vorgrimmler <vorgrimmlerdavid@gmx.de>2010-07-20 18:38:45 +0200
committerDavid Vorgrimmler <vorgrimmlerdavid@gmx.de>2010-07-20 18:38:45 +0200
commited902f9233ba62a775889d4fdf4e7a7695c23470 (patch)
treec7d163e3c4604b15bbcf9f88fda8f84d07ac73b3
parent3b36d0d8e025a10b7743aaf138e34f134618b1f0 (diff)
Activating property calculation for regression
-rw-r--r--fminer.rb22
-rw-r--r--similarity.rb27
2 files changed, 32 insertions, 17 deletions
diff --git a/fminer.rb b/fminer.rb
index 9242f9f..3554dbb 100644
--- a/fminer.rb
+++ b/fminer.rb
@@ -21,7 +21,7 @@ get '/fminer/?' do
end
post '/fminer/?' do
-
+
halt 404, "Please submit a dataset_uri." unless params[:dataset_uri] and !params[:dataset_uri].nil?
halt 404, "Please submit a feature_uri." unless params[:feature_uri] and !params[:feature_uri].nil?
LOGGER.debug "Dataset: " + params[:dataset_uri]
@@ -48,9 +48,10 @@ post '/fminer/?' do
id = 1 # fminer start id is not 0
compounds = []
+ g_hash = Hash.new# DV: for effect calculation in regression part
@@fminer.Reset
LOGGER.debug "Fminer: initialising ..."
- training_dataset.data.each do |c,features|
+ training_dataset.data.each do |c,features|
begin
smiles = OpenTox::Compound.new(:uri => c.to_s).smiles
rescue
@@ -82,6 +83,7 @@ post '/fminer/?' do
begin
@@fminer.AddCompound(smiles,id)
@@fminer.AddActivity(activity, id)
+ g_hash[id]=activity # DV: insert global information
rescue
LOGGER.warn "Could not add " + smiles + "\t" + act.to_s + " to fminer"
end
@@ -90,6 +92,8 @@ post '/fminer/?' do
id += 1
end
end
+ g_array=g_hash.values # DV: calculation of global median for effect calculation
+ g_median=OpenTox::Utils.median(g_array)
minfreq = (0.06*id).round
@@fminer.SetMinfreq(minfreq)
LOGGER.debug "Fminer: initialised with #{id} compounds, minimum frequency #{minfreq}"
@@ -113,9 +117,19 @@ post '/fminer/?' do
else
effect = 'deactivating'
end
- else
+ else #regression part
ids = f[2]
- effect = 'activating' # AM: Pending: needs analysis of median act
+ # DV: effect calculation
+ f_arr=Array.new
+ f[2].each do |id|
+ f_arr.push(g_hash[id])
+ end
+ f_median=OpenTox::Utils.median(f_arr)
+ if g_median >= f_median
+ effect = 'activating'
+ else
+ effect = 'deactivating'
+ end
end
tuple = {
diff --git a/similarity.rb b/similarity.rb
index 672c03b..060bd2b 100644
--- a/similarity.rb
+++ b/similarity.rb
@@ -1,25 +1,26 @@
require File.join(File.dirname(__FILE__),'dataset.rb')
helpers do
- def find
- # + charges are dropped
- uri = uri(params[:splat].first.gsub(/(InChI.*) (.*)/,'\1+\2')) # reinsert dropped '+' signs in InChIs
- halt 404, "Dataset \"#{uri}\" not found." unless @set = Dataset.find(uri)
- end
+def find
+# + charges are dropped
+uri = uri(params[:splat].first.gsub(/(InChI.*) (.*)/,'\1+\2')) # reinsert dropped '+' signs in InChIs
+halt 404, "Dataset \"#{uri}\" not found." unless @set = Dataset.find(uri)
+end
- def uri(name)
- name = URI.encode(name)
- uri = File.join Dataset.base_uri, name
- end
+def uri(name)
+name = URI.encode(name)
+uri = File.join Dataset.base_uri, name
+end
end
get '/tanimoto/dataset/*/dataset/*/?' do
- find
- @set.tanimoto(uri(params[:splat][1]))
+find
+@set.tanimoto(uri(params[:splat][1]))
end
get '/weighted_tanimoto/dataset/*/dataset/*/?' do
- find
- @set.weighted_tanimoto(uri(params[:splat][1]))
+find
+@set.weighted_tanimoto(uri(params[:splat][1]))
end
+