From 94d88944b7d2953960e03c86eb78e697822fbc9f Mon Sep 17 00:00:00 2001 From: Andreas Maunz Date: Tue, 28 Jun 2011 11:37:29 +0200 Subject: Effect calculation unified for LAST and BBRC --- fminer.rb | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/fminer.rb b/fminer.rb index 6ce4c42..fe7f256 100644 --- a/fminer.rb +++ b/fminer.rb @@ -140,10 +140,8 @@ post '/fminer/bbrc/?' do id = 1 # fminer start id is not 0 compounds = [] - db_class_sizes=Array.new# AM effect calc - #nr_classes={} - #nr_total=0 - all_activities = Hash.new# DV: for effect calculation in regression part + db_class_sizes = Array.new # AM: effect + all_activities = Hash.new # DV: for effect calculation in regression part training_dataset.data_entries.each do |compound,entry| begin @@ -179,9 +177,7 @@ post '/fminer/bbrc/?' do else if prediction_feature.feature_type == "classification" activity= @value_map.invert[value].to_i - 1 # activities are mapped to 1..n - db_class_sizes[activity].nil? ? db_class_sizes[activity]=1 : db_class_sizes[activity]+=1 # AM effect calc - #nr_classes[activity].nil? ? nr_classes[activity]=0 : nr_classes[activity]+=1 - #nr_total+=1 + db_class_sizes[activity].nil? ? db_class_sizes[activity]=1 : db_class_sizes[activity]+=1 # AM effect elsif prediction_feature.feature_type == "regression" activity= take_logs ? Math.log10(value.to_f) : value.to_f end @@ -329,9 +325,11 @@ post '/fminer/last/?' do id = 1 # fminer start id is not 0 compounds = [] smi = [] # AM LAST: needed for matching the patterns back - nr_classes = [] - nr_total=0 - all_activities = Hash.new #DV: for effect calculation (class and regr) + + #nr_classes = [] + #nr_total=0 + db_class_sizes = Array.new # AM: effect + all_activities = Hash.new # DV: for effect calculation (class and regr) training_dataset.data_entries.each do |compound,entry| begin @@ -366,8 +364,9 @@ post '/fminer/last/?' do else if prediction_feature.feature_type == "classification" activity= @value_map.invert[value].to_f - nr_classes[activity].nil? ? nr_classes[activity]=0 : nr_classes[activity]+=1 - nr_total+=1 + db_class_sizes[activity.to_i-1].nil? ? db_class_sizes[activity.to_i-1]=1 : db_class_sizes[activity.to_i-1]+=1 + #nr_classes[activity].nil? ? nr_classes[activity]=0 : nr_classes[activity]+=1 + #nr_total+=1 elsif prediction_feature.feature_type == "regression" #activity= take_logs ? Math.log10(value.to_f) : value.to_f activity = value.to_f @@ -414,7 +413,11 @@ post '/fminer/last/?' do effect = (p_value > 0) ? "activating" : "deactivating" else p_value = @@last.ChisqTest(all_activities.values, feat_hash.values).to_f - effect = "unknown" + g=Array.new + @value_map.each { |y,act| g[y-1]=Array.new } + feat_hash.each { |x,y| g[y-1].push(x) } + max = OpenTox::Algorithm.effect(g, db_class_sizes) + effect = @value_map[(g.size-max)].to_s end feature_uri = File.join feature_dataset.uri,"feature","last", features.size.to_s unless features.include? smarts -- cgit v1.2.3