diff options
author | Christoph Helma <helma@in-silico.de> | 2009-09-10 15:18:30 +0200 |
---|---|---|
committer | Christoph Helma <helma@in-silico.de> | 2009-09-10 15:18:30 +0200 |
commit | 5bbc940778b67b0ced009acd2cc735fd290031fc (patch) | |
tree | 3a217f3c6466b7ec452d8f6433c8ceef23ab3418 | |
parent | 525a9229395070f04c54fe6aec3c2cd5e64235cd (diff) |
tests for dependent webservices successful
-rw-r--r-- | application.rb | 25 | ||||
-rw-r--r-- | dataset.rb | 8 | ||||
-rw-r--r-- | import.rb | 8 | ||||
-rw-r--r-- | test/test.rb | 20 |
4 files changed, 45 insertions, 16 deletions
diff --git a/application.rb b/application.rb index 2ebbbc8..5c4722c 100644 --- a/application.rb +++ b/application.rb @@ -13,9 +13,10 @@ when 'test' @@redis.flush_db end -set :default_content, :yaml load File.join(File.dirname(__FILE__), 'dataset.rb') +set :default_content, :yaml + helpers do def find @@ -38,16 +39,27 @@ get '/datasets/?' do Dataset.find_all.join("\n") end -get '/dataset/*/tanimoto/*/?' do +get '/algorithm/tanimoto/dataset/*/dataset/*/?' do find @set.tanimoto(uri(params[:splat][1])) end -get '/dataset/*/weighted_tanimoto/*/?' do + +get '/algorithm/weighted_tanimoto/dataset/*/dataset/*/?' do find @set.weighted_tanimoto(uri(params[:splat][1])) end +get '/dataset/*/name/?' do + find + URI.decode @set.name +end + +get '/dataset/*/features/?' do + find + @set.features.join("\n") +end + # catch the rest get '/dataset/*/?' do find @@ -60,6 +72,7 @@ post '/datasets/?' do halt 403, "Dataset \"#{dataset_uri}\" exists." if Dataset.find(dataset_uri) @set = Dataset.create(dataset_uri) @set.add Dataset.create(File.join(dataset_uri, "compounds")).uri + @set.add Dataset.create(File.join(dataset_uri, "features")).uri @set.uri end @@ -69,11 +82,13 @@ load 'import.rb' post '/dataset/*/?' do find @compounds_set = Dataset.find File.join(@set.uri, "compounds") + @features_set = Dataset.find File.join(@set.uri, "features") YAML.load(params[:features]).each do |compound_uri,feature_uris| - # key: /dataset/:dataset/compound/:inchi/:feature_type - @compound_features = Dataset.find_or_create File.join(@set.uri,'compound',OpenTox::Compound.new(:uri => compound_uri).inchi,URI.escape(params[:feature_type])) + # key: /dataset/:dataset/compound/:inchi + @compound_features = Dataset.find_or_create File.join(@set.uri,'compound',OpenTox::Compound.new(:uri => compound_uri).inchi) feature_uris.each do |feature_uri| @compounds_set.add compound_uri + @features_set.add feature_uri @compound_features.add feature_uri end end @@ -6,7 +6,7 @@ class Dataset def initialize(uri) @uri = uri begin - @name = URI.split(uri)[5] + @name = URI.split(uri)[5].sub(/\/dataset\//,'') rescue puts "Bad URI #{uri}" end @@ -56,6 +56,10 @@ class Dataset @@redis.set_intersect(@uri,set_uri) end + def features + @@redis.set_members(File.join(@uri,'features')) + end + def tanimoto(set_uri) union_size = @@redis.set_union(@uri,set_uri).size intersect_size = @@redis.set_intersect(@uri,set_uri).size @@ -63,6 +67,8 @@ class Dataset end def weighted_tanimoto(set_uri) + puts set_uri + puts @@redis.set_members(set_uri).to_yaml union = @@redis.set_union(@uri,set_uri) intersect = @@redis.set_intersect(@uri,set_uri) @@ -2,15 +2,17 @@ post '/dataset/*/import/?' do find halt 404, "Compound format #{params[:compound_format]} not (yet) supported" unless params[:compound_format] =~ /smiles|inchi|name/ @compounds_set = Dataset.find File.join(@set.uri, "compounds") + @features_set = Dataset.find File.join(@set.uri, "features") case params[:file][:type] when "text/csv" File.open(params[:file][:tempfile].path).each_line do |line| record = line.chomp.split(/,\s*/) compound_uri = OpenTox::Compound.new(:smiles => record[0]).uri feature_uri = OpenTox::Feature.new(:name => @set.name.sub(/dataset\//,''), :values => {:classification => record[1]}).uri - @compounds_set.add compound_uri unless @compounds_set.member? compound_uri - # key: /dataset/:dataset/compound/:inchi/:feature_type - @compound_features = Dataset.find_or_create File.join(@set.uri,'compound',OpenTox::Compound.new(:uri => compound_uri).inchi,URI.escape(params[:feature_type])) + @compounds_set.add compound_uri #unless @compounds_set.member? compound_uri + @features_set.add feature_uri #unless @features_set.member? feature_uri + # key: /dataset/:dataset/compound/:inchi + @compound_features = Dataset.find_or_create File.join(@set.uri,'compound',OpenTox::Compound.new(:uri => compound_uri).inchi) @compound_features.add feature_uri end else diff --git a/test/test.rb b/test/test.rb index 603e27d..8da6c88 100644 --- a/test/test.rb +++ b/test/test.rb @@ -26,6 +26,10 @@ class DatasetsTest < Test::Unit::TestCase assert_equal "http://example.org/dataset/Test%20dataset", uri get uri assert last_response.ok? + get uri + '/name' + puts last_response.body + assert last_response.ok? + assert_equal "Test dataset", last_response.body delete uri assert last_response.ok? get uri @@ -38,15 +42,17 @@ class DatasetsTest < Test::Unit::TestCase post '/datasets', :name => "Hamster Carcinogenicity" uri = last_response.body assert last_response.ok? - post uri + '/import', :file => Rack::Test::UploadedFile.new(File.join(File.dirname(__FILE__), "hamster_carcinogenicity.csv"), "text/csv"), :compound_format => "smiles", :feature_type => "in vivo carcinogenicity" + post uri + '/import', :file => Rack::Test::UploadedFile.new(File.join(File.dirname(__FILE__), "hamster_carcinogenicity.csv"), "text/csv"), :compound_format => "smiles" get uri assert last_response.ok? get uri + '/compounds' assert last_response.ok? assert last_response.body.include?(compound.inchi) - get File.join(uri , 'compound', compound.inchi, URI.encode("in vivo carcinogenicity")) + get File.join(uri , 'compound', compound.inchi) assert last_response.ok? assert last_response.body.include?("Hamster%20Carcinogenicity/classification/true") + get File.join(uri , 'features') + puts last_response.body.to_yaml delete uri assert last_response.ok? get uri @@ -57,7 +63,7 @@ class DatasetsTest < Test::Unit::TestCase def test_create_large_dataset_from_csv post '/datasets', :name => "Salmonella Mutagenicity" uri = last_response.body - post uri + '/import', :file => Rack::Test::UploadedFile.new(File.join(File.dirname(__FILE__), "kazius.csv"), "text/csv"), :compound_format => "smiles", :feature_type => "activity" + post uri + '/import', :file => Rack::Test::UploadedFile.new(File.join(File.dirname(__FILE__), "kazius.csv"), "text/csv"), :compound_format => "smiles" uri = last_response.body get uri assert last_response.ok? @@ -111,7 +117,7 @@ class DatasetsTest < Test::Unit::TestCase end end - post uri , :features => feature_data.to_yaml, :feature_type => 'test' + post uri , :features => feature_data.to_yaml assert last_response.ok? data.each do |smiles,features| @@ -121,9 +127,9 @@ class DatasetsTest < Test::Unit::TestCase neighbor= OpenTox::Compound.new(:smiles => s).inchi get "/dataset/#{name}/compounds" assert last_response.ok? - get "/dataset/#{name}/compound/#{compound}/test" + get "/dataset/#{name}/compound/#{compound}" assert last_response.ok? - get "/dataset/#{name}/compound/#{compound}/test/tanimoto/#{name}/compound/#{neighbor}/test" + get "/algorithm/tanimoto/dataset/#{name}/compound/#{compound}/dataset/#{name}/compound/#{neighbor}" puts last_response.body assert last_response.ok? sim = last_response.body @@ -134,7 +140,7 @@ class DatasetsTest < Test::Unit::TestCase mysim = intersect.size.to_f/union.size.to_f assert_equal sim, mysim.to_s puts "tanimoto::#{smiles}::#{s}::#{last_response.body}" - get "/dataset/#{name}/compound/#{compound}/test/weighted_tanimoto/#{name}/compound/#{neighbor}/test" + get "/algorithm/weighted_tanimoto/dataset/#{name}/compound/#{compound}/dataset/#{name}/compound/#{neighbor}" assert last_response.ok? puts "weighted_tanimoto::#{smiles}::#{s}::#{last_response.body}" end |