diff options
Diffstat (limited to 'test/validation-nanoparticle.rb')
-rw-r--r-- | test/validation-nanoparticle.rb | 92 |
1 files changed, 75 insertions, 17 deletions
diff --git a/test/validation-nanoparticle.rb b/test/validation-nanoparticle.rb index 1742ef2..0c7d355 100644 --- a/test/validation-nanoparticle.rb +++ b/test/validation-nanoparticle.rb @@ -5,69 +5,127 @@ 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} + 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 - 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 + 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 - 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 + refute_nil cv.r_squared + refute_nil cv.rmse + end + + def test_nanoparticle_fingerprint_model_without_feature_selection + 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 + refute_nil cv.r_squared + refute_nil cv.rmse + end + + def test_nanoparticle_fingerprint_weighted_average_model_without_feature_selection + 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 + refute_nil cv.r_squared + 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 + }, + :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 |