diff options
-rw-r--r-- | fminer.rb | 22 | ||||
-rw-r--r-- | similarity.rb | 27 |
2 files changed, 32 insertions, 17 deletions
@@ -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 + |