From f46ba3b7262f5b551c81fc9396c5b7f0cac7f030 Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Fri, 27 May 2016 19:16:16 +0200 Subject: first correlation of nanoparticle predictions --- test/dataset.rb | 1 + test/nanoparticles.rb | 36 +++++++++++++++++++++++------------- test/setup.rb | 4 ++-- 3 files changed, 26 insertions(+), 15 deletions(-) (limited to 'test') diff --git a/test/dataset.rb b/test/dataset.rb index 7ec9973..e59441b 100644 --- a/test/dataset.rb +++ b/test/dataset.rb @@ -154,6 +154,7 @@ class DatasetTest < MiniTest::Test c = Compound.from_smiles row.shift serialized[c.inchi] = row end + #puts serialized.to_yaml original.each do |inchi,row| row.each_with_index do |v,i| if v.numeric? diff --git a/test/nanoparticles.rb b/test/nanoparticles.rb index 897552d..1cd1ff0 100644 --- a/test/nanoparticles.rb +++ b/test/nanoparticles.rb @@ -9,10 +9,9 @@ class NanoparticleTest < MiniTest::Test end def test_create_model_with_feature_selection - skip training_dataset = Dataset.find_or_create_by(:name => "Protein Corona Fingerprinting Predicts the Cellular Interaction of Gold and Silver Nanoparticles") - feature = Feature.find_or_create_by(name: "7.99 Toxicity (other) ICP-AES", category: "TOX", unit: "mL/ug(Mg)") - model = Model::LazarRegression.create(feature, training_dataset, {:prediction_algorithm => "OpenTox::Algorithm::Regression.local_physchem_regression", :neighbor_algorithm => "nanoparticle_neighbors"}) + feature = Feature.find_or_create_by(name: "Net cell association", category: "TOX", unit: "mL/ug(Mg)") + model = Model::LazarRegression.create(feature, training_dataset, {:prediction_algorithm => "OpenTox::Algorithm::Regression.local_weighted_average", :neighbor_algorithm => "nanoparticle_neighbors", :feature_selection_algorithm => "correlation_filter"}) nanoparticle = training_dataset.nanoparticles[-34] #p nanoparticle.neighbors prediction = model.predict nanoparticle @@ -23,45 +22,55 @@ class NanoparticleTest < MiniTest::Test def test_create_model training_dataset = Dataset.find_or_create_by(:name => "Protein Corona Fingerprinting Predicts the Cellular Interaction of Gold and Silver Nanoparticles") - #p training_dataset.nanoparticles.size feature = Feature.find_or_create_by(name: "Net cell association", category: "TOX", unit: "mL/ug(Mg)") model = Model::LazarRegression.create(feature, training_dataset, {:prediction_algorithm => "OpenTox::Algorithm::Regression.local_weighted_average", :neighbor_algorithm => "nanoparticle_neighbors"}) - #model = Model::LazarRegression.create(feature, training_dataset, {:prediction_algorithm => "OpenTox::Algorithm::Regression.local_physchem_regression", :neighbor_algorithm => "nanoparticle_neighbors"}) nanoparticle = training_dataset.nanoparticles[-34] prediction = model.predict nanoparticle - p prediction refute_nil prediction[:value] + assert_includes nanoparticle.dataset_ids, training_dataset.id + model.delete end def test_validate_model training_dataset = Dataset.find_or_create_by(:name => "Protein Corona Fingerprinting Predicts the Cellular Interaction of Gold and Silver Nanoparticles") feature = Feature.find_or_create_by(name: "Net cell association", category: "TOX", unit: "mL/ug(Mg)") - #feature = Feature.find_or_create_by(name: "7.99 Toxicity (other) ICP-AES", category: "TOX", unit: "mL/ug(Mg)") - model = Model::LazarRegression.create(feature, training_dataset, {:prediction_algorithm => "OpenTox::Algorithm::Regression.local_weighted_average", :neighbor_algorithm => "nanoparticle_neighbors"}) - p model + model = Model::LazarRegression.create(feature, training_dataset, {:prediction_algorithm => "OpenTox::Algorithm::Regression.local_weighted_average", :neighbor_algorithm => "nanoparticle_neighbors", :neighbor_algorithm_parameters => {:min_sim => 0.5}}) cv = RegressionCrossValidation.create model p cv + File.open("tmp.png","w+"){|f| f.puts cv.correlation_plot} + refute_nil cv.r_squared + refute_nil cv.rmse end def test_validate_pls_model training_dataset = Dataset.find_or_create_by(:name => "Protein Corona Fingerprinting Predicts the Cellular Interaction of Gold and Silver Nanoparticles") feature = Feature.find_or_create_by(name: "Net cell association", category: "TOX", unit: "mL/ug(Mg)") - #feature = Feature.find_or_create_by(name: "7.99 Toxicity (other) ICP-AES", category: "TOX", unit: "mL/ug(Mg)") model = Model::LazarRegression.create(feature, training_dataset, {:prediction_algorithm => "OpenTox::Algorithm::Regression.local_physchem_regression", :neighbor_algorithm => "nanoparticle_neighbors"}) - #model = Model::LazarRegression.create(feature, training_dataset, {:prediction_algorithm => "OpenTox::Algorithm::Regression.local_weighted_average", :neighbor_algorithm => "nanoparticle_neighbors"}) - p model cv = RegressionCrossValidation.create model p cv + File.open("tmp.png","w+"){|f| f.puts cv.correlation_plot} + refute_nil cv.r_squared + refute_nil cv.rmse end def test_export - skip Dataset.all.each do |d| puts d.to_csv end end def test_summaries + datasets = Dataset.all + datasets = datasets.select{|d| !d.name.nil?} + datasets.each do |d| + p d.name + + #p d.features.select{|f| f.name.match (/Total/)} + #p d.features.collect{|f| "#{f.name} #{f.unit} #{f.conditions}"} + p d.features.uniq.collect{|f| f.name} + end + assert_equal 9, datasets.size +=begin skip features = Feature.all.to_a #p features.collect do |f| @@ -83,6 +92,7 @@ class NanoparticleTest < MiniTest::Test #pccounts.each{|e,n| p Feature.find(e),n if n > 100} #p toxcounts.collect{|e,n| Feature.find(e).name if n > 1}.uniq toxcounts.each{|e,n| p Feature.find(e),n if n > 100} +=end end diff --git a/test/setup.rb b/test/setup.rb index e7c32b4..6c97282 100644 --- a/test/setup.rb +++ b/test/setup.rb @@ -5,5 +5,5 @@ require_relative '../lib/lazar.rb' include OpenTox TEST_DIR ||= File.expand_path(File.dirname(__FILE__)) DATA_DIR ||= File.join(TEST_DIR,"data") -$mongo.database.drop -$gridfs = $mongo.database.fs +#$mongo.database.drop +#$gridfs = $mongo.database.fs -- cgit v1.2.3