diff options
Diffstat (limited to 'lazar.rb')
-rw-r--r-- | lazar.rb | 249 |
1 files changed, 81 insertions, 168 deletions
@@ -60,176 +60,89 @@ class LazarTest < Test::Unit::TestCase @model.delete(@@subjectid) end -=begin -=end - def test_create_regression_model - create_model :dataset_uri => @@regression_training_dataset.uri - predict_compound OpenTox::Compound.from_smiles("c1ccccc1NN") - assert_equal 1.09.round_to(2), @predictions.first.value(@compounds.first).round_to(2) - assert_equal 0.453.round_to(3), @predictions.first.confidence(@compounds.first).round_to(3) - assert_equal 253, @predictions.first.neighbors(@compounds.first).size - cleanup - end - - def test_create_regression_prop_model - create_model :dataset_uri => @@regression_training_dataset.uri, :local_svm_kernel => "propositionalized" - predict_compound OpenTox::Compound.from_smiles("c1ccccc1NN") - assert_equal 0.453.round_to(3), @predictions.first.confidence(@compounds.first).round_to(3) - assert_equal 253, @predictions.first.neighbors(@compounds.first).size - assert_equal 131, @model.features.size - cleanup - end - - def test_classification_model - create_model :dataset_uri => @@classification_training_dataset.uri - # single prediction - predict_compound OpenTox::Compound.from_smiles("c1ccccc1NN") - # dataset activity - predict_compound OpenTox::Compound.from_smiles("CNN") - # dataset prediction - predict_dataset OpenTox::Dataset.create_from_csv_file("data/multicolumn.csv", @@subjectid) - # assertions - # single prediction - assert_equal "false", @predictions[0].value(@compounds[0]) - assert_equal 0.2938.round_to(4), @predictions[0].confidence(@compounds[0]).round_to(4) - assert_equal 16, @predictions[0].neighbors(@compounds[0]).size - # dataset activity - assert !@predictions[1].measured_activities(@compounds[1]).empty? - assert_equal "true", @predictions[1].measured_activities(@compounds[1]).first.to_s - assert @predictions[1].value(@compounds[1]).nil? - # dataset prediction - c = OpenTox::Compound.from_smiles("CC(=Nc1ccc2c(c1)Cc1ccccc21)O") - assert_equal nil, @predictions[2].value(c) - assert_equal "true", @predictions[2].measured_activities(c).first.to_s - c = OpenTox::Compound.from_smiles("c1ccccc1NN") - assert_equal "false", @predictions[2].value(c) - assert_equal 0.2938.round_to(4) , @predictions[2].confidence(c).round_to(4) - # model - assert_equal 41, @model.features.size - cleanup - end - - def test_classification_svm_model - - create_model :dataset_uri => @@classification_training_dataset.uri, :prediction_algorithm => "local_svm_classification" - predict_compound OpenTox::Compound.from_smiles("c1ccccc1NN") - predict_dataset OpenTox::Dataset.create_from_csv_file("data/multicolumn.csv", @@subjectid) - - assert_equal "false", @predictions[0].value(@compounds[0]) - assert_equal 0.3952.round_to(4), @predictions[0].confidence(@compounds[0]).round_to(4) - assert_equal 16, @predictions[0].neighbors(@compounds[0]).size - - c = OpenTox::Compound.from_smiles("c1ccccc1NN") - assert_equal 4, @predictions[1].compounds.size - assert_equal "false", @predictions[1].value(c) - - assert_equal 41, @model.features.size - cleanup - end - - def test_classification_svm_prop_model - - create_model :dataset_uri => @@classification_training_dataset.uri, :prediction_algorithm => "local_svm_classification", :local_svm_kernel => "propositionalized" - predict_compound OpenTox::Compound.from_smiles("c1ccccc1NN") - predict_dataset OpenTox::Dataset.create_from_csv_file("data/multicolumn.csv", @@subjectid) - - assert_equal "false", @predictions[0].value(@compounds[0]) - #assert_equal 0.2938.round_to(4), @predictions[0].confidence(@compounds[0]).round_to(4) - assert_equal 0.3952.round_to(4), @predictions[0].confidence(@compounds[0]).round_to(4) - assert_equal 16, @predictions[0].neighbors(@compounds[0]).size - - c = OpenTox::Compound.from_smiles("c1ccccc1NN") - assert_equal 4, @predictions[1].compounds.size - assert_equal "false", @predictions[1].value(c) - - assert_equal 41, @model.features.size - cleanup - end - def test_regression_mlr_prop_model - create_model :dataset_uri => @@regression_training_dataset.uri, :prediction_algorithm => "local_mlr_prop" - predict_compound OpenTox::Compound.from_smiles("c1ccccc1NN") - assert_equal 0.453, @predictions.first.confidence(@compounds.first).round_to(3) - assert_equal 0.265, @predictions.first.value(@compounds.first).round_to(3) - assert_equal 253, @predictions.first.neighbors(@compounds.first).size - assert_equal 131, @model.features.size - end - - def test_regression_mlr_prop_conf_stdev - create_model :dataset_uri => @@regression_training_dataset.uri, :prediction_algorithm => "local_mlr_prop", :conf_stdev => "true" - predict_compound OpenTox::Compound.from_smiles("c1ccccc1NN") - assert_equal 0.154, @predictions.first.confidence(@compounds.first).round_to(3) - assert_equal 0.265, @predictions.first.value(@compounds.first).round_to(3) - assert_equal 253, @predictions.first.neighbors(@compounds.first).size - assert_equal 131, @model.features.size - end - - - def test_regression_mlr_prop_weighted_model - create_model :dataset_uri => @@regression_training_dataset.uri, :prediction_algorithm => "local_mlr_prop", :nr_hits => "true" - predict_compound OpenTox::Compound.from_smiles("c1ccccc1NN") - assert_equal 0.453, @predictions.first.confidence(@compounds.first).round_to(3) - assert_equal 0.265, @predictions.first.value(@compounds.first).round_to(3) - assert_equal 253, @predictions.first.neighbors(@compounds.first).size - assert_equal 131, @model.features.size - end - - def test_conf_stdev - params = {:sims => [0.6,0.72,0.8], :acts => [1,1,1], :neighbors => [1,1,1], :conf_stdev => true} # stdev = 0 - params2 = {:sims => [0.6,0.7,0.8], :acts => [3.4,2,0.6], :neighbors => [1,1,1,1], :conf_stdev => true } # stev ~ 1.4 - params3 = {:sims => [0.6,0.7,0.8], :acts => [1,1,1], :neighbors => [1,1,1], } - params4 = {:sims => [0.6,0.7,0.8], :acts => [3.4,2,0.6], :neighbors => [1,1,1] } - 2.times { - assert_in_delta OpenTox::Algorithm::Neighbors::get_confidence(params), 0.72, 0.0001 - assert_in_delta OpenTox::Algorithm::Neighbors::get_confidence(params2), 0.172617874759125, 0.0001 - assert_in_delta OpenTox::Algorithm::Neighbors::get_confidence(params3), 0.7, 0.0001 - assert_in_delta OpenTox::Algorithm::Neighbors::get_confidence(params4), 0.7, 0.0001 - } - end - - -=begin - def test_ambit_classification_model - - # create model - dataset_uri = "http://apps.ideaconsult.net:8080/ambit2/dataset/9?max=400" - feature_uri ="http://apps.ideaconsult.net:8080/ambit2/feature/21573" - #model_uri = OpenTox::Algorithm::Lazar.new.run({:dataset_uri => dataset_uri, :prediction_feature => feature_uri}).to_s - #lazar = OpenTox::Model::Lazar.find model_uri - model_uri = OpenTox::Algorithm::Lazar.new.run({:dataset_uri => dataset_uri, :prediction_feature => feature_uri, :subjectid => @@subjectid}).to_s - validate_owl model_uri,@@subjectid - lazar = OpenTox::Model::Lazar.find model_uri, @@subjectid - puts lazar.features.size - assert_equal lazar.features.size, 1874 - #puts "Model: #{lazar.uri}" - #puts lazar.features.size - - # single prediction - compound = OpenTox::Compound.from_smiles("c1ccccc1NN") - #prediction_uri = lazar.run(:compound_uri => compound.uri) - #prediction = OpenTox::LazarPrediction.find(prediction_uri) - prediction_uri = lazar.run(:compound_uri => compound.uri, :subjectid => @@subjectid) - prediction = OpenTox::LazarPrediction.find(prediction_uri, @@subjectid) - #puts "Prediction: #{prediction.uri}" - #puts prediction.value(compound) - assert_equal prediction.value(compound), "3.0" - #puts @prediction.confidence(compound).round_to(4) - #assert_equal @prediction.confidence(compound).round_to(4), 0.3005.round_to(4) - #assert_equal @prediction.neighbors(compound).size, 15 - #@prediction.delete(@@subjectid) +## Regression +def test_create_regression_svm_pc_model + create_model :dataset_uri => @@regression_training_dataset.uri, :feature_dataset_uri => @@regression_feature_dataset.uri, :pc_type => "constitutional" + predict_compound OpenTox::Compound.from_smiles("c1ccccc1NN") + assert_in_delta @predictions.first.value(@compounds.first), 7.6, 0.3 + assert_equal 0.603, @predictions.first.confidence(@compounds.first).round_to(3) + assert_equal 74, @predictions.first.neighbors(@compounds.first).size + cleanup +end - # dataset activity - #compound = OpenTox::Compound.from_smiles("CNN") - #prediction_uri = @lazar.run(:compound_uri => compound.uri, :subjectid => @@subjectid) - #@prediction = OpenTox::LazarPrediction.find prediction_uri, @@subjectid - #assert !@prediction.measured_activities(compound).empty? - #assert_equal @prediction.measured_activities(compound).first, true - #assert @prediction.value(compound).nil? - #@prediction.delete(@@subjectid) - # dataset prediction - #@lazar.delete(@@subjectid) - end -=end +##Classification +def test_classification_model + create_model :dataset_uri => @@classification_training_dataset.uri + # single prediction + predict_compound OpenTox::Compound.from_smiles("c1ccccc1NN") + # dataset activity + predict_compound OpenTox::Compound.from_smiles("CNN") + # dataset prediction + predict_dataset OpenTox::Dataset.create_from_csv_file("data/multicolumn.csv", @@subjectid) + # assertions + # single prediction + assert_equal "false", @predictions[0].value(@compounds[0]) + assert_equal 0.3383.round_to(4), @predictions[0].confidence(@compounds[0]).round_to(4) + assert_equal 16, @predictions[0].neighbors(@compounds[0]).size + # dataset activity + assert !@predictions[1].measured_activities(@compounds[1]).empty? + assert_equal "true", @predictions[1].measured_activities(@compounds[1]).first.to_s + assert @predictions[1].value(@compounds[1]).nil? + # dataset prediction + c = OpenTox::Compound.from_smiles("CC(=Nc1ccc2c(c1)Cc1ccccc21)O") + assert_equal nil, @predictions[2].value(c) + assert_equal "true", @predictions[2].measured_activities(c).first.to_s + c = OpenTox::Compound.from_smiles("c1ccccc1NN") + assert_equal "false", @predictions[2].value(c) + assert_equal 0.3383 , @predictions[2].confidence(c).round_to(4) + # model + assert_equal 41, @model.features.size + cleanup +end + +# DISABLED TEMPORARILY +# def test_ambit_classification_model +# +# # create model +# dataset_uri = "http://apps.ideaconsult.net:8080/ambit2/dataset/9?max=400" +# feature_uri ="http://apps.ideaconsult.net:8080/ambit2/feature/2153" +# #model_uri = OpenTox::Algorithm::Lazar.new.run({:dataset_uri => dataset_uri, :prediction_feature => feature_uri}).to_s +# #lazar = OpenTox::Model::Lazar.find model_uri +# model_uri = OpenTox::Algorithm::Lazar.new.run({:dataset_uri => dataset_uri, :prediction_feature => feature_uri, :subjectid => @@subjectid}).to_s +# validate_owl model_uri,@@subjectid +# lazar = OpenTox::Model::Lazar.find model_uri, @@subjectid +# puts lazar.features.size +# assert_equal lazar.features.size, 1874 +# #puts "Model: #{lazar.uri}" +# #puts lazar.features.size +# +# # single prediction +# compound = OpenTox::Compound.from_smiles("c1ccccc1NN") +# #prediction_uri = lazar.run(:compound_uri => compound.uri) +# #prediction = OpenTox::LazarPrediction.find(prediction_uri) +# prediction_uri = lazar.run(:compound_uri => compound.uri, :subjectid => @@subjectid) +# prediction = OpenTox::LazarPrediction.find(prediction_uri, @@subjectid) +# #puts "Prediction: #{prediction.uri}" +# #puts prediction.value(compound) +# assert_equal prediction.value(compound), "3.0" +# #puts @prediction.confidence(compound).round_to(4) +# #assert_equal @prediction.confidence(compound).round_to(4), 0.3005.round_to(4) +# #assert_equal @prediction.neighbors(compound).size, 15 +# #@prediction.delete(@@subjectid) +# +# # dataset activity +# #compound = OpenTox::Compound.from_smiles("CNN") +# #prediction_uri = @lazar.run(:compound_uri => compound.uri, :subjectid => @@subjectid) +# #@prediction = OpenTox::LazarPrediction.find prediction_uri, @@subjectid +# #assert !@prediction.measured_activities(compound).empty? +# #assert_equal @prediction.measured_activities(compound).first, true +# #assert @prediction.value(compound).nil? +# #@prediction.delete(@@subjectid) +# +# # dataset prediction +# #@lazar.delete(@@subjectid) +# end end |