From 4a3babce16c811ba3044c460533707b469b3c263 Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Tue, 5 Apr 2011 19:05:59 +0200 Subject: lazar model from ambit datasets --- algorithm.rb | 3 +- feature.rb | 2 +- fminer.rb | 23 ++++++------ lazar.rb | 117 ++++++++++++++++++++++++++++++++++++++++++----------------- 4 files changed, 97 insertions(+), 48 deletions(-) diff --git a/algorithm.rb b/algorithm.rb index 650a6df..772979b 100644 --- a/algorithm.rb +++ b/algorithm.rb @@ -20,8 +20,7 @@ class AlgorithmTest < Test::Unit::TestCase def test_metadata @algorithms.each do |algorithm| - #puts algorithm - validate_owl(algorithm, @@subjectid) + validate_owl(algorithm, @@subjectid) unless CONFIG[:services]["opentox-algorithm"].match(/localhost/) end end diff --git a/feature.rb b/feature.rb index 7ed600c..523688f 100644 --- a/feature.rb +++ b/feature.rb @@ -25,7 +25,7 @@ class FeatureTest < Test::Unit::TestCase def test_owl #@features.each do |uri| - validate_owl @features.first, @@subjectid + validate_owl @features.first, @@subjectid unless CONFIG[:services]["opentox-dataset"].match(/localhost/) # Ambit does not validate #end end diff --git a/fminer.rb b/fminer.rb index 362bde9..3e6dd0d 100644 --- a/fminer.rb +++ b/fminer.rb @@ -12,27 +12,29 @@ class FminerTest < Test::Unit::TestCase dataset_uri = OpenTox::Algorithm::Fminer::BBRC.new.run({:dataset_uri => @@classification_training_dataset.uri, :prediction_feature => feature, :subjectid => @@subjectid}).to_s d =OpenTox::Dataset.new dataset_uri, @@subjectid d.load_features(@@subjectid) - assert_equal 41, d.features.size + #puts dataset_uri + assert_equal 52, d.features.size #validate_owl d.delete(@@subjectid) end - def test_last - feature = @@classification_training_dataset.features.keys.first - dataset_uri = OpenTox::Algorithm::Fminer::LAST.new.run({:dataset_uri => @@classification_training_dataset.uri, :prediction_feature => feature, :subjectid => @@subjectid}).to_s + def test_regression_bbrc + feature = File.join @@regression_training_dataset.uri,"feature/LC50_mmol" + dataset_uri = OpenTox::Algorithm::Fminer::BBRC.new.run({:dataset_uri => @@regression_training_dataset.uri, :prediction_feature => feature, :subjectid => @@subjectid}).to_s d =OpenTox::Dataset.new dataset_uri, @@subjectid d.load_features(@@subjectid) - assert_equal 35, d.features.size - #validate_owl + assert_equal 1354, d.features.size d.delete(@@subjectid) end - def test_regression_bbrc - feature = File.join @@regression_training_dataset.uri,"feature/LC50_mmol" - dataset_uri = OpenTox::Algorithm::Fminer::BBRC.new.run({:dataset_uri => @@regression_training_dataset.uri, :prediction_feature => feature, :subjectid => @@subjectid}).to_s +=begin + def test_last + feature = @@classification_training_dataset.features.keys.first + dataset_uri = OpenTox::Algorithm::Fminer::LAST.new.run({:dataset_uri => @@classification_training_dataset.uri, :prediction_feature => feature, :subjectid => @@subjectid}).to_s d =OpenTox::Dataset.new dataset_uri, @@subjectid d.load_features(@@subjectid) - assert_equal 225, d.features.size + assert_equal 35, d.features.size + #validate_owl d.delete(@@subjectid) end @@ -44,7 +46,6 @@ class FminerTest < Test::Unit::TestCase assert_equal 16, d.features.size d.delete(@@subjectid) end -=begin =end end diff --git a/lazar.rb b/lazar.rb index 1eb7645..512a614 100644 --- a/lazar.rb +++ b/lazar.rb @@ -8,62 +8,111 @@ class Float end end -class LazarRegressionTest < Test::Unit::TestCase +class LazarTest < Test::Unit::TestCase + + def setup + @predictions = [] + @models = [] + end + + def teardown + @predictions.each {|p| p.delete(@@subjectid)} + @models.each {|m| m.delete(@@subjectid)} + end =begin =end def test_create_regression_model model_uri = OpenTox::Algorithm::Lazar.new.run({:dataset_uri => @@regression_training_dataset.uri, :subjectid => @@subjectid}).to_s - @lazar = OpenTox::Model::Lazar.find model_uri, @@subjectid - assert_equal 225, @lazar.features.size + lazar = OpenTox::Model::Lazar.find model_uri, @@subjectid + @models << lazar + assert_equal 1354, lazar.features.size compound = OpenTox::Compound.from_smiles("c1ccccc1NN") - prediction_uri = @lazar.run(:compound_uri => compound.uri, :subjectid => @@subjectid).to_s - @prediction = OpenTox::LazarPrediction.find(prediction_uri, @@subjectid) - assert_equal @prediction.value(compound).round_to(4), 0.1618.round_to(4) - assert_equal @prediction.confidence(compound).round_to(4), 0.6114.round_to(4) - assert_equal @prediction.neighbors(compound).size, 81 - @prediction.delete(@@subjectid) - @lazar.delete(@@subjectid) + prediction_uri = lazar.run(:compound_uri => compound.uri, :subjectid => @@subjectid).to_s + prediction = OpenTox::LazarPrediction.find(prediction_uri, @@subjectid) + @predictions << prediction + assert_equal prediction.value(compound).round_to(4), 0.17.round_to(4) + assert_equal prediction.confidence(compound).round_to(4), 0.5697.round_to(4) + assert_equal prediction.neighbors(compound).size, 77 end -end -class LazarClassificationTest < Test::Unit::TestCase + def test_classification_model # create model model_uri = OpenTox::Algorithm::Lazar.new.run({:dataset_uri => @@classification_training_dataset.uri, :subjectid => @@subjectid}).to_s - @lazar = OpenTox::Model::Lazar.find model_uri, @@subjectid - assert_equal @lazar.features.size, 41 + lazar = OpenTox::Model::Lazar.find model_uri, @@subjectid + @models << lazar + assert_equal lazar.features.size, 52 # single prediction compound = OpenTox::Compound.from_smiles("c1ccccc1NN") - prediction_uri = @lazar.run(:compound_uri => compound.uri, :subjectid => @@subjectid) - @prediction = OpenTox::LazarPrediction.find(prediction_uri, @@subjectid) - assert_equal @prediction.value(compound), false - assert_equal @prediction.confidence(compound).round_to(4), 0.3005.round_to(4) - assert_equal @prediction.neighbors(compound).size, 15 - @prediction.delete(@@subjectid) + prediction_uri = lazar.run(:compound_uri => compound.uri, :subjectid => @@subjectid) + prediction = OpenTox::LazarPrediction.find(prediction_uri, @@subjectid) + @predictions << prediction + assert_equal prediction.value(compound), false + assert_equal prediction.confidence(compound).round_to(4), 0.3067.round_to(4) + assert_equal prediction.neighbors(compound).size, 14 # 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) + prediction_uri = lazar.run(:compound_uri => compound.uri, :subjectid => @@subjectid) + prediction = OpenTox::LazarPrediction.find prediction_uri, @@subjectid + @predictions << prediction + assert !prediction.measured_activities(compound).empty? + assert_equal prediction.measured_activities(compound).first, true + assert prediction.value(compound).nil? # dataset prediction test_dataset = OpenTox::Dataset.create_from_csv_file("data/multicolumn.csv", @@subjectid) - @prediction = OpenTox::LazarPrediction.find @lazar.run(:dataset_uri => test_dataset.uri, :subjectid => @@subjectid), @@subjectid - assert_equal @prediction.compounds.size, 4 - compound = OpenTox::Compound.new "http://ot-dev.in-silico.ch/compound/InChI=1S/C15H13NO/c1-10(17)16-13-6-7-15-12(9-13)8-11-4-2-3-5-14(11)15/h2-7,9H,8H2,1H3,(H,16,17)" - assert_equal @prediction.value(compound), nil - assert_equal @prediction.measured_activities(compound).first, true - @prediction.delete(@@subjectid) - @lazar.delete(@@subjectid) + prediction = OpenTox::LazarPrediction.find lazar.run(:dataset_uri => test_dataset.uri, :subjectid => @@subjectid), @@subjectid + @predictions << prediction + assert_equal prediction.compounds.size, 4 + compound = OpenTox::Compound.from_smiles "CC(=Nc1ccc2c(c1)Cc1ccccc21)O" + assert_equal prediction.value(compound), nil + assert_equal prediction.measured_activities(compound).first, true end + def test_ambit_classification_model + + # create model + dataset_uri = "http://apps.ideaconsult.net:8080/ambit2/dataset/9" + 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 + lazar = OpenTox::Model::Lazar.find model_uri, @@subjectid + assert_equal lazar.features.size, 6609 + #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), true + #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 =begin =end -end -- cgit v1.2.3