summaryrefslogtreecommitdiff
path: root/lib/model.rb
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2016-05-27 19:16:16 +0200
committerChristoph Helma <helma@in-silico.ch>2016-05-27 19:16:16 +0200
commitf46ba3b7262f5b551c81fc9396c5b7f0cac7f030 (patch)
tree2fb5efc12c70d62e2befb5ffdd6415656fd9f309 /lib/model.rb
parentcc08e6beda7f7d70ebf6c6929a22d1a0cd7c1a20 (diff)
first correlation of nanoparticle predictions
Diffstat (limited to 'lib/model.rb')
-rw-r--r--lib/model.rb16
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/model.rb b/lib/model.rb
index 3a178a1..18d621b 100644
--- a/lib/model.rb
+++ b/lib/model.rb
@@ -32,12 +32,13 @@ module OpenTox
self.neighbor_algorithm_parameters ||= {}
self.neighbor_algorithm_parameters[:dataset_id] = training_dataset.id
- Algorithm.run(feature_selection_algorithm, self) if feature_selection_algorithm
+ #send(feature_selection_algorithm.to_sym) if feature_selection_algorithm
save
self
end
def correlation_filter
+ self.relevant_features = {}
toxicities = []
substances = []
training_dataset.substances.each do |s|
@@ -49,23 +50,22 @@ module OpenTox
R.assign "tox", toxicities
feature_ids = training_dataset.substances.collect{ |s| s["physchem_descriptors"].keys}.flatten.uniq
feature_ids.each do |feature_id|
- feature_values = substances.collect{|s| s["physchem_descriptors"][feature_id]}
+ feature_values = substances.collect{|s| s["physchem_descriptors"][feature_id].first if s["physchem_descriptors"][feature_id]}
R.assign "feature", feature_values
begin
- #R.eval "cor <- cor.test(-log(tox),-log(feature),use='complete')"
- R.eval "cor <- cor.test(tox,feature,method = 'pearson',use='complete')"
+ R.eval "cor <- cor.test(tox,feature,method = 'pearson',use='pairwise')"
pvalue = R.eval("cor$p.value").to_ruby
if pvalue <= 0.05
r = R.eval("cor$estimate").to_ruby
- relevant_features[feature] = {}
- relevant_features[feature]["pvalue"] = pvalue
- relevant_features[feature]["r"] = r
+ self.relevant_features[feature_id] = {}
+ self.relevant_features[feature_id]["pvalue"] = pvalue
+ self.relevant_features[feature_id]["r"] = r
end
rescue
warn "Correlation of '#{Feature.find(feature_id).name}' (#{feature_values}) with '#{Feature.find(prediction_feature_id).name}' (#{toxicities}) failed."
end
end
- relevant_features.sort!{|a,b| a[1]["pvalue"] <=> b[1]["pvalue"]}.to_h
+ self.relevant_features = self.relevant_features.sort{|a,b| a[1]["pvalue"] <=> b[1]["pvalue"]}.to_h
end
def predict_substance substance