diff options
author | Christoph Helma <helma@in-silico.ch> | 2015-08-25 17:20:55 +0200 |
---|---|---|
committer | Christoph Helma <helma@in-silico.ch> | 2015-08-25 17:20:55 +0200 |
commit | f8faf510b4574df1a00fa61a9f0a1681fc2f4857 (patch) | |
tree | acdbe6666ca5f528be368c6f9fdf4d7fb51d031e /lib/regression.rb | |
parent | 8c6c59980bc82dc2177147f2fe34adf8bfbc1539 (diff) |
Experiments added
Diffstat (limited to 'lib/regression.rb')
-rw-r--r-- | lib/regression.rb | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/lib/regression.rb b/lib/regression.rb index 0bc6547..020bb3a 100644 --- a/lib/regression.rb +++ b/lib/regression.rb @@ -19,7 +19,7 @@ module OpenTox class Regression - def self.weighted_average neighbors + def self.weighted_average compound, neighbors weighted_sum = 0.0 sim_sum = 0.0 neighbors.each do |row| @@ -34,6 +34,33 @@ module OpenTox {:value => prediction,:confidence => confidence} end + def self.local_linear_regression compound, neighbors + p neighbors.size + return nil unless neighbors.size > 0 + features = neighbors.collect{|n| Compound.find(n.first).fp4}.flatten.uniq + p features + training_data = Array.new(neighbors.size){Array.new(features.size,0)} + neighbors.each_with_index do |n,i| + #p n.first + neighbor = Compound.find n.first + features.each_with_index do |f,j| + training_data[i][j] = 1 if neighbor.fp4.include? f + end + end + p training_data + + R.assign "activities", neighbors.collect{|n| n[2].median} + R.assign "features", training_data + R.eval "model <- lm(activities ~ features)" + R.eval "summary <- summary(model)" + p R.summary + compound_features = features.collect{|f| compound.fp4.include? f ? 1 : 0} + R.assign "compound_features", compound_features + R.eval "prediction <- predict(model,compound_features)" + p R.prediction + + end + def self.weighted_average_with_relevant_fingerprints neighbors weighted_sum = 0.0 sim_sum = 0.0 |