diff options
author | Christoph Helma <helma@in-silico.ch> | 2011-03-10 10:28:20 +0100 |
---|---|---|
committer | Christoph Helma <helma@in-silico.ch> | 2011-03-10 10:28:20 +0100 |
commit | 2043f901e5f7abdac030f4aae8bbcb2d8d38476c (patch) | |
tree | 720fa04978da527c64a2e7901dafe506583bc9ce | |
parent | 182f3e9f34026934626ceff42902274f2e6f046c (diff) | |
parent | a851e4794630fbae3b6b3bf228b43f550f61febb (diff) |
dataset tests fixed
-rw-r--r-- | Rakefile | 21 | ||||
-rw-r--r-- | dataset.rb | 135 | ||||
-rw-r--r-- | fminer.rb | 4 | ||||
-rw-r--r-- | lazar.rb | 12 | ||||
-rw-r--r-- | model.rb | 2 | ||||
-rw-r--r-- | parser.rb | 2 |
6 files changed, 115 insertions, 61 deletions
@@ -4,24 +4,13 @@ require 'opentox-ruby' =begin =end class Exception - def message - unless errorCause == nil - errorCause.to_yaml - else - self.to_s - end + errorCause ? errorCause.to_yaml : to_s end - end -#if File.exists? "auth.rb" - #require "auth" -#else - #exit "Please create an authenticatio - TEST_USER = "guest" - TEST_PW = "guest" -#end +TEST_USER = "guest" +TEST_PW = "guest" task ARGV[0] do puts "Environment: #{ENV["RACK_ENV"]}" @@ -41,8 +30,8 @@ task :teardown do OpenTox::Authorization.logout(@@subjectid) end -[:all, :feature, :dataset, :fminer, :lazar, :authorization, :validation].each do |t| -#[:all, :feature, :dataset, :fminer, :lazar, :authorization].each do |t| +#[:all, :feature, :dataset, :fminer, :lazar, :authorization, :validation].each do |t| +[:all, :feature, :dataset, :fminer, :lazar, :authorization].each do |t| task :teardown => t task t => :setup end @@ -5,10 +5,9 @@ require 'validate-owl' class DatasetTest < Test::Unit::TestCase -=begin -=end def setup @datasets = { + @@regression_training_dataset.uri => nil, @@classification_training_dataset.uri => { :nr_compounds => 85, :nr_features => 1, @@ -18,7 +17,7 @@ class DatasetTest < Test::Unit::TestCase "http://apps.ideaconsult.net:8080/ambit2/dataset/2698" => { :nr_compounds => 3, :nr_features => 8, - :nr_dataset_features => 37, + :nr_dataset_features => 36, :nr_data_entries => 3 } } @@ -28,13 +27,14 @@ class DatasetTest < Test::Unit::TestCase #@new_dataset.delete end +=begin +=end def test_save_external - @dataset = OpenTox::Dataset.find "http://apps.ideaconsult.net:8080/ambit2/dataset/2698", @@subjectid + @dataset = OpenTox::Dataset.find "http://apps.ideaconsult.net:8080/ambit2/dataset/2698" #File.open("test.rdf","w+"){|f| f.puts @dataset.to_rdfxml} @dataset.uri = "http://apps.ideaconsult.net:8080/ambit2/dataset" uri = @dataset.save(@@subjectid) - puts uri #@dataset.load_csv(File.open("data/hamster_carcinogenicity.csv").read) #@dataset.save end @@ -43,12 +43,11 @@ class DatasetTest < Test::Unit::TestCase dataset = OpenTox::Dataset.create(CONFIG[:services]["opentox-dataset"], @@subjectid) dataset.save(@@subjectid) assert_kind_of URI::HTTP, URI.parse(dataset.uri) - puts `curl #{dataset.uri}` #dataset.delete(@@subjectid) end def test_all - datasets = OpenTox::Dataset.all(CONFIG[:services]["opentox-dataset"], @@subjectid) + datasets = OpenTox::Dataset.all assert_kind_of Array, datasets end @@ -60,7 +59,7 @@ class DatasetTest < Test::Unit::TestCase end def test_from_yaml - @dataset = OpenTox::Dataset.new nil, @@subjectid + @dataset = OpenTox::Dataset.new @dataset.load_yaml(File.open("data/hamster_carcinogenicity.yaml").read) hamster_carc? end @@ -68,28 +67,31 @@ class DatasetTest < Test::Unit::TestCase def test_rest_csv uri = OpenTox::RestClientWrapper.post(CONFIG[:services]["opentox-dataset"], {:file => File.new("data/hamster_carcinogenicity.csv")} ,{:accept => "text/uri-list", :subjectid => @@subjectid}).to_s.chomp @dataset = OpenTox::Dataset.new uri, @@subjectid - @dataset.load_all(@@subjectid) + #@dataset = OpenTox::Dataset.new uri + @dataset.load_all @@subjectid hamster_carc? end def test_multicolumn_csv uri = OpenTox::RestClientWrapper.post(CONFIG[:services]["opentox-dataset"], {:file => File.new("data/multicolumn.csv")},{:accept => "text/uri-list", :subjectid => @@subjectid}).to_s.chomp @dataset = OpenTox::Dataset.new uri, @@subjectid - @dataset.load_all(@@subjectid) + #@dataset = OpenTox::Dataset.new uri + @dataset.load_all @@subjectid assert_equal 5, @dataset.features.size assert_equal 4, @dataset.compounds.size end def test_from_csv - @dataset = OpenTox::Dataset.new(nil, @@subjectid) + @dataset = OpenTox::Dataset.new @dataset.load_csv(File.open("data/hamster_carcinogenicity.csv").read, @@subjectid) + #puts @dataset.to_yaml hamster_carc? @dataset.delete(@@subjectid) end def test_from_excel - @dataset = OpenTox::Dataset.new(nil, @@subjectid) + @dataset = OpenTox::Dataset.new @dataset.load_spreadsheet(Excel.new("data/hamster_carcinogenicity.xls"), @@subjectid) hamster_carc? @dataset.delete(@@subjectid) @@ -104,32 +106,32 @@ class DatasetTest < Test::Unit::TestCase def test_load_compounds @datasets.each do |uri,data| - @dataset = OpenTox::Dataset.new(uri, @@subjectid) - @dataset.load_compounds(@@subjectid) - assert_equal @dataset.compounds.size,data[:nr_compounds] + @dataset = OpenTox::Dataset.new(uri) + @dataset.load_compounds @@subjectid + assert_equal @dataset.compounds.size,data[:nr_compounds] if data end end def test_load_features @datasets.each do |uri,data| - @dataset = OpenTox::Dataset.new(uri, @@subjectid) - @dataset.load_features(@@subjectid) - assert_equal @dataset.features.keys.size,data[:nr_dataset_features] + @dataset = OpenTox::Dataset.new(uri) + @dataset.load_features @@subjectid + assert_equal @dataset.features.keys.size,data[:nr_dataset_features] if data end end def test_load_all @datasets.each do |uri,data| - @dataset = OpenTox::Dataset.new(uri, @@subjectid) - @dataset.load_all(@@subjectid) + @dataset = OpenTox::Dataset.new(uri) + @dataset.load_all @@subjectid validate data end end def test_yaml @datasets.each do |uri,data| - @dataset = OpenTox::Dataset.new(uri, @@subjectid) - @dataset.load_all(@@subjectid) + @dataset = OpenTox::Dataset.new(uri) + @dataset.load_all @@subjectid #@dataset = YAML.load @dataset.to_yaml validate data end @@ -137,18 +139,18 @@ class DatasetTest < Test::Unit::TestCase def test_csv @datasets.each do |uri,data| - @dataset = OpenTox::Dataset.new(uri, @@subjectid) - @dataset.load_all(@@subjectid) + @dataset = OpenTox::Dataset.new(uri) + @dataset.load_all @@subjectid csv = @dataset.to_csv.split("\n") - assert_equal csv.size, data[:nr_compounds]+1 - assert_equal csv.first.split(", ").size, data[:nr_dataset_features]+1 + assert_equal csv.size, data[:nr_compounds]+1 if data + assert_equal csv.first.split(", ").size, data[:nr_dataset_features]+1 if data end end def test_excel @datasets.each do |uri,data| - @dataset = OpenTox::Dataset.new(uri, @@subjectid) - @dataset.load_all(@@subjectid) + @dataset = OpenTox::Dataset.new(uri) + @dataset.load_all @@subjectid book = @dataset.to_spreadsheet assert_kind_of Spreadsheet::Workbook, book #File.open("#{@dataset.id}.xls","w+"){|f| book.write f.path} @@ -157,26 +159,89 @@ class DatasetTest < Test::Unit::TestCase def test_ntriples @datasets.each do |uri,data| - @dataset = OpenTox::Dataset.new(uri, @@subjectid) - @dataset.load_all(@@subjectid) + @dataset = OpenTox::Dataset.new(uri) + @dataset.load_all @@subjectid assert_kind_of String, @dataset.to_ntriples end end def test_owl @datasets.each do |uri,data| - @dataset = OpenTox::Dataset.new(uri, @@subjectid) - @dataset.load_all(@@subjectid) + @dataset = OpenTox::Dataset.new(uri) + @dataset.load_all @@subjectid assert_kind_of String, @dataset.to_rdfxml end end + + def test_rdf_conversion + @datasets.each do |uri,data| + #puts "dataset "+uri.to_s + @dataset = OpenTox::Dataset.new(uri) + @dataset.load_all @@subjectid + + #puts @dataset.features.keys.size.to_s+" # features" + #puts "download to rdf" + f = Tempfile.new("ot-rdf") + f.puts @dataset.to_rdfxml + f.close + + #puts "upload as rdf" + d = OpenTox::Dataset.create(CONFIG[:services]["opentox-dataset"], @@subjectid) + d.load_rdfxml_file(f) + f.delete + d.save(@@subjectid) + assert d.uri.uri? + + #puts "compare" + dataset_equal(@dataset,d) + + #puts "download new dataset as yaml" + d2 = OpenTox::Dataset.new(d.uri) + d2.load_all @@subjectid + + #puts "compare again" + dataset_equal(@dataset,d2) + end + end + =begin =end + + def dataset_equal(d,d2) + assert d.compounds.sort==d2.compounds.sort, + d.compounds.sort.to_yaml+"\n!=\n"+d2.compounds.sort.to_yaml + assert d.features.keys.size==d2.features.keys.size, + d.features.keys.to_yaml+"\n!=\n"+d2.features.keys.to_yaml + assert d.features.keys.sort==d2.features.keys.sort, + d.features.keys.sort.to_yaml+"\n!=\n"+d2.features.keys.sort.to_yaml + d.compounds.each do |c| + d.features.keys.each do |f| + assert_array_about_equal d.data_entries[c][f],d2.data_entries[c][f] + end + end + end + + def assert_array_about_equal(a,a2) + if (a!=nil || a2!=nil) + raise "no arrays #{a.class} #{a2.class}" unless a.is_a?(Array) and a2.is_a?(Array) + assert a.size==a2.size + a.sort! + a2.sort! + a.size.times do |i| + if (a[i].is_a?(Float) and a2[i].is_a?(Float)) + assert (a[i]-a2[i]).abs<0.0000001,"#{a[i]}(#{a[i].class}) != #{a2[i]}(#{a2[i].class})" + else + assert a[i]==a2[i],"#{a[i]}(#{a[i].class}) != #{a2[i]}(#{a2[i].class})" + end + end + end + end + def validate(data) assert_kind_of OpenTox::Dataset, @dataset - assert_equal @dataset.data_entries.size, data[:nr_data_entries] - assert_equal @dataset.compounds.size, data[:nr_compounds] - assert_equal @dataset.features.size, data[:nr_dataset_features] + assert_equal @dataset.data_entries.size, data[:nr_data_entries] if data + assert_equal @dataset.compounds.size, data[:nr_compounds] if data + assert_equal @dataset.features.size, data[:nr_dataset_features] if data assert_equal @dataset.uri, @dataset.metadata[XSD.anyURI] end @@ -22,7 +22,7 @@ class FminerTest < Test::Unit::TestCase 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 36, d.features.size + assert_equal 35, d.features.size #validate_owl d.delete(@@subjectid) end @@ -32,7 +32,7 @@ class FminerTest < Test::Unit::TestCase 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 222, d.features.size + assert_equal 225, d.features.size d.delete(@@subjectid) end @@ -15,7 +15,7 @@ class LazarTest < Test::Unit::TestCase 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 lazar.features.size, 222 + assert_equal 225, lazar.features.size compound = OpenTox::Compound.from_smiles("c1ccccc1NN") #puts lazar.uri #puts compound.inspect @@ -24,8 +24,8 @@ class LazarTest < Test::Unit::TestCase prediction_uri = lazar.run(:compound_uri => compound.uri, :subjectid => @@subjectid) #puts prediction_uri prediction = OpenTox::LazarPrediction.find(prediction_uri, @@subjectid) - assert_equal prediction.value(compound).round_to(4), 0.149518871336721.round_to(4) - assert_equal prediction.confidence(compound).round_to(4), 0.615246530364447.round_to(4) + 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) @@ -39,11 +39,12 @@ class LazarTest < Test::Unit::TestCase # single prediction compound = OpenTox::Compound.from_smiles("c1ccccc1NN") - #puts compound.uri prediction_uri = lazar.run(:compound_uri => compound.uri, :subjectid => @@subjectid) + #puts prediction_uri prediction = OpenTox::LazarPrediction.find(prediction_uri, @@subjectid) + puts prediction.inspect assert_equal prediction.value(compound), false - assert_equal prediction.confidence(compound).round_to(4), 0.25857114104619.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 @@ -62,7 +63,6 @@ class LazarTest < Test::Unit::TestCase compound = OpenTox::Compound.new prediction.compounds.first #puts "compound" #puts compound.inspect - #puts "prediction" #puts prediction.value(compound).inspect assert_equal prediction.value(compound), false prediction.delete(@@subjectid) @@ -7,7 +7,7 @@ class ModelTest < Test::Unit::TestCase def setup @models = [ - OpenTox::Model.find_all.last, + OpenTox::Model.all.last, #"http://apps.ideaconsult.net:8080/ambit2/algorithm/J48", ] end @@ -20,7 +20,7 @@ class ParserTest < Test::Unit::TestCase "http://apps.ideaconsult.net:8080/ambit2/dataset/2698" => { :nr_compounds => 3, :nr_features => 8, - :nr_dataset_features => 37, + :nr_dataset_features => 36, :nr_data_entries => 3 } } |