summaryrefslogtreecommitdiff
path: root/validation/validation_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'validation/validation_test.rb')
-rwxr-xr-x[-rw-r--r--]validation/validation_test.rb352
1 files changed, 316 insertions, 36 deletions
diff --git a/validation/validation_test.rb b/validation/validation_test.rb
index cbaa84b..ffb25c4 100644..100755
--- a/validation/validation_test.rb
+++ b/validation/validation_test.rb
@@ -1,3 +1,11 @@
+
+require "rubygems"
+require "sinatra"
+before {
+ request.env['HTTP_HOST']="local-ot/validation"
+ request.env["REQUEST_URI"]=request.env["PATH_INFO"]
+}
+
require "uri"
require "yaml"
ENV['RACK_ENV'] = 'test'
@@ -7,70 +15,338 @@ require 'rack/test'
require 'lib/test_util.rb'
require 'test/test_examples.rb'
-LOGGER = MyLogger.new(STDOUT)
+LOGGER = OTLogger.new(STDOUT)
LOGGER.datetime_format = "%Y-%m-%d %H:%M:%S "
LOGGER.formatter = Logger::Formatter.new
+if AA_SERVER
+ TEST_USER = "mgtest"
+ TEST_PW = "mgpasswd"
+ #TEST_USER = "guest"
+ #TEST_PW = "guest"
+ SUBJECTID = OpenTox::Authorization.authenticate(TEST_USER,TEST_PW)
+ raise "could not log in" unless SUBJECTID
+ puts "logged in: "+SUBJECTID.to_s
+else
+ puts "AA disabled"
+ SUBJECTID = nil
+end
+
+#Rack::Test::DEFAULT_HOST = "local-ot" #"/validation"
+module Sinatra
+
+ set :raise_errors, false
+ set :show_exceptions, false
+
+ module UrlForHelper
+ BASE = "http://local-ot/validation"
+ def url_for url_fragment, mode=:path_only
+ case mode
+ when :path_only
+ raise "not impl"
+ when :full
+ end
+ "#{BASE}#{url_fragment}"
+ end
+ end
+end
+
class ValidationTest < Test::Unit::TestCase
include Rack::Test::Methods
include Lib::TestUtil
def test_it
- $test_case = self
+ begin
+ $test_case = self
+
+# prediction_feature = "https://ambit.uni-plovdiv.bg:8443/ambit2/feature/26221"
+# puts OpenTox::Feature.find(prediction_feature).domain.inspect
+# exit
+
+# begin
+# #OpenTox::RestClientWrapper.get "http://local-ot/validation/runtime-error",{:accept => "application/rdf+xml"}
+# puts OpenTox::RestClientWrapper.post "http://opentox.ntua.gr:4000/model/0d8a9a27-3481-4450-bca1-d420a791de9d",
+# { :asdfasdf => "asdfasdf" } #{:dataset=>"http://apps.ideaconsult.net:8080/ambit2/dataset/54?max=2"},
+# { :accept => "text/uri-list", :subjectid => SUBJECTID }
+# #puts OpenTox::RestClientWrapper.post "http://opentox.ntua.gr:4000/model/0d8a9a27-3481-4450-bca1-d420a791de9d",{},{:accept => "text/uri-list", :subjectid => "AQIC5wM2LY4SfcwUNX97nTvaSTdYJ+nTUqZsR0UitJ4+jlc=@AAJTSQACMDE=#"}
+# rescue => err
+# rep = OpenTox::ErrorReport.create(err, "")
+# puts rep.to_yaml
+# end
+
+ # "http://opentox.ntua.gr:4000/model/0d8a9a27-3481-4450-bca1-d420a791de9d"
+
+# get "/19999",nil,'HTTP_ACCEPT' => "text/html"
+# exit
+#
+# get "/234234232341",nil,'HTTP_ACCEPT' => "application/x-yaml"
+# puts last_response.body
+##
+# get "/crossvalidation/1",nil,'HTTP_ACCEPT' => "application/rdf+xml"
+# puts last_response.body
+# exit
+
+ # d = OpenTox::Dataset.find("http://ot-dev.in-silico.ch/dataset/307")
+ # puts d.compounds.inspect
+ # exit
+
+ #get "?model=http://local-ot/model/1"
+ # get "/crossvalidation/3/predictions"
+ # puts last_response.body
+
+ # post "/validate_datasets",{
+ # :test_dataset_uri=>"http://apps.deaconsult.net:8080/ambit2/dataset/R3924",
+ # :prediction_dataset_uri=>"http://apps.ideaconsult.net:8080/ambit2/dataset/R3924?feature_uris[]=http%3A%2F%2Fapps.ideaconsult.net%3A8080%2Fambit2%2Fmodel%2F52%2Fpredicted",
+ # #:test_target_dataset_uri=>"http://local-ot/dataset/202",
+ # :prediction_feature=>"http://apps.ideaconsult.net:8080/ambit2/feature/21715",
+ # :predicted_feature=>"http://apps.ideaconsult.net:8080/ambit2/feature/28944",
+ # :regression=>"true"}
+ # #:classification=>"true"}
+ # puts last_response.body
+
+ #post "/crossvalidation/cleanup"
+ #puts last_response.body
+
+ #get "/crossvalidation/19/predictions",nil,'HTTP_ACCEPT' => "application/x-yaml" #/statistics"
+ # post "",:model_uri=>"http://local-ot/model/1",:test_dataset_uri=>"http://local-ot/dataset/3",
+ # :test_target_dataset_uri=>"http://local-ot/dataset/1"
+
+ # get "/crossvalidation/2",nil,'HTTP_ACCEPT' => "application/rdf+xml"
+ #puts last_response.body
+ #exit
- #get "/crossvalidation/4/statistics"
-# post "",:model_uri=>"http://localhost/model/1",:test_dataset_uri=>"http://localhost/dataset/3",
-# :test_target_dataset_uri=>"http://localhost/dataset/1"
+# OpenTox::Crossvalidation.create(
+# :dataset_uri=>"http://local-ot/dataset/1874",
+# :algorithm_uri=>"http://local-ot/algorithm/lazar",
+# :prediction_feature=>"http://local-ot/dataset/1874/feature/Hamster%20Carcinogenicity",
+# :algorithm_params=>"feature_generation_uri=http://local-ot/algorithm/fminer/bbrc")
- #get "/crossvalidation/1",nil,'HTTP_ACCEPT' => "application/rdf+xml"
- #puts last_response.body
-
-# post "/test_validation",:select=>"6d" #,:report=>"yes,please"
-# puts last_response.body
-
-# post "/validate_datasets",{
-# :test_dataset_uri=>"http://localhost/dataset/204",
-# :prediction_dataset_uri=>"http://localhost/dataset/206",
-# :test_target_dataset_uri=>"http://localhost/dataset/202",
-# :prediction_feature=>"http://ot-dev.in-silico.ch/toxcreate/feature#IRIS%20unit%20risk",
-# :predicted_feature=>"http://ot-dev.in-silico.ch/toxcreate/feature#IRIS%20unit%20risk_lazar_regression",
-# :regression=>"true"}
-# #:classification=>"true"}
-# puts last_response.body
-
- run_test("3b" ) #, "http://localhost/validation/826") #,"http://localhost/validation/report/validation/36") #, "http://localhost/validation/321")
-
- #run_test("7a") #,"http://localhost/validation/crossvalidation/10") #, "http://localhost/validation/321")
-
- #run_test("8b", "http://localhost/validation/crossvalidation/4")
-
- #puts Nightly.build_nightly("1")
+#http://local-ot/dataset/1878
+
+ #get "/crossvalidation?model_uri=lazar"
+ # post "/test_validation",:select=>"6d" #,:report=>"yes,please"
+ #puts last_response.body
+
+ # post "/validate_datasets",{
+ # :test_dataset_uri=>"http://local-ot/dataset/204",
+ # :prediction_dataset_uri=>"http://local-ot/dataset/206",
+ # :test_target_dataset_uri=>"http://local-ot/dataset/202",
+ # :prediction_feature=>"http://ot-dev.in-silico.ch/toxcreate/feature#IRIS%20unit%20risk",
+ # :predicted_feature=>"http://ot-dev.in-silico.ch/toxcreate/feature#IRIS%20unit%20risk_lazar_regression",
+ # :regression=>"true"}
+ # #:classification=>"true"}
+ # puts last_response.body
+
+ # post "/validate_datasets",{
+ # :test_dataset_uri=>"http://local-ot/dataset/89",
+ # :prediction_dataset_uri=>"http://local-ot/dataset/91",
+ # :test_target_dataset_uri=>"http://local-ot/dataset/87",
+ # :prediction_feature=>"http://local-ot/dataset/1/feature/hamster_carcinogenicity",
+ # :predicted_feature=>"",
+ ## :regression=>"true"}
+ # :classification=>"true"}
+ # puts last_response.body
+
+ # m = OpenTox::Model::Generic.find("http://local-ot/model/1323333")
+ # puts m.to_yaml
+
+# post "/validate_datasets",{
+# :test_dataset_uri=>"http://local-ot/dataset/390",
+# :prediction_dataset_uri=>"http://local-ot/dataset/392",
+# :test_target_dataset_uri=>"http://local-ot/dataset/388",
+# :prediction_feature=>"http://local-ot/dataset/388/feature/repdose_classification",
+# :model_uri=>"http://local-ot/model/31"}
+# #:regression=>"true"}
+# # :classification=>"true"}
+# uri = last_response.body
+# val = wait_for_task(uri)
+# puts val
+# get "/"+val.split("/")[-1]
+
+# post "/validate_datasets",{
+# :test_dataset_uri=>"http://opentox.informatik.uni-freiburg.de/dataset/409",
+# :prediction_dataset_uri=>"http://opentox.informatik.uni-freiburg.de/dataset/410",
+# :test_target_dataset_uri=>"https://ambit.uni-plovdiv.bg:8443/ambit2/dataset/R401560",
+# :prediction_feature=>"https://ambit.uni-plovdiv.bg:8443/ambit2/feature/22190",
+# :predicted_feature=>"https://ambit.uni-plovdiv.bg:8443/ambit2/feature/218304",
+# :regression=>"true",
+# :subjectid=>SUBJECTID}
+# #:model_uri=>"http://local-ot/model/31"}
+# #:regression=>"true"}
+# # :classification=>"true"}
+# uri = last_response.body
+# val = wait_for_task(uri)
+# puts val
+# #get "/"+val.split("/")[-1]
+
+
+
+ #ambit_service = "https://ambit.uni-plovdiv.bg:8443/ambit2"
+ #https%3A%2F%2Fambit.uni-plovdiv.bg%3A8443%2Fambit2
+
+# post "/validate_datasets",{
+# :test_dataset_uri=>ambit_service+"/dataset/R401577?max=50",
+# :prediction_dataset_uri=>ambit_service+"/dataset/R401577?max=50&feature_uris[]="+CGI.escape(ambit_service)+"%2Fmodel%2F35194%2Fpredicted",
+# #:test_target_dataset_uri=>ambit_service+"/dataset/R401560",
+# :prediction_feature=>ambit_service+"/feature/26221",
+# :predicted_feature=>ambit_service+"/feature/218699",
+# :classification=>"true",
+# :subjectid=>SUBJECTID}
+# #:model_uri=>"http://local-ot/model/31"}
+# #:regression=>"true"}
+# # :classification=>"true"}
+# uri = last_response.body
+# val = wait_for_task(uri)
+# puts val
+# #get "/"+val.split("/")[-1]
+
+
+# d = OpenTox::Dataset.find("https://ambit.uni-plovdiv.bg:8443/ambit2/dataset/R545",SUBJECTID)
+# puts d.compounds.inspect
+# exit
+
+# f = File.new("data/ambit-dataset.rdf")
+# d = ValidationExamples::Util.upload_dataset(f, SUBJECTID)
+# puts d
+
+# d = OpenTox::Dataset.find("https://ambit.uni-plovdiv.bg:8443/ambit2/dataset/R401560",SUBJECTID)
+# #puts d.compounds.to_yaml
+# #puts d.features.keys.to_yaml
+# puts d.to_yaml
+# d2 = d.split(d.compounds[0..5], d.features.keys[0..1], {}, SUBJECTID)
+# puts d2.to_yaml
+
+ # run_test("1b")#,:validation_uri=>"http://local-ot/validation/253") #,"http://local-ot/validation/28")#,"http://local-ot/validation/394");
+
+ #run_test("3b",:validation_uri=>"http://local-ot/validation/crossvalidation/45") #,{:dataset_uri => "http://local-ot/dataset/773", :prediction_feature => "http://local-ot/dataset/773/feature/Hamster%20Carcinogenicity"})
+
+# p = {
+# :dataset_uri=>"http://local-ot/dataset/527",
+# :algorithm_uri => "http://local-ot/majority/class/algorithm",
+# :prediction_feature=>"http://local-ot/dataset/527/feature/Hamster%20Carcinogenicity",
+# :num_folds => 2 }
+ #cv = OpenTox::Crossvalidation.create(p, SUBJECTID)
+# cv = OpenTox::Crossvalidation.find("http://local-ot/validation/crossvalidation/17", SUBJECTID)
+# puts cv.uri
+## puts cv.find_or_create_report.uri
+# puts cv.summary(SUBJECTID).inspect
+
+ #puts OpenTox::Authorization.list_policy_uris(SUBJECTID).inspect
+
+ #puts OpenTox::Authorization.list_policy_uris(SUBJECTID).inspect
+
+ #run_test("19d") #,{:dataset_uri => "http://local-ot/dataset/313", :prediction_feature => "http://local-ot/dataset/313/feature/repdose_classification"})
+
+# model = OpenTox::Model::Generic.find("http://local-ot/majority/class/model/58")
+# OpenTox::QMRFReport.create(model)
+
+
+ #get "/12123123123123123"
+ #get "/chain"
+
+ #OpenTox::RestClientWrapper.get("http://local-ot/validation/task-error")
+ #get "/error",nil,'HTTP_ACCEPT' => "application/rdf+xml"
+ #puts ""
+ #puts ""
+ #puts last_response.body
+ #exit
+
+# get "/error"
+# puts last_response.body
+
+ #delete "/1",:subjectid=>SUBJECTID
+
+ run_test("19i")
+
+ #run_test("3a","http://local-ot/validation/crossvalidation/4")
+ #run_test("3b","http://local-ot/validation/crossvalidation/3")
+
+ #run_test("8a", "http://local-ot/validation/crossvalidation/6")
+ #run_test("8b", "http://local-ot/validation/crossvalidation/5")
+
+ #run_test("11b", "http://local-ot/validation/crossvalidation/2" )# //local-ot/validation/42")#, "http://local-ot/validation/report/validation/8") #,"http://local-ot/validation/report/validation/36") #, "http://local-ot/validation/321")
+ # run_test("7a","http://local-ot/validation/40") #,"http://local-ot/validation/crossvalidation/10") #, "http://local-ot/validation/321")
+ #run_test("8b", "http://local-ot/validation/crossvalidation/4")
+
+ #puts Nightly.build_nightly("1")
+
+ #prepare_examples
+ #do_test_examples # USES CURL, DO NOT FORGET TO RESTART VALIDATION SERVICE
+ #do_test_examples_ortona
- #prepare_examples
- #do_test_examples # USES CURL, DO NOT FORGET TO RESTART VALIDATION SERVICE
+ rescue => ex
+ rep = OpenTox::ErrorReport.create(ex, "")
+ puts rep.to_yaml
+ ensure
+ #OpenTox::Authorization.logout(SUBJECTID) if AA_SERVER
+ end
end
def app
Sinatra::Application
end
- def run_test(select, validation_uri=nil)
+ def run_test(select=nil, overwrite={}, delete=false )
+
+ if AA_SERVER && SUBJECTID && delete
+ policies_before = OpenTox::Authorization.list_policy_uris(SUBJECTID)
+ end
+
+ puts ValidationExamples.list unless select
validationExamples = ValidationExamples.select(select)
validationExamples.each do |vv|
vv.each do |v|
ex = v.new
- ex.validation_uri = validation_uri
+ ex.subjectid = SUBJECTID
+
+ overwrite.each do |k,v|
+ ex.send(k.to_s+"=",v)
+ end
+
unless ex.validation_uri
ex.upload_files
ex.check_requirements
ex.validate
- LOGGER.debug "validation done "+ex.validation_uri.to_s
+
+ LOGGER.debug "validation done '"+ex.validation_uri.to_s+"'"
+ end
+ if !delete and ex.validation_uri
+ if SUBJECTID
+ puts ex.validation_uri+"?subjectid="+CGI.escape(SUBJECTID)
+ else
+ puts ex.validation_uri
+ end
+ end
+
+ unless ex.report_uri
+ ex.report
+ end
+ if !delete and ex.report_uri
+ if SUBJECTID
+ puts ex.report_uri+"?subjectid="+CGI.escape(SUBJECTID)
+ else
+ puts ex.report_uri
+ end
end
- ex.verify_yaml
- ex.report
+ ##ex.verify_yaml
+ ##ex.compare_yaml_vs_rdf
+ ex.delete if delete
end
end
+
+ if AA_SERVER && SUBJECTID && delete
+ policies_after= OpenTox::Authorization.list_policy_uris(SUBJECTID)
+ diff = policies_after.size - policies_before.size
+ if (diff != 0)
+ policies_before.each do |k,v|
+ policies_after.delete(k)
+ end
+ LOGGER.warn diff.to_s+" policies NOT deleted:\n"+policies_after.collect{|k,v| k.to_s+" => "+v.to_s}.join("\n")
+ else
+ LOGGER.debug "all policies deleted"
+ end
+ end
end
def prepare_examples
@@ -78,7 +354,11 @@ class ValidationTest < Test::Unit::TestCase
end
def do_test_examples # USES CURL, DO NOT FORGET TO RESTART
- get '/test_examples'
+ post '/test_examples'
+ end
+
+ def do_test_examples_ortona
+ post '/test_examples',:examples=>"http://ortona.informatik.uni-freiburg.de/validation/examples"
end
end