summaryrefslogtreecommitdiff
path: root/test/dataset.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/dataset.rb')
-rw-r--r--test/dataset.rb181
1 files changed, 51 insertions, 130 deletions
diff --git a/test/dataset.rb b/test/dataset.rb
index ee88838..ea60480 100644
--- a/test/dataset.rb
+++ b/test/dataset.rb
@@ -4,60 +4,24 @@ require_relative "setup.rb"
class DatasetTest < MiniTest::Test
-=begin
-
-# TODO: and add Egons example
- def test_sdf_with_multiple_features
- @dataset = OpenTox::Dataset.new nil
- @dataset.upload "#{DATA_DIR}/CPDBAS_v5c_1547_29Apr2008part.sdf"
- assert_equal OpenTox::Dataset, @dataset.class
- puts @dataset.features.size
- puts @dataset.compounds.size
- @dataset.delete
- end
-
-# TODO: create unordered example file with working references
-# e.g. download from ambit, upload
- def test_create_from_ntriples
- d = OpenTox::Dataset.new nil
- d.upload File.join(DATA_DIR,"hamster_carcinogenicity.ntriples")
- assert_equal OpenTox::Dataset, d.class
- assert_equal "hamster_carcinogenicity.ntriples", d.title
- assert_equal 1, d.features.size
- assert_equal 76, d.compounds.size
- assert_equal 76, d.data_entries.size
- d.delete
- assert_equal false, URI.accessible?(d.uri)
- end
-=end
-
def test_all
- d1 = OpenTox::Dataset.new File.join($dataset[:uri],SecureRandom.uuid)
- d1.put
+ d1 = OpenTox::Dataset.new
+ d1.save
datasets = OpenTox::Dataset.all
assert_equal OpenTox::Dataset, datasets.first.class
d1.delete
end
def test_create_empty
- d = OpenTox::Dataset.new #File.join($dataset[:uri],SecureRandom.uuid)
+ d = OpenTox::Dataset.new
assert_equal OpenTox::Dataset, d.class
- assert_match /#{$dataset[:uri]}/, d.uri.to_s
- end
-
- def test_head_id
- d = OpenTox::Dataset.new nil
- d.title = "head test"
- d.put
- response = `curl -Lki -H subjectid:#{OpenTox::RestClientWrapper.subjectid} #{d.uri}`
- assert_match /200/, response
- d.delete
+ refute_nil d.id
+ assert_kind_of BSON::ObjectId, d.id
end
def test_client_create
- d = OpenTox::Dataset.new nil
+ d = OpenTox::Dataset.new
assert_equal OpenTox::Dataset, d.class
- assert_match /#{$dataset[:uri]}/, d.uri.to_s
d[:title] = "Create dataset test"
# features not set
@@ -67,10 +31,10 @@ class DatasetTest < MiniTest::Test
# add data entries
d.features = ["test1", "test2"].collect do |title|
- f = OpenTox::Feature.new nil
+ f = OpenTox::Feature.new
f[:title] = title
- f[:type] = ["NumericFeature", "Feature"]
- f.put
+ f.numeric = true
+ f.save
f
end
@@ -85,26 +49,28 @@ class DatasetTest < MiniTest::Test
assert_equal 3, d.compounds.size
assert_equal 2, d.features.size
assert_equal [[1,2],[4,5],[6,7]], d.data_entries
-#p(JSON.pretty_generate(d["data"]))
-p d["data"]
- d.put
+ d.save
# check if dataset has been saved correctly
- new_dataset = OpenTox::Dataset.new d.uri
+ new_dataset = OpenTox::Dataset.find d.id
assert_equal 3, new_dataset.compounds.size
assert_equal 2, new_dataset.features.size
assert_equal [[1,2],[4,5],[6,7]], new_dataset.data_entries
d.delete
- assert_equal false, URI.accessible?(d.uri)
- assert_equal false, URI.accessible?(new_dataset.uri)
+ assert_raises Mongoid::Errors::DocumentNotFound do
+ OpenTox::Dataset.find d.id
+ end
+ assert_raises Mongoid::Errors::DocumentNotFound do
+ OpenTox::Dataset.find new_dataset.id
+ end
end
def test_dataset_accessors
- d = OpenTox::Dataset.new nil
+ d = OpenTox::Dataset.new
d.upload "#{DATA_DIR}/multicolumn.csv"
# create empty dataset
- new_dataset = OpenTox::Dataset.new d.uri
+ new_dataset = OpenTox::Dataset.find d.id
# get metadata
- assert_equal "multicolumn.csv", new_dataset["hasSource"]
+ assert_match "multicolumn.csv", new_dataset.source
assert_equal "multicolumn.csv", new_dataset.title
# get features
assert_equal 6, new_dataset.features.size
@@ -114,52 +80,56 @@ p d["data"]
end
def test_create_from_file
- d = OpenTox::Dataset.new nil
+ d = OpenTox::Dataset.new
d.upload File.join(DATA_DIR,"EPAFHM.mini.csv")
assert_equal OpenTox::Dataset, d.class
- refute_nil d["Warnings"]
- assert_equal "EPAFHM.mini.csv", d["hasSource"]
+ refute_nil d["warnings"]
+ assert_match "EPAFHM.mini.csv", d["source"]
assert_equal "EPAFHM.mini.csv", d.title
d.delete
- assert_equal false, URI.accessible?(d.uri)
+ #assert_equal false, URI.accessible?(d.uri)
end
def test_create_from_file_with_wrong_smiles_compound_entries
- d = OpenTox::Dataset.new nil
+ d = OpenTox::Dataset.new
d.upload File.join(DATA_DIR,"wrong_dataset.csv")
- refute_nil d["Warnings"]
- assert_match /2|3|4|5|6|7|8/, d["Warnings"]
+ refute_nil d["warnings"]
+ assert_match /2|3|4|5|6|7|8/, d["warnings"].join
d.delete
end
def test_multicolumn_csv
- d = OpenTox::Dataset.new nil
+ d = OpenTox::Dataset.new
d.upload "#{DATA_DIR}/multicolumn.csv"
- refute_nil d["Warnings"]
- assert d["Warnings"].grep(/Duplicate compound/)
- assert d["Warnings"].grep(/3, 5/)
+ refute_nil d["warnings"]
+ assert d["warnings"].grep(/Duplicate compound/)
+ assert d["warnings"].grep(/3, 5/)
assert_equal 6, d.features.size
assert_equal 7, d.compounds.size
- assert_equal 5, d.compounds.collect{|c| c.uri}.uniq.size
- assert_equal [["1", "1", "true", "true", "test", "1.1"], ["1", "2", "false", "7.5", "test", "0.24"], ["1", "3", "true", "5", "test", "3578.239"], ["0", "4", "false", "false", "test", "-2.35"], ["1", "2", "true", "4", "test_2", "1"], ["1", "2", "false", "false", "test", "-1.5"], ["1", nil, "false", nil, nil, "1.0"]], d.data_entries
+ assert_equal 5, d.compounds.collect{|c| c.inchi}.uniq.size
+ assert_equal [["1", "1", "true", "true", "test", 1.1], ["1", "2", "false", "7.5", "test", 0.24], ["1", "3", "true", "5", "test", 3578.239], ["0", "4", "false", "false", "test", -2.35], ["1", "2", "true", "4", "test_2", 1], ["1", "2", "false", "false", "test", -1.5], ["1", nil, "false", nil, nil, 1.0]], d.data_entries
assert_equal "c1cc[nH]c1,1,,false,,,1.0", d.to_csv.split("\n")[7]
- csv = CSV.parse(OpenTox::RestClientWrapper.get d.uri, {}, {:accept => 'text/csv'})
+ csv = CSV.parse(d.to_csv)
original_csv = CSV.read("#{DATA_DIR}/multicolumn.csv")
csv.shift
original_csv.shift
csv.each_with_index do |row,i|
- compound = OpenTox::Compound.from_inchi row.shift
+ compound = OpenTox::Compound.from_smiles row.shift
original_compound = OpenTox::Compound.from_smiles original_csv[i].shift
- assert_equal original_compound.uri, compound.uri
- # AM: multicol does not parse correctly NA into nil
- assert_equal original_csv[i].collect{|v| (v.class == String) ? ((v.strip == "") ? nil : v.strip) : v}, row
+ assert_equal original_compound.inchi, compound.inchi
+ row.each_with_index do |v,j|
+ if v.numeric?
+ assert_equal original_csv[i][j].strip.to_f, row[j].to_f
+ else
+ assert_equal original_csv[i][j].strip, row[j].to_s
+ end
+ end
end
d.delete
- assert_equal false, URI.accessible?(d.uri)
end
def test_from_csv
- d = OpenTox::Dataset.new nil
+ d = OpenTox::Dataset.new
d.upload "#{DATA_DIR}/hamster_carcinogenicity.csv"
assert_equal OpenTox::Dataset, d.class
assert_equal 1, d.features.size
@@ -169,12 +139,12 @@ p d["data"]
csv.shift
assert_equal csv.collect{|r| r[1]}, d.data_entries.flatten
d.delete
- assert_equal false, URI.accessible?(d.uri)
+ #assert_equal false, URI.accessible?(d.uri)
end
def test_from_csv_classification
["int", "float", "string"].each do |mode|
- d = OpenTox::Dataset.new nil
+ d = OpenTox::Dataset.new
d.upload "#{DATA_DIR}/hamster_carcinogenicity.mini.bool_#{mode}.csv"
csv = CSV.read("#{DATA_DIR}/hamster_carcinogenicity.mini.bool_#{mode}.csv")
csv.shift
@@ -183,31 +153,17 @@ p d["data"]
assert_equal r[1].to_s, entries[i]
end
d.delete
- assert_equal false, URI.accessible?(d.uri)
end
end
- def test_from_xls
- d = OpenTox::Dataset.new nil
- d.upload "#{DATA_DIR}/hamster_carcinogenicity.xls"
- assert_equal OpenTox::Dataset, d.class
- assert_equal 1, d.features.size
- assert_equal 85, d.compounds.size
- assert_equal 85, d.data_entries.size
- d.delete
- assert_equal false, URI.accessible?(d.uri)
- end
-
def test_from_csv2
File.open("#{DATA_DIR}/temp_test.csv", "w+") { |file| file.write("SMILES,Hamster\nCC=O,true\n ,true\nO=C(N),true") }
- dataset = OpenTox::Dataset.new nil
+ dataset = OpenTox::Dataset.new
dataset.upload "#{DATA_DIR}/temp_test.csv"
- assert_equal true, URI.accessible?(dataset.uri)
- assert_equal "Cannot parse SMILES compound '' at position 3, all entries are ignored.", dataset["Warnings"]
+ assert_equal "Cannot parse SMILES compound '' at position 3, all entries are ignored.", dataset["warnings"].join
File.delete "#{DATA_DIR}/temp_test.csv"
- dataset.features.each{|f| feature = OpenTox::Feature.find f.uri; feature.delete}
+ dataset.features.each{|f| feature = OpenTox::Feature.find f.id; feature.delete}
dataset.delete
- assert_equal false, URI.accessible?(dataset.uri)
end
def test_compound_index_mapping
@@ -251,11 +207,10 @@ p d["data"]
datasets = []
features = []
2.times do |i|
- d = OpenTox::Dataset.new nil
+ d = OpenTox::Dataset.new
d.upload "#{DATA_DIR}/hamster_carcinogenicity.mini.csv"
features << d.features.first
- puts features.last.metadata
- assert features[0].uri==features[-1].uri,"re-upload should find old feature, but created new one"
+ assert features[0].id==features[-1].id,"re-upload should find old feature, but created new one"
datasets << d
end
datasets.each{|d| d.delete}
@@ -263,37 +218,3 @@ p d["data"]
end
-=begin
-class DatasetRestTest < MiniTest::Test
-
- def test_01_get_uri_list
- result = OpenTox::RestClientWrapper.get $dataset[:uri], {}, { :accept => 'text/uri-list', :subjectid => SUBJECTID }
- assert_equal 200, result.code
- end
-
- # check if default response header is text/uri-list
- def test_02_get_datasetlist_type
- result = OpenTox::RestClientWrapper.get $dataset[:uri], {}, { :accept => 'text/uri-list', :subjectid => SUBJECTID }
- assert_equal "text/uri-list", result.headers[:content_type]
- end
-
- # check post to investigation service without file
- def test_10_post_dataset_400_no_file
- #result = OpenTox::RestClientWrapper.post $dataset[:uri], {}, { :subjectid => $pi[:subjectid] }
- #assert_equal 200, result.code
- end
-
- def test_11_post_dataset
- response = OpenTox::RestClientWrapper.post $dataset[:uri], {:file => File.join(File.dirname(__FILE__), "data", "hamster_carcinogenicity.csv") }, { :content_type => "text/csv", :subjectid => $pi[:subjectid] }
- assert_equal 200, response.code
- task_uri = response.chomp
- puts task_uri
- task = OpenTox::Task.new task_uri
- task.wait
- uri = task.resultURI
- puts uri
- @@uri = URI(uri)
- end
-
-end
-=end