diff options
Diffstat (limited to 'test/dataset.rb')
-rw-r--r-- | test/dataset.rb | 181 |
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 |