summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Gütlein <martin.guetlein@gmail.com>2010-01-08 09:52:29 +0100
committerMartin Gütlein <martin.guetlein@gmail.com>2010-01-08 09:52:29 +0100
commitbb404c382a5929445cdf89706bb8ad831f71259c (patch)
tree819fc9a8f2d251de25bbaa3b3627f0e74ae6e059
parenta6cbe221d074e07f9356ccf1bac336d4f2addd98 (diff)
removed suburi-prefix validation (to avoid name server/validation/validation)
print warning when R_HOME is missing instead of raising error
-rw-r--r--EXAMPLES25
-rw-r--r--application.rb9
-rw-r--r--example.rb8
-rw-r--r--lib/predictions.rb7
-rw-r--r--report/r_plot_factory.rb7
-rw-r--r--report/report_test.rb14
-rw-r--r--report/validation_access.rb2
-rw-r--r--validation/validation_application.rb16
-rw-r--r--validation/validation_service.rb6
-rw-r--r--validation/validation_test.rb26
10 files changed, 68 insertions, 52 deletions
diff --git a/EXAMPLES b/EXAMPLES
index d984c96..cdf2b47 100644
--- a/EXAMPLES
+++ b/EXAMPLES
@@ -15,21 +15,21 @@ the examples listed below can be performed with the command line tool curl
get list of available validations
-------------------------------------------------------------------
->>> curl <validation_service>/validations
+>>> curl <validation_service>
result example (accept-header: application/rdf-xml)
<<< not yet supported
result example (accept-header: text/uri-list)
-<<< <validation_service>/validation/<validation_id>
-<<< <validation_service>/validation/validation_id_i
-<<< <validation_service>/validation/validation_id_j
+<<< <validation_service>/<validation_id>
+<<< <validation_service>/validation_id_i
+<<< <validation_service>/validation_id_j
get validation
-------------------------------------------------------------------
->>> curl <validation_service>/validation/<validation_id>
+>>> curl <validation_service>/<validation_id>
supported accept-headers: "text/x-yaml" and "application/rdf-xml"
@@ -40,13 +40,13 @@ validate model on test-dateset
>>> curl -X POST -d model_uri="<model_uri>" \
-d test_dataset_uri="<test_dataset_uri>" \
-d prediction_feature="<prediction_feature>" \
- <validation_service>/validation
+ <validation_service>
result example (accept-header: application/rdf-xml)
<<< not yet supported
result example (accept-header: text/uri-list)
-<<< <validation_service>/validation/id_i
+<<< <validation_service>/id_i
validate an algorithm on a training- and test-dataset
@@ -57,7 +57,7 @@ validate an algorithm on a training- and test-dataset
-d test_dataset_uri="<test_dataset_uri>" \
-d prediction_feature="<prediction_feature>" \
-d algorithm_params="<algorithm_params>" \
- <validation_service>/validation
+ <validation_service>
optional params:
algorithm_params, default is empty
@@ -66,7 +66,7 @@ result example (accept-header: application/rdf-xml)
<<< not yet supported
result example (accept-header: text/uri-list)
-<<< <validation_service>/validation/id_i
+<<< <validation_service>/id_i
validate an algorithm on a dataset via training-test-split
@@ -78,7 +78,7 @@ validate an algorithm on a dataset via training-test-split
-d algorithm_params="<algorithm_params>" \
-d split_ratio=0.9 \
-d random_seed=2 \
- <validation_service>/validation/training_test_split
+ <validation_service>/training_test_split
optional params:
algorithm_params, default is empty
@@ -89,13 +89,13 @@ result example (accept-header: application/rdf-xml)
<<< not yet supported
result example (accept-header: text/uri-list)
-<<< <validation_service>/validation/id_i
+<<< <validation_service>/id_i
get list of available crossvalidations
-------------------------------------------------------------------
->>> curl <validation_service>/crossvalidations
+>>> curl <validation_service>/crossvalidation
result example (accept-header: application/rdf-xml)
<<< not yet supported
@@ -115,6 +115,7 @@ supported accept-headers: "text/x-yaml" and "application/rdf-xml"
validate an algorithm on a dataset via crossvalidation
+(may take a couple of minutes)
-------------------------------------------------------------------
>>> curl -X POST -d algorithm_uri="<algorithm_uri>" \
diff --git a/application.rb b/application.rb
index feb19b1..82be7bb 100644
--- a/application.rb
+++ b/application.rb
@@ -1,6 +1,5 @@
-require "validation/validation_application.rb"
-require "report/report_application.rb"
+
require "example.rb"
[ 'rubygems', 'sinatra', 'sinatra/url_for' ].each do |lib|
@@ -17,5 +16,11 @@ get '/prepare_examples/?' do
"done"
end
+# order is important, first add example methods, than validation
+# (otherwise sinatra will try to locate a validation with name examples)
+
+require "validation/validation_application.rb"
+require "report/report_application.rb"
+
diff --git a/example.rb b/example.rb
index 80ae3b0..5ba4aa1 100644
--- a/example.rb
+++ b/example.rb
@@ -1,4 +1,8 @@
+[ 'opentox-ruby-api-wrapper' ].each do |lib|
+ require lib
+end
+
class Example
@@file=File.new("data/hamster_carcinogenicity.owl","r")
@@ -53,12 +57,12 @@ class Example
Lib::Validation.auto_migrate!
delete_all(@@config[:services]["opentox-model"])
- vali_uri = RestClient.post File.join(@@config[:services]["opentox-validation"],'/validation/training_test_split'), { :dataset_uri => data_uri,
+ vali_uri = RestClient.post File.join(@@config[:services]["opentox-validation"],'/training_test_split'), { :dataset_uri => data_uri,
:algorithm_uri => @@alg,
:prediction_feature => @@feature,
:algorithm_params => @@alg_params }
puts "created validation via training test split "+vali_uri
- raise "failed to prepare demo" unless vali_uri==File.join(@@config[:services]["opentox-validation"],'/validation/1')
+ raise "failed to prepare demo" unless vali_uri==File.join(@@config[:services]["opentox-validation"],'/1')
Lib::Crossvalidation.auto_migrate!
cv_uri = RestClient.post File.join(@@config[:services]["opentox-validation"],'/crossvalidation'), { :dataset_uri => data_uri,
diff --git a/lib/predictions.rb b/lib/predictions.rb
index 88e8d6c..adc5882 100644
--- a/lib/predictions.rb
+++ b/lib/predictions.rb
@@ -1,6 +1,9 @@
-raise "Environment variable R_HOME missing" unless ENV['R_HOME']
-ENV['PATH'] = ENV['R_HOME']+":"+ENV['PATH'] unless ENV['PATH'].split(":").index(ENV['R_HOME'])
+if ENV['R_HOME']
+ ENV['PATH'] = ENV['R_HOME']+":"+ENV['PATH'] unless ENV['PATH'].split(":").index(ENV['R_HOME'])
+else
+ LOGGER.warn "Environment variable R_HOME not set"
+end
require 'rinruby'
module Lib
diff --git a/report/r_plot_factory.rb b/report/r_plot_factory.rb
index cff8e14..5c154b4 100644
--- a/report/r_plot_factory.rb
+++ b/report/r_plot_factory.rb
@@ -1,7 +1,10 @@
# the r-path has to be added for the rinruby plugin
-raise "Environment variable R_HOME missing" unless ENV['R_HOME']
-ENV['PATH'] = ENV['R_HOME']+":"+ENV['PATH'] unless ENV['PATH'].split(":").index(ENV['R_HOME'])
+if ENV['R_HOME']
+ ENV['PATH'] = ENV['R_HOME']+":"+ENV['PATH'] unless ENV['PATH'].split(":").index(ENV['R_HOME'])
+else
+ LOGGER.warn "Environment variable R_HOME not set"
+end
require "rinruby"
diff --git a/report/report_test.rb b/report/report_test.rb
index 6ac8810..279e968 100644
--- a/report/report_test.rb
+++ b/report/report_test.rb
@@ -31,26 +31,26 @@ require "'lib/test_util.rb"
# get '/osterhase'
# assert last_response.not_found?
#
-# post '/validation', :uri_list => "validation_uri_1\nvalidation_uri_2"
+# post '', :uri_list => "validation_uri_1\nvalidation_uri_2"
# assert last_response.status == 400
#
-# post '/validation', :uri_list => "validation_uri_1"
+# post '', :uri_list => "validation_uri_1"
# assert last_response.ok?
# report_uri = last_response.body
# type = $rep.parse_type(report_uri)
# assert type == "validation"
# id = $rep.parse_id(report_uri)
#
-# get '/validation/'+id.to_s, {}, {"HTTP_ACCEPT" => "weihnachtsmann"}
+# get '/'+id.to_s, {}, {"HTTP_ACCEPT" => "weihnachtsmann"}
# assert last_response.status == 400
-# get '/validation/'+id.to_s, {}, {"HTTP_ACCEPT" => "text/xml"}
+# get '/'+id.to_s, {}, {"HTTP_ACCEPT" => "text/xml"}
# assert last_response.ok?
-# get '/validation/'+id.to_s, {}, {"HTTP_ACCEPT" => "text/html"}
+# get '/'+id.to_s, {}, {"HTTP_ACCEPT" => "text/html"}
# assert last_response.ok?
#
-# delete '/validation/43984398'
+# delete '/43984398'
# assert last_response.not_found?
-# delete '/validation/'+id.to_s
+# delete '/'+id.to_s
# assert last_response.ok?
#
# map = {"crossvalidation"=>"validation_uri_1\nvalidation_uri_2\nvalidation_uri_3\nvalidation_uri_4\nvalidation_uri_5",
diff --git a/report/validation_access.rb b/report/validation_access.rb
index 2526e01..2187f46 100644
--- a/report/validation_access.rb
+++ b/report/validation_access.rb
@@ -48,7 +48,7 @@ class Reports::ValidationDB < Reports::ValidationAccess
def init_validation(validation, uri)
- raise Reports::BadRequest.new "not a validation uri: "+uri.to_s unless uri =~ /.*\/validation\/[0-9]+/
+ raise Reports::BadRequest.new "not a validation uri: "+uri.to_s unless uri =~ /.*\/[0-9]+/
validation_id = uri.split("/")[-1]
v = Lib::Validation.get(validation_id)
raise Reports::BadRequest.new "no validation found with id "+validation_id.to_s unless v
diff --git a/validation/validation_application.rb b/validation/validation_application.rb
index 05909c5..5921907 100644
--- a/validation/validation_application.rb
+++ b/validation/validation_application.rb
@@ -23,7 +23,7 @@ class Sinatra::Base
end
## REST API
-get '/crossvalidations/?' do
+get '/crossvalidation/?' do
LOGGER.info "list all crossvalidations"
Crossvalidation.all.collect{ |d| url_for("/crossvalidation/", :full) + d.id.to_s }.join("\n")
end
@@ -71,12 +71,12 @@ post '/crossvalidation/?' do
cv.uri
end
-get '/validations/?' do
+get '/?' do
LOGGER.info "list all validations"
- Validation.all.collect{ |d| url_for("/validation/", :full) + d.id.to_s }.join("\n")
+ Validation.all.collect{ |d| url_for("/", :full) + d.id.to_s }.join("\n")
end
-get '/validation/:id' do
+get '/:id' do
LOGGER.info "get validation with id "+params[:id].to_s+" '"+request.env['HTTP_ACCEPT'].to_s+"'"
halt 404, "Validation '#{params[:id]}' not found." unless validation = Validation.get(params[:id])
@@ -93,7 +93,7 @@ get '/validation/:id' do
result
end
-post '/validation/?' do
+post '/?' do
LOGGER.info "creating validation "+params.inspect
if params[:model_uri] and params[:test_dataset_uri] and !params[:training_dataset_uri] and !params[:algorithm_uri] and params[:prediction_feature]
v = Validation.new :model_uri => params[:model_uri],
@@ -115,7 +115,7 @@ post '/validation/?' do
v.uri
end
-post '/validation/training_test_split' do
+post '/training_test_split' do
LOGGER.info "creating training test split "+params.inspect
halt 400, "dataset_uri missing" unless params[:dataset_uri]
halt 400, "algorithm_uri missing" unless params[:algorithm_uri]
@@ -129,7 +129,7 @@ post '/validation/training_test_split' do
v.uri
end
-get '/validation/:id/:attribute' do
+get '/:id/:attribute' do
LOGGER.info "access validation attribute "+params.inspect
halt 404, "Validation #{params[:id]} not found." unless validation = Validation.get(params[:id])
begin
@@ -140,7 +140,7 @@ get '/validation/:id/:attribute' do
return validation.send(params[:attribute])
end
-delete '/validation/:id' do
+delete '/:id' do
LOGGER.info "delete validation with id "+params[:id].to_s
halt 404, "Validation #{params[:id]} not found." unless validation = Validation.get(params[:id])
validation.delete
diff --git a/validation/validation_service.rb b/validation/validation_service.rb
index 4f738fb..88ac28f 100644
--- a/validation/validation_service.rb
+++ b/validation/validation_service.rb
@@ -41,7 +41,7 @@ class Validation < Lib::Validation
super params
save unless attribute_dirty?("id")
raise "internal error, id not set "+to_yaml unless @id
- update :uri => $sinatra.url_for("/validation/"+@id.to_s, :full)
+ update :uri => $sinatra.url_for("/"+@id.to_s, :full)
end
# deletes a validation
@@ -240,7 +240,7 @@ class Crossvalidation < Lib::Crossvalidation
'_f'+n.to_s+'of'+@num_folds.to_s+
'_r'+@random_seed.to_s+
'_s'+@stratified.to_s
- source = $sinatra.url_for('/validation/crossvalidation',:full)
+ source = $sinatra.url_for('/crossvalidation',:full)
test_compounds = []
train_compounds = []
@@ -345,7 +345,7 @@ module ValidationUtil
else
title = "Test dataset split of "+orig_dataset.title.to_s
end
- source = $sinatra.url_for('/validation/training_test_split',:full)
+ source = $sinatra.url_for('/training_test_split',:full)
result[sym] = create_new_dataset( data, compound_array, title, source )
end
diff --git a/validation/validation_test.rb b/validation/validation_test.rb
index 350e973..680e459 100644
--- a/validation/validation_test.rb
+++ b/validation/validation_test.rb
@@ -42,7 +42,7 @@ class ValidationTest < Test::Unit::TestCase
end
# def test_all_validations
-# get '/validations'
+# get '/'
# assert last_response.ok?
# puts "all validations:\n"+last_response.body
# validations = last_response.body.split("\n")
@@ -101,11 +101,11 @@ class ValidationTest < Test::Unit::TestCase
## # assert that both cross validaitons use the same datasets
## first_validation2 = last_response.body.split("\n")[0].split("/")[-1]
##
-## get '/validation/'+first_validation+'/test_dataset_uri'
+## get '/'+first_validation+'/test_dataset_uri'
## assert last_response.ok?
## first_val_test_data = last_response.body
##
-## get '/validation/'+first_validation2+'/test_dataset_uri'
+## get '/'+first_validation2+'/test_dataset_uri'
## assert last_response.ok?
## first_val2_test_data = last_response.body
## assert first_val_test_data==first_val2_test_data
@@ -137,7 +137,7 @@ class ValidationTest < Test::Unit::TestCase
# model_uri = "http://ot.model.de/45" #trained with training split from hamster
# data_uri_test = "http://ot.dataset.de/367" #hamster test split
#
-# post '/validation', {:test_dataset_uri => data_uri_test, :model_uri => model_uri, :prediction_feature => FEATURE_URI}
+# post '', {:test_dataset_uri => data_uri_test, :model_uri => model_uri, :prediction_feature => FEATURE_URI}
# verify_validation
# ensure
# #delete_resources
@@ -147,13 +147,13 @@ class ValidationTest < Test::Unit::TestCase
# def test_validate_algorithm
# begin
#
-# #get '/validation/41',nil,'HTTP_ACCEPT' => "application/rdf+xml" #"text/x-yaml"
+# #get '/41',nil,'HTTP_ACCEPT' => "application/rdf+xml" #"text/x-yaml"
# #puts last_response.body
# data_uri_train = upload_data(WS_DATA, FILE_TRAIN)
# data_uri_test = upload_data(WS_DATA, FILE_TEST)
# #data_uri_train = WS_DATA+"/"+DATA_TRAIN
# #data_uri_test = WS_DATA+"/"+DATA_TEST
-# post '/validation', { :training_dataset_uri => data_uri_train, :test_dataset_uri => data_uri_test,
+# post '', { :training_dataset_uri => data_uri_train, :test_dataset_uri => data_uri_test,
# :algorithm_uri => WS_CLASS_ALG, :prediction_feature => FEATURE_URI, :feature_generation_uri => WS_FEATURE_ALG}
# verify_validation
# ensure
@@ -168,7 +168,7 @@ class ValidationTest < Test::Unit::TestCase
# #data_uri = "http://ot.dataset.de/67" #hamster
#
# #data_uri=WS_DATA+"/"+DATA
-# post '/validation/training_test_split', { :dataset_uri => data_uri, :algorithm_uri => WS_CLASS_ALG, :prediction_feature => FEATURE_URI,
+# post '/training_test_split', { :dataset_uri => data_uri, :algorithm_uri => WS_CLASS_ALG, :prediction_feature => FEATURE_URI,
# :algorithm_params => "feature_generation_uri="+WS_FEATURE_ALG, :split_ratio=>0.8, :random_seed=>5}
# verify_validation
# ensure
@@ -182,8 +182,8 @@ class ValidationTest < Test::Unit::TestCase
get '/examples'
- #get '/validation/350',nil,'HTTP_ACCEPT' => "application/rdf+xml"
- #get '/validation/350',nil,'HTTP_ACCEPT' => "text/x-yaml"
+ #get '/350',nil,'HTTP_ACCEPT' => "application/rdf+xml"
+ #get '/350',nil,'HTTP_ACCEPT' => "text/x-yaml"
#get '/crossvalidation/1',nil,'HTTP_ACCEPT' => "application/rdf+xml"
#get '/crossvalidation/1',nil,'HTTP_ACCEPT' => "text/x-yaml"
@@ -200,15 +200,15 @@ class ValidationTest < Test::Unit::TestCase
puts "uri: "+last_response.body
puts "id:"+validation_id
- add_resource("/validation/"+validation_id) if delete
+ add_resource("/"+validation_id) if delete
- #get '/validation/'+validation_id,nil,'HTTP_ACCEPT' => "application/rdf+xml"
- get '/validation/'+validation_id,nil,'HTTP_ACCEPT' => "text/x-yaml"
+ #get '/'+validation_id,nil,'HTTP_ACCEPT' => "application/rdf+xml"
+ get '/'+validation_id,nil,'HTTP_ACCEPT' => "text/x-yaml"
puts last_response.body
assert last_response.ok? || last_response.status==202
# ["test_dataset_uri", "model_uri", "prediction_dataset_uri"].each do |t|
-# get '/validation/'+validation_id+'/'+t
+# get '/'+validation_id+'/'+t
# puts ""+t+": "+last_response.body
# assert last_response.ok?
#