diff options
author | mr <mr@mrautenberg.de> | 2010-09-03 12:14:36 +0200 |
---|---|---|
committer | mr <mr@mrautenberg.de> | 2010-09-03 12:14:36 +0200 |
commit | c3880fb2a96f61dd0bf01bea95533139a7d2bbdb (patch) | |
tree | 7c744634497982c1f044b19d590efdf4d1826c96 /fminer.rb | |
parent | 9c58dbf3b903f1b2b7343acdf7875fb7115e4bb3 (diff) | |
parent | 76e58af42960fbe9357f899ffcc2588bfc756ed9 (diff) |
Merge remote branch 'helma/master' into development
Diffstat (limited to 'fminer.rb')
-rw-r--r-- | fminer.rb | 50 |
1 files changed, 31 insertions, 19 deletions
@@ -1,27 +1,24 @@ ENV['FMINER_SMARTS'] = 'true' +ENV['FMINER_NO_AROMATIC'] = 'true' ENV['FMINER_PVALUES'] = 'true' @@fminer = Bbrc::Bbrc.new get '/fminer/?' do - if File.exists?('public/fminer.owl') - rdf = File.read('public/fminer.owl') - else - owl = OpenTox::Owl.create 'Algorithm', url_for('/fminer',:full) - owl.set 'title',"fminer" - owl.set 'creator',"http://github.com/amaunz/fminer2" - owl.parameters = { - "Dataset URI" => { :scope => "mandatory", :value => "dataset_uri" }, - "Feature URI for dependent variable" => { :scope => "mandatory", :value => "feature_uri" } - } - rdf = owl.rdf - File.open('public/fminer.owl', 'w') {|f| f.print rdf} - end + owl = OpenTox::Owl.create 'Algorithm', url_for('/fminer',:full) + owl.set 'title',"fminer" + owl.set 'creator',"http://github.com/amaunz/fminer2" + owl.parameters = { + "Dataset URI" => { :scope => "mandatory", :value => "dataset_uri" }, + "Feature URI for dependent variable" => { :scope => "mandatory", :value => "feature_uri" } + } + rdf = owl.rdf + File.open('public/fminer.owl', 'w') {|f| f.print rdf} response['Content-Type'] = 'application/rdf+xml' rdf 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] @@ -36,7 +33,7 @@ post '/fminer/?' do end halt 404, "No feature #{params[:feature_uri]} in dataset #{params[:dataset_uri]}" unless training_dataset.features and training_dataset.features.include?(params[:feature_uri]) - task_uri = OpenTox::Task.as_task do + task_uri = OpenTox::Task.as_task("Mine features", url_for('/fminer',:full)) do feature_dataset = OpenTox::Dataset.new title = "BBRC representatives for " + training_dataset.title @@ -51,9 +48,11 @@ 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 + #@@fminer.SetChisqSig(0.99) 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 @@ -85,6 +84,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 @@ -93,7 +93,9 @@ post '/fminer/?' do id += 1 end end - minfreq = (0.06*id).round + g_array=g_hash.values # DV: calculation of global median for effect calculation + g_median=OpenTox::Utils.median(g_array) + minfreq = (0.02*id).round @@fminer.SetMinfreq(minfreq) LOGGER.debug "Fminer: initialised with #{id} compounds, minimum frequency #{minfreq}" @@ -116,9 +118,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 = { |