From 160e75e696452ac61e651664ac56d16ce1c9c4b6 Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Thu, 13 Oct 2016 19:17:03 +0200 Subject: model tests separated and cleaned --- test/validation-nanoparticle.rb | 74 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 test/validation-nanoparticle.rb (limited to 'test/validation-nanoparticle.rb') diff --git a/test/validation-nanoparticle.rb b/test/validation-nanoparticle.rb new file mode 100644 index 0000000..3692515 --- /dev/null +++ b/test/validation-nanoparticle.rb @@ -0,0 +1,74 @@ +require_relative "setup.rb" + +class NanoparticleTest < MiniTest::Test + include OpenTox::Validation + + def setup + @training_dataset = Dataset.where(:name => "Protein Corona Fingerprinting Predicts the Cellular Interaction of Gold and Silver Nanoparticles").first + unless @training_dataset + Import::Enanomapper.import File.join(File.dirname(__FILE__),"data","enm") + @training_dataset = Dataset.where(name: "Protein Corona Fingerprinting Predicts the Cellular Interaction of Gold and Silver Nanoparticles").first + end + @prediction_feature = @training_dataset.features.select{|f| f["name"] == 'log2(Net cell association)'}.first + end + + def test_validate_default_nanoparticle_model + model = Model::Lazar.create training_dataset: @training_dataset, prediction_feature: @prediction_feature + cv = CrossValidation.create model + p cv.rmse + p cv.r_squared + #File.open("tmp.pdf","w+"){|f| f.puts cv.correlation_plot} + refute_nil cv.r_squared + refute_nil cv.rmse + end + + def test_validate_pls_nanoparticle_model + algorithms = { + :descriptors => { :types => ["P-CHEM"] }, + :prediction => {:parameters => 'pls' }, + } + model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms + assert_equal "pls", model.algorithms[:prediction][:parameters] + assert_equal "Algorithm::Caret.regression", model.algorithms[:prediction][:method] + cv = CrossValidation.create model + p cv.rmse + p cv.r_squared + refute_nil cv.r_squared + refute_nil cv.rmse + end + + def test_validate_proteomics_pls_nanoparticle_model + algorithms = { + :descriptors => { :types => ["Proteomics"] }, + :prediction => { :parameters => 'pls' } + } + model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms + assert_equal "pls", model.algorithms[:prediction][:parameters] + assert_equal "Algorithm::Caret.regression", model.algorithms[:prediction][:method] + cv = CrossValidation.create model + p cv.rmse + p cv.r_squared + refute_nil cv.r_squared + refute_nil cv.rmse + end + + def test_validate_all_default_nanoparticle_model + algorithms = { + :descriptors => { + :types => ["Proteomics","P-CHEM"] + }, + } + model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms + cv = CrossValidation.create model + p cv.rmse + p cv.r_squared + refute_nil cv.r_squared + refute_nil cv.rmse + end + + + def test_import_ld + skip # Ambit JSON-LD export defunct + dataset_ids = Import::Enanomapper.import_ld + end +end -- cgit v1.2.3 From 2dc66aef3b7932105868ee8c7d32ad975e142d1b Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Thu, 13 Oct 2016 19:48:21 +0200 Subject: compound tests fixed --- test/validation-nanoparticle.rb | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'test/validation-nanoparticle.rb') diff --git a/test/validation-nanoparticle.rb b/test/validation-nanoparticle.rb index 3692515..c5618e8 100644 --- a/test/validation-nanoparticle.rb +++ b/test/validation-nanoparticle.rb @@ -1,6 +1,6 @@ require_relative "setup.rb" -class NanoparticleTest < MiniTest::Test +class NanoparticleValidationTest < MiniTest::Test include OpenTox::Validation def setup @@ -24,8 +24,11 @@ class NanoparticleTest < MiniTest::Test def test_validate_pls_nanoparticle_model algorithms = { - :descriptors => { :types => ["P-CHEM"] }, - :prediction => {:parameters => 'pls' }, + :descriptors => { + :method => "properties", + :categories => ["P-CHEM"] + }, + :prediction => {:method => 'Algorithm::Caret.pls' }, } model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms assert_equal "pls", model.algorithms[:prediction][:parameters] @@ -39,12 +42,15 @@ class NanoparticleTest < MiniTest::Test def test_validate_proteomics_pls_nanoparticle_model algorithms = { - :descriptors => { :types => ["Proteomics"] }, - :prediction => { :parameters => 'pls' } + :descriptors => { + :method => "properties", + :categories => ["Proteomics"] + }, + :prediction => {:method => 'Algorithm::Caret.pls' }, } model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms assert_equal "pls", model.algorithms[:prediction][:parameters] - assert_equal "Algorithm::Caret.regression", model.algorithms[:prediction][:method] + assert_equal "Algorithm::Caret.pls", model.algorithms[:prediction][:method] cv = CrossValidation.create model p cv.rmse p cv.r_squared @@ -55,7 +61,8 @@ class NanoparticleTest < MiniTest::Test def test_validate_all_default_nanoparticle_model algorithms = { :descriptors => { - :types => ["Proteomics","P-CHEM"] + :method => "properties", + :categories => ["Proteomics","P-CHEM"] }, } model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms -- cgit v1.2.3 From 09452bba5c407c27721223d126e3f45c12b20a0c Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Thu, 13 Oct 2016 22:59:45 +0200 Subject: tests pass --- test/validation-nanoparticle.rb | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'test/validation-nanoparticle.rb') diff --git a/test/validation-nanoparticle.rb b/test/validation-nanoparticle.rb index c5618e8..c0f2f92 100644 --- a/test/validation-nanoparticle.rb +++ b/test/validation-nanoparticle.rb @@ -31,8 +31,7 @@ class NanoparticleValidationTest < MiniTest::Test :prediction => {:method => 'Algorithm::Caret.pls' }, } model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms - assert_equal "pls", model.algorithms[:prediction][:parameters] - assert_equal "Algorithm::Caret.regression", model.algorithms[:prediction][:method] + assert_equal "Algorithm::Caret.pls", model.algorithms[:prediction][:method] cv = CrossValidation.create model p cv.rmse p cv.r_squared @@ -49,7 +48,6 @@ class NanoparticleValidationTest < MiniTest::Test :prediction => {:method => 'Algorithm::Caret.pls' }, } model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms - assert_equal "pls", model.algorithms[:prediction][:parameters] assert_equal "Algorithm::Caret.pls", model.algorithms[:prediction][:method] cv = CrossValidation.create model p cv.rmse @@ -73,9 +71,4 @@ class NanoparticleValidationTest < MiniTest::Test refute_nil cv.rmse end - - def test_import_ld - skip # Ambit JSON-LD export defunct - dataset_ids = Import::Enanomapper.import_ld - end end -- cgit v1.2.3 From 280f81dcffb3b8b929ff9cbe92ba17403f5a9dd3 Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Fri, 28 Oct 2016 12:31:53 +0200 Subject: adjusted r^2 removed (does not apply well to local models) --- test/validation-nanoparticle.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'test/validation-nanoparticle.rb') diff --git a/test/validation-nanoparticle.rb b/test/validation-nanoparticle.rb index c0f2f92..1742ef2 100644 --- a/test/validation-nanoparticle.rb +++ b/test/validation-nanoparticle.rb @@ -15,6 +15,7 @@ class NanoparticleValidationTest < MiniTest::Test def test_validate_default_nanoparticle_model model = Model::Lazar.create training_dataset: @training_dataset, prediction_feature: @prediction_feature cv = CrossValidation.create model + p cv p cv.rmse p cv.r_squared #File.open("tmp.pdf","w+"){|f| f.puts cv.correlation_plot} -- cgit v1.2.3 From 9e7b36613e98601de7b2ceb2d4442e11f1ae868a Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Thu, 10 Nov 2016 12:23:46 +0100 Subject: intermediate commit, may be defunct --- test/validation-nanoparticle.rb | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'test/validation-nanoparticle.rb') diff --git a/test/validation-nanoparticle.rb b/test/validation-nanoparticle.rb index 1742ef2..7391f21 100644 --- a/test/validation-nanoparticle.rb +++ b/test/validation-nanoparticle.rb @@ -72,4 +72,45 @@ class NanoparticleValidationTest < MiniTest::Test refute_nil cv.rmse end + def test_nanoparticle_fingerprint_model + algorithms = { + :descriptors => { + :method => "fingerprint", + :type => "MP2D", + }, + :similarity => { + :method => "Algorithm::Similarity.tanimoto", + :min => 0.1 + }, + :feature_selection => nil + } + model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms + cv = CrossValidation.create model + p cv.rmse + p cv.r_squared + refute_nil cv.r_squared + refute_nil cv.rmse + end + + def test_nanoparticle_fingerprint_weighted_average_model + algorithms = { + :descriptors => { + :method => "fingerprint", + :type => "MP2D", + }, + :similarity => { + :method => "Algorithm::Similarity.tanimoto", + :min => 0.1 + }, + :prediction => { :method => "OpenTox::Algorithm::Regression.weighted_average" }, + :feature_selection => nil + } + model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms + cv = CrossValidation.create model + p cv.rmse + p cv.r_squared + refute_nil cv.r_squared + refute_nil cv.rmse + end + end -- cgit v1.2.3 From 9a06f2ff5ae6bdbe7dc90555599e186f1585e0d2 Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Thu, 10 Nov 2016 15:27:26 +0100 Subject: Model::NanoPrediction parameters --- test/validation-nanoparticle.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'test/validation-nanoparticle.rb') diff --git a/test/validation-nanoparticle.rb b/test/validation-nanoparticle.rb index 7391f21..5ed70f2 100644 --- a/test/validation-nanoparticle.rb +++ b/test/validation-nanoparticle.rb @@ -113,4 +113,23 @@ class NanoparticleValidationTest < MiniTest::Test refute_nil cv.rmse end + def test_nanoparticle_fingerprint_model_with_feature_selection + algorithms = { + :descriptors => { + :method => "fingerprint", + :type => "MP2D", + }, + :similarity => { + :method => "Algorithm::Similarity.tanimoto", + :min => 0.1 + }, + } + model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms + cv = CrossValidation.create model + p cv.rmse + p cv.r_squared + refute_nil cv.r_squared + refute_nil cv.rmse + end + end -- cgit v1.2.3 From b6116bc4705066da30668ff3370f3b1c307e44e7 Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Fri, 11 Nov 2016 13:07:53 +0100 Subject: enm import fixed --- test/validation-nanoparticle.rb | 43 ++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 24 deletions(-) (limited to 'test/validation-nanoparticle.rb') diff --git a/test/validation-nanoparticle.rb b/test/validation-nanoparticle.rb index 5ed70f2..9351e1b 100644 --- a/test/validation-nanoparticle.rb +++ b/test/validation-nanoparticle.rb @@ -5,74 +5,72 @@ class NanoparticleValidationTest < MiniTest::Test def setup @training_dataset = Dataset.where(:name => "Protein Corona Fingerprinting Predicts the Cellular Interaction of Gold and Silver Nanoparticles").first - unless @training_dataset - Import::Enanomapper.import File.join(File.dirname(__FILE__),"data","enm") - @training_dataset = Dataset.where(name: "Protein Corona Fingerprinting Predicts the Cellular Interaction of Gold and Silver Nanoparticles").first - end @prediction_feature = @training_dataset.features.select{|f| f["name"] == 'log2(Net cell association)'}.first end def test_validate_default_nanoparticle_model model = Model::Lazar.create training_dataset: @training_dataset, prediction_feature: @prediction_feature cv = CrossValidation.create model - p cv - p cv.rmse - p cv.r_squared #File.open("tmp.pdf","w+"){|f| f.puts cv.correlation_plot} refute_nil cv.r_squared refute_nil cv.rmse end - def test_validate_pls_nanoparticle_model + def test_validate_pls_pchem_model algorithms = { :descriptors => { :method => "properties", :categories => ["P-CHEM"] }, :prediction => {:method => 'Algorithm::Caret.pls' }, + :feature_selection => { + :method => "Algorithm::FeatureSelection.correlation_filter", + }, } model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms assert_equal "Algorithm::Caret.pls", model.algorithms[:prediction][:method] cv = CrossValidation.create model - p cv.rmse - p cv.r_squared refute_nil cv.r_squared refute_nil cv.rmse end - def test_validate_proteomics_pls_nanoparticle_model +=begin + def test_validate_proteomics_pls_pchem_model algorithms = { :descriptors => { :method => "properties", :categories => ["Proteomics"] }, :prediction => {:method => 'Algorithm::Caret.pls' }, + :feature_selection => { + :method => "Algorithm::FeatureSelection.correlation_filter", + }, } model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms assert_equal "Algorithm::Caret.pls", model.algorithms[:prediction][:method] cv = CrossValidation.create model - p cv.rmse - p cv.r_squared refute_nil cv.r_squared refute_nil cv.rmse end +=end - def test_validate_all_default_nanoparticle_model + def test_validate_proteomics_pchem_default_model algorithms = { :descriptors => { :method => "properties", :categories => ["Proteomics","P-CHEM"] }, + :feature_selection => { + :method => "Algorithm::FeatureSelection.correlation_filter", + }, } model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms cv = CrossValidation.create model - p cv.rmse - p cv.r_squared refute_nil cv.r_squared refute_nil cv.rmse end - def test_nanoparticle_fingerprint_model + def test_nanoparticle_fingerprint_model_without_feature_selection algorithms = { :descriptors => { :method => "fingerprint", @@ -86,13 +84,11 @@ class NanoparticleValidationTest < MiniTest::Test } model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms cv = CrossValidation.create model - p cv.rmse - p cv.r_squared refute_nil cv.r_squared refute_nil cv.rmse end - def test_nanoparticle_fingerprint_weighted_average_model + def test_nanoparticle_fingerprint_weighted_average_model_without_feature_selection algorithms = { :descriptors => { :method => "fingerprint", @@ -107,8 +103,6 @@ class NanoparticleValidationTest < MiniTest::Test } model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms cv = CrossValidation.create model - p cv.rmse - p cv.r_squared refute_nil cv.r_squared refute_nil cv.rmse end @@ -123,11 +117,12 @@ class NanoparticleValidationTest < MiniTest::Test :method => "Algorithm::Similarity.tanimoto", :min => 0.1 }, + :feature_selection => { + :method => "Algorithm::FeatureSelection.correlation_filter", + }, } model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms cv = CrossValidation.create model - p cv.rmse - p cv.r_squared refute_nil cv.r_squared refute_nil cv.rmse end -- cgit v1.2.3 From 99c42f76b02f9084d0757eb0c52b4a55fa295a95 Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Fri, 11 Nov 2016 17:19:13 +0100 Subject: p-chem regression and enm import fixed --- test/validation-nanoparticle.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'test/validation-nanoparticle.rb') diff --git a/test/validation-nanoparticle.rb b/test/validation-nanoparticle.rb index 9351e1b..85392a1 100644 --- a/test/validation-nanoparticle.rb +++ b/test/validation-nanoparticle.rb @@ -11,7 +11,8 @@ class NanoparticleValidationTest < MiniTest::Test def test_validate_default_nanoparticle_model model = Model::Lazar.create training_dataset: @training_dataset, prediction_feature: @prediction_feature cv = CrossValidation.create model - #File.open("tmp.pdf","w+"){|f| f.puts cv.correlation_plot} + p cv.id + File.open("tmp.pdf","w+"){|f| f.puts cv.correlation_plot format:"pdf"} refute_nil cv.r_squared refute_nil cv.rmse end @@ -30,6 +31,8 @@ class NanoparticleValidationTest < MiniTest::Test model = Model::Lazar.create prediction_feature: @prediction_feature, training_dataset: @training_dataset, algorithms: algorithms assert_equal "Algorithm::Caret.pls", model.algorithms[:prediction][:method] cv = CrossValidation.create model + p cv.id + File.open("tmp2.pdf","w+"){|f| f.puts cv.correlation_plot format:"pdf"} refute_nil cv.r_squared refute_nil cv.rmse end -- cgit v1.2.3 From 2baffb4a3ebfa2b4a32c0c148bf61a5da89ec210 Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Fri, 25 Nov 2016 10:36:02 +0100 Subject: algorithms accessor for Model::Validation --- test/validation-nanoparticle.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'test/validation-nanoparticle.rb') diff --git a/test/validation-nanoparticle.rb b/test/validation-nanoparticle.rb index 85392a1..0c7d355 100644 --- a/test/validation-nanoparticle.rb +++ b/test/validation-nanoparticle.rb @@ -12,7 +12,7 @@ class NanoparticleValidationTest < MiniTest::Test model = Model::Lazar.create training_dataset: @training_dataset, prediction_feature: @prediction_feature cv = CrossValidation.create model p cv.id - File.open("tmp.pdf","w+"){|f| f.puts cv.correlation_plot format:"pdf"} + #File.open("tmp.pdf","w+"){|f| f.puts cv.correlation_plot format:"pdf"} refute_nil cv.r_squared refute_nil cv.rmse end @@ -32,7 +32,7 @@ class NanoparticleValidationTest < MiniTest::Test assert_equal "Algorithm::Caret.pls", model.algorithms[:prediction][:method] cv = CrossValidation.create model p cv.id - File.open("tmp2.pdf","w+"){|f| f.puts cv.correlation_plot format:"pdf"} + #File.open("tmp2.pdf","w+"){|f| f.puts cv.correlation_plot format:"pdf"} refute_nil cv.r_squared refute_nil cv.rmse end -- cgit v1.2.3