From dc4ab1f4e64d738d6c0b70f0b690a2359685080f Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Wed, 12 Oct 2016 21:32:27 +0200 Subject: physchem regression, correlation_filter for fingerprints --- test/model.rb | 41 +++++++++++++++-------------------------- test/regression.rb | 37 +++++++++++++++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 28 deletions(-) (limited to 'test') diff --git a/test/model.rb b/test/model.rb index 02b8e73..9f30928 100644 --- a/test/model.rb +++ b/test/model.rb @@ -4,17 +4,13 @@ class ModelTest < MiniTest::Test def test_default_regression algorithms = { - :descriptors => { - :method => "fingerprint", - :type => "MP2D" - }, + :descriptors => [ "MP2D" ], :similarity => { :method => "Algorithm::Similarity.tanimoto", :min => 0.1 }, :prediction => { - :method => "Algorithm::Caret.regression", - :parameters => "pls", + :method => "Algorithm::Caret.pls", }, :feature_selection => nil, } @@ -29,17 +25,13 @@ class ModelTest < MiniTest::Test def test_regression_parameters algorithms = { - :descriptors => { - :method => "fingerprint", - :type => "MP2D" - }, + :descriptors => [ "MP2D" ], :similarity => { :method => "Algorithm::Similarity.tanimoto", :min => 0.3 }, :prediction => { :method => "Algorithm::Regression.weighted_average", - :parameters => "rf", }, :feature_selection => nil, } @@ -57,18 +49,22 @@ class ModelTest < MiniTest::Test def test_physchem_regression algorithms = { - :descriptors => "physchem", + :descriptors => ["PhysChem::OPENBABEL"], :similarity => { - :method => "Algorithm::Similarity.weighted_cosine", + :method => "Algorithm::Similarity.cosine", } } training_dataset = Dataset.from_csv_file File.join(DATA_DIR,"EPAFHM.mini_log10.csv") model = Model::Lazar.create training_dataset: training_dataset, algorithms: algorithms assert_kind_of Model::LazarRegression, model - assert_equal "Algorithm::Caret.regression", model.algorithms[:prediction][:method] - assert_equal "Algorithm::Similarity.weighted_cosine", model.algorithms[:similarity][:method] + assert_equal "Algorithm::Caret.pls", model.algorithms[:prediction][:method] + assert_equal "Algorithm::Similarity.cosine", model.algorithms[:similarity][:method] assert_equal 0.1, model.algorithms[:similarity][:min] assert_equal algorithms[:descriptors], model.algorithms[:descriptors] + prediction = model.predict training_dataset.substances[10] + p prediction + refute_nil prediction[:value] + # TODO test predictin end def test_nanoparticle_default @@ -78,8 +74,7 @@ class ModelTest < MiniTest::Test training_dataset = Dataset.where(name: "Protein Corona Fingerprinting Predicts the Cellular Interaction of Gold and Silver Nanoparticles").first end model = Model::Lazar.create training_dataset: training_dataset - assert_equal "Algorithm::Caret.regression", model.algorithms[:prediction][:method] - assert_equal "rf", model.algorithms[:prediction][:parameters] + assert_equal "Algorithm::Caret.rf", model.algorithms[:prediction][:method] assert_equal "Algorithm::Similarity.weighted_cosine", model.algorithms[:similarity][:method] prediction = model.predict training_dataset.substances[14] assert_includes prediction[:prediction_interval][0]..prediction[:prediction_interval][1], prediction[:measurements].median, "This assertion assures that measured values are within the prediction interval. It may fail in 5% of the predictions." @@ -99,7 +94,7 @@ class ModelTest < MiniTest::Test training_dataset = Dataset.from_csv_file File.join(DATA_DIR,"EPAFHM.mini_log10.csv") model = Model::Lazar.create training_dataset: training_dataset, algorithms: algorithms assert_kind_of Model::LazarRegression, model - assert_equal "Algorithm::Caret.regression", model.algorithms[:prediction][:method] + assert_equal "Algorithm::Caret.pls", model.algorithms[:prediction][:method] assert_equal "Algorithm::Similarity.tanimoto", model.algorithms[:similarity][:method] assert_equal 0.1, model.algorithms[:similarity][:min] assert_equal algorithms[:feature_selection][:method], model.algorithms[:feature_selection][:method] @@ -111,10 +106,7 @@ class ModelTest < MiniTest::Test def test_default_classification algorithms = { - :descriptors => { - :method => "fingerprint", - :type => 'MP2D', - }, + :descriptors => [ "MP2D" ], :similarity => { :method => "Algorithm::Similarity.tanimoto", :min => 0.1 @@ -135,10 +127,7 @@ class ModelTest < MiniTest::Test def test_classification_parameters algorithms = { - :descriptors => { - :method => "fingerprint", - :type => 'MACCS', - }, + :descriptors => ['MACCS'], :similarity => { :min => 0.4 }, diff --git a/test/regression.rb b/test/regression.rb index 4c21450..aad4195 100644 --- a/test/regression.rb +++ b/test/regression.rb @@ -45,12 +45,45 @@ class LazarRegressionTest < MiniTest::Test end def test_local_physchem_regression - skip # TODO: fix training_dataset = Dataset.from_csv_file "#{DATA_DIR}/EPAFHM.medi_log10.csv" - model = Model::Lazar.create(training_dataset.features.first, training_dataset, :prediction_algorithm => "OpenTox::Algorithm::Regression.local_physchem_regression") + algorithms = { + :descriptors => ["PhysChem::OPENBABEL"], + :similarity => { + :method => "Algorithm::Similarity.weighted_cosine", + :min => 0.5 + }, + } + model = Model::Lazar.create(training_dataset:training_dataset, algorithms:algorithms) + p model compound = Compound.from_smiles "NC(=O)OCCC" prediction = model.predict compound refute_nil prediction[:value] end + def test_local_physchem_regression_with_feature_selection + training_dataset = Dataset.from_csv_file "#{DATA_DIR}/EPAFHM.medi_log10.csv" + algorithms = { + :descriptors => { + :method => "calculated_properties", + :types => ["OPENBABEL"] + }, + :similarity => { + :method => "Algorithm::Similarity.weighted_cosine", + :min => 0.5 + }, + :feature_selection => { + :method => "Algorithm::FeatureSelection.correlation_filter", + }, + } + model = Model::Lazar.create(training_dataset.features.first, training_dataset, algorithms) + p model + compound = Compound.from_smiles "NC(=O)OCCC" + prediction = model.predict compound + refute_nil prediction[:value] + end + + def test_local_physchem_classification + skip + end + end -- cgit v1.2.3