diff options
author | Christoph Helma <helma@in-silico.ch> | 2015-09-24 13:09:20 +0200 |
---|---|---|
committer | Christoph Helma <helma@in-silico.ch> | 2015-09-24 13:09:20 +0200 |
commit | 341e74ee91181c4450b56ed8c5ae2ea9771ad1f0 (patch) | |
tree | e709fe92e290f8b7764dd803c8a23589a0b986f2 | |
parent | d5bf97c2cb999539c56bf59aa1d7d3286745be84 (diff) |
fixed missing model_algorithm in experiments
-rw-r--r-- | lib/experiment.rb | 8 | ||||
-rw-r--r-- | test/experiment.rb | 51 |
2 files changed, 50 insertions, 9 deletions
diff --git a/lib/experiment.rb b/lib/experiment.rb index 616a273..6910139 100644 --- a/lib/experiment.rb +++ b/lib/experiment.rb @@ -10,12 +10,10 @@ module OpenTox dataset = Dataset.find(dataset_id) results[dataset_id.to_s] = [] model_settings.each do |setting| - model_algorithm = setting.delete :model_algorithm + setting = setting.dup + model_algorithm = setting.delete :model_algorithm #if setting[:model_algorithm] model = Object.const_get(model_algorithm).create dataset, setting - #model.prediction_algorithm = setting[:prediction_algorithm] if setting[:prediction_algorithm] - #model.neighbor_algorithm = setting[:neighbor_algorithm] if setting[:neighbor_algorithm] - #model.neighbor_algorithm_parameters = setting[:neighbor_algorithm_parameter] if setting[:neighbor_algorithm_parameter] - p model + $logger.debug model model.save repeated_crossvalidation = RepeatedCrossValidation.create model results[dataset_id.to_s] << {:model_id => model.id, :repeated_crossvalidation_id => repeated_crossvalidation.id} diff --git a/test/experiment.rb b/test/experiment.rb index 76a0498..2c4073d 100644 --- a/test/experiment.rb +++ b/test/experiment.rb @@ -63,7 +63,7 @@ class ExperimentTest < MiniTest::Test end def test_regression_fingerprints -=begin +#=begin datasets = [ "EPAFHM.medi.csv", #"LOAEL_mmol_corrected_smiles.csv" @@ -90,10 +90,10 @@ class ExperimentTest < MiniTest::Test end end experiment.run -=end -#=begin - experiment = Experiment.find '56029cb92b72ed673d000000' #=end +=begin + experiment = Experiment.find '56029cb92b72ed673d000000' +=end p experiment.id experiment.results.each do |dataset,result| result.each do |r| @@ -139,4 +139,47 @@ class ExperimentTest < MiniTest::Test p experiment puts experiment.report.to_yaml end + + def test_multiple_datasets + datasets = [ + "EPAFHM.medi.csv", + "LOAEL_mmol_corrected_smiles.csv" + ] + min_sims = [0.3] + types = ["FP2"] + experiment = Experiment.create( + :name => "Fingerprint regression with mutiple datasets #{datasets}.", + :dataset_ids => datasets.collect{|d| Dataset.from_csv_file(File.join(DATA_DIR, d)).id}, + ) + types.each do |type| + min_sims.each do |min_sim| + experiment.model_settings << { + :model_algorithm => "OpenTox::Model::LazarRegression", + :prediction_algorithm => "OpenTox::Algorithm::Regression.weighted_average", + :neighbor_algorithm => "fingerprint_neighbors", + :neighbor_algorithm_parameters => { + :type => type, + :min_sim => min_sim, + } + } + end + end + experiment.run + p experiment.id + experiment.results.each do |dataset,result| + result.each do |r| + params = Model::Lazar.find(r["model_id"])[:neighbor_algorithm_parameters] + RepeatedCrossValidation.find(r["repeated_crossvalidation_id"]).crossvalidations.each do |cv| + cv.validation_ids.each do |vid| + model_params = Model::Lazar.find(Validation.find(vid).model_id)[:neighbor_algorithm_parameters] + assert_equal params[:type], model_params[:type] + assert_equal params[:min_sim], model_params[:min_sim] + refute_equal params[:training_dataset_id], model_params[:training_dataset_id] + end + end + end + end + puts experiment.report.to_yaml + p experiment.summary + end end |