summaryrefslogtreecommitdiff
path: root/lib/model.rb
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2019-08-19 20:53:53 +0200
committerChristoph Helma <helma@in-silico.ch>2019-08-19 20:53:53 +0200
commitfaccda14c0f98333bf7623d4caef00eea7bb1933 (patch)
tree0be6178e5e2fbef81734d4cd6809c6d09cf16aae /lib/model.rb
parentede38a2f1390befe8f7cf8a62fb5432448633d63 (diff)
temporary commit before branching - Dataset.from_descriptor_csv_file is broken
Diffstat (limited to 'lib/model.rb')
-rw-r--r--lib/model.rb30
1 files changed, 25 insertions, 5 deletions
diff --git a/lib/model.rb b/lib/model.rb
index d7b2df6..07759c5 100644
--- a/lib/model.rb
+++ b/lib/model.rb
@@ -109,8 +109,25 @@ module OpenTox
:method => "Algorithm::FeatureSelection.correlation_filter",
},
}
+ elsif substance_classes.first == "OpenTox::Substance" and algorithms[:descriptors][:method] == "properties" and algorithms[:descriptors][:categories]
+ model.algorithms = {
+ :feature_selection => nil,
+ :similarity => { # similarity algorithm
+ :method => "Algorithm::Similarity.weighted_cosine",
+ :min => [0.5,0.2]
+ },
+ }
+ if model.class == LazarClassification
+ model.algorithms[:prediction] = {
+ :method => "Algorithm::Classification.weighted_majority_vote",
+ }
+ elsif model.class == LazarRegression
+ model.algorithms[:prediction] = {
+ :method => "Algorithm::Caret.rf",
+ }
+ end
else
- raise ArgumentError, "Cannot create models for #{substance_classes.first}."
+ raise ArgumentError, "Cannot create models for #{substance_classes.first} #{algorithms.to_json}."
end
# overwrite defaults with explicit parameters
@@ -165,14 +182,17 @@ module OpenTox
end
# parse independent_variables
when "properties"
- categories = model.algorithms[:descriptors][:categories]
feature_ids = []
- categories.each do |category|
+ model.algorithms[:descriptors][:categories].each do |category|
+ p category
Feature.where(category:category).each{|f| feature_ids << f.id.to_s}
end
- properties = model.substances.collect { |s| s.properties }
- property_ids = properties.collect{|p| p.keys}.flatten.uniq
+ p feature_ids
+ property_ids = model.substances.collect { |s| s.properties.keys }.flatten.uniq
+ p property_ids
model.descriptor_ids = feature_ids & property_ids
+ p model.descriptor_ids
+ exit
model.independent_variables = model.descriptor_ids.collect{|i| properties.collect{|p| p[i] ? p[i].median : nil}}
else
raise ArgumentError, "Descriptor method '#{descriptor_method}' not implemented."