summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.de>2009-09-10 15:18:30 +0200
committerChristoph Helma <helma@in-silico.de>2009-09-10 15:18:30 +0200
commit5bbc940778b67b0ced009acd2cc735fd290031fc (patch)
tree3a217f3c6466b7ec452d8f6433c8ceef23ab3418
parent525a9229395070f04c54fe6aec3c2cd5e64235cd (diff)
tests for dependent webservices successful
-rw-r--r--application.rb25
-rw-r--r--dataset.rb8
-rw-r--r--import.rb8
-rw-r--r--test/test.rb20
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
diff --git a/dataset.rb b/dataset.rb
index 82d228f..435e9dc 100644
--- a/dataset.rb
+++ b/dataset.rb
@@ -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)
diff --git a/import.rb b/import.rb
index de6f60b..86b5480 100644
--- a/import.rb
+++ b/import.rb
@@ -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