diff options
author | Christoph Helma <helma@in-silico.ch> | 2016-11-10 15:27:26 +0100 |
---|---|---|
committer | Christoph Helma <helma@in-silico.ch> | 2016-11-10 15:27:26 +0100 |
commit | 9a06f2ff5ae6bdbe7dc90555599e186f1585e0d2 (patch) | |
tree | c9cbb63f398c2937f3cba78a9976c7356a3f79a4 /test/nanomaterial-prediction-models.rb | |
parent | 85ef2c4982f72c811d5e9fa4ce22e238c512fe6e (diff) |
Model::NanoPrediction parameters
Diffstat (limited to 'test/nanomaterial-prediction-models.rb')
-rw-r--r-- | test/nanomaterial-prediction-models.rb | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/test/nanomaterial-prediction-models.rb b/test/nanomaterial-prediction-models.rb new file mode 100644 index 0000000..b0c05f3 --- /dev/null +++ b/test/nanomaterial-prediction-models.rb @@ -0,0 +1,60 @@ +require_relative "setup.rb" + +class NanomaterialPredictionModelTest < 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_default_nanomaterial_prediction_model + prediction_model = Model::NanoPrediction.create + p prediction_model + [:endpoint,:species,:source].each do |p| + refute_empty prediction_model[p] + end + assert prediction_model.regression? + refute prediction_model.classification? + prediction_model.crossvalidations.each do |cv| + refute_nil cv.r_squared + refute_nil cv.rmse + end + nanoparticle = @training_dataset.nanoparticles[-34] + assert_includes nanoparticle.dataset_ids, @training_dataset.id + prediction = prediction_model.predict nanoparticle + refute_nil prediction[:value] + 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." + prediction_model.delete + end + + def test_nanomaterial_prediction_model_parameters + algorithms = { + :descriptors => { + :method => "fingerprint", + :type => "MP2D", + }, + :similarity => { + :method => "Algorithm::Similarity.tanimoto", + :min => 0.1 + }, + :prediction => { :method => "OpenTox::Algorithm::Regression.weighted_average" }, + :feature_selection => nil + } + prediction_model = Model::NanoPrediction.create algorithms: algorithms + assert prediction_model.regression? + refute prediction_model.classification? + prediction_model.crossvalidations.each do |cv| + refute_nil cv.r_squared + refute_nil cv.rmse + end + nanoparticle = @training_dataset.nanoparticles[-34] + assert_includes nanoparticle.dataset_ids, @training_dataset.id + prediction = prediction_model.predict nanoparticle + refute_nil prediction[:value] + 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." + end +end |