summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2011-03-10 10:28:20 +0100
committerChristoph Helma <helma@in-silico.ch>2011-03-10 10:28:20 +0100
commit2043f901e5f7abdac030f4aae8bbcb2d8d38476c (patch)
tree720fa04978da527c64a2e7901dafe506583bc9ce
parent182f3e9f34026934626ceff42902274f2e6f046c (diff)
parenta851e4794630fbae3b6b3bf228b43f550f61febb (diff)
dataset tests fixed
-rw-r--r--Rakefile21
-rw-r--r--dataset.rb135
-rw-r--r--fminer.rb4
-rw-r--r--lazar.rb12
-rw-r--r--model.rb2
-rw-r--r--parser.rb2
6 files changed, 115 insertions, 61 deletions
diff --git a/Rakefile b/Rakefile
index 9d6afff..45affdc 100644
--- a/Rakefile
+++ b/Rakefile
@@ -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
diff --git a/dataset.rb b/dataset.rb
index a243b00..1e4134b 100644
--- a/dataset.rb
+++ b/dataset.rb
@@ -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
diff --git a/fminer.rb b/fminer.rb
index de447bf..362bde9 100644
--- a/fminer.rb
+++ b/fminer.rb
@@ -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
diff --git a/lazar.rb b/lazar.rb
index c2f10ce..d4cdc36 100644
--- a/lazar.rb
+++ b/lazar.rb
@@ -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)
diff --git a/model.rb b/model.rb
index f63d6e2..2b11be0 100644
--- a/model.rb
+++ b/model.rb
@@ -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
diff --git a/parser.rb b/parser.rb
index 7bae783..84ba5f7 100644
--- a/parser.rb
+++ b/parser.rb
@@ -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
}
}