From faccda14c0f98333bf7623d4caef00eea7bb1933 Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Mon, 19 Aug 2019 20:53:53 +0200 Subject: temporary commit before branching - Dataset.from_descriptor_csv_file is broken --- lib/model.rb | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) (limited to 'lib/model.rb') 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." -- cgit v1.2.3