From 3a11ba2918795821600b7113d0758415718d263a Mon Sep 17 00:00:00 2001 From: gebele Date: Mon, 11 Jun 2018 12:46:06 +0200 Subject: combine gui with rest --- lib/validation.rb | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 lib/validation.rb (limited to 'lib/validation.rb') diff --git a/lib/validation.rb b/lib/validation.rb new file mode 100644 index 0000000..fad8a44 --- /dev/null +++ b/lib/validation.rb @@ -0,0 +1,71 @@ +# All available validation types +VALIDATION_TYPES = ["repeatedcrossvalidation", "leaveoneout", "crossvalidation", "regressioncrossvalidation"] + +# Get a list of ayll possible validation types +# @param [Header] Accept one of text/uri-list, application/json +# @return [text/uri-list] URI list of all validation types +get "/validation/?" do + uri_list = VALIDATION_TYPES.collect{|validationtype| uri("/validation/#{validationtype}")} + case @accept + when "text/uri-list" + return uri_list.join("\n") + "\n" + when "application/json" + return uri_list.to_json + else + bad_request_error "Mime type #{@accept} is not supported." + end +end + +# Get a list of all validations +# @param [Header] Accept one of text/uri-list, application/json +# @param [Path] Validationtype One of "repeatedcrossvalidation", "leaveoneout", "crossvalidation", "regressioncrossvalidation" +# @return [text/uri-list] list of all validations of a validation type +get "/validation/:validationtype/?" do + bad_request_error "There is no such validation type as: #{params[:validationtype]}" unless VALIDATION_TYPES.include? params[:validationtype] + case params[:validationtype] + when "repeatedcrossvalidation" + validations = Validation::RepeatedCrossValidation.all + when "leaveoneout" + validations = Validation::LeaveOneOut.all + when "crossvalidation" + validations = Validation::CrossValidation.all + when "regressioncrossvalidation" + validations = Validation::RegressionCrossValidation.all + end + + case @accept + when "text/uri-list" + uri_list = validations.collect{|validation| uri("/validation/#{params[:validationtype]}/#{validation.id}")} + return uri_list.join("\n") + "\n" + when "application/json" + validations = JSON.parse validations.to_json + validations.each_index do |idx| + validations[idx][:URI] = uri("/validation/#{params[:validationtype]}/#{validations[idx]["_id"]["$oid"]}") + end + return validations.to_json + else + bad_request_error "Mime type #{@accept} is not supported." + end +end + +# Get validation representation +get "/validation/:validationtype/:id/?" do + bad_request_error "There is no such validation type as: #{params[:validationtype]}" unless VALIDATION_TYPES.include? params[:validationtype] + case params[:validationtype] + when "repeatedcrossvalidation" + validation = Validation::RepeatedCrossValidation.find params[:id] + when "leaveoneout" + validation = Validation::LeaveOneOut.find params[:id] + when "crossvalidation" + validation = Validation::CrossValidation.find params[:id] + when "regressioncrossvalidation" + validation = Validation::RegressionCrossValidation.find params[:id] + end + + not_found_error "#{params[:validationtype]} with id: #{params[:id]} not found." unless validation + #model[:URI] = uri("/model/#{model.id}") + #model[:neighbor_algorithm_parameters][:feature_dataset_uri] = uri("/dataset/#{model[:neighbor_algorithm_parameters][:feature_dataset_id]}") if model[:neighbor_algorithm_parameters][:feature_dataset_id] + #model[:training_dataset_uri] = uri("/dataset/#{model.training_dataset_id}") if model.training_dataset_id + #model[:prediction_feature_uri] = uri("/dataset/#{model.prediction_feature_id}") if model.prediction_feature_id + return validation.to_json +end -- cgit v1.2.3 From 741701df8ff0861b3607a30e9aaf8b8a0c303cdf Mon Sep 17 00:00:00 2001 From: gebele Date: Thu, 13 Jun 2019 15:28:59 +0000 Subject: update with API --- lib/validation.rb | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) (limited to 'lib/validation.rb') diff --git a/lib/validation.rb b/lib/validation.rb index fad8a44..031b9e1 100644 --- a/lib/validation.rb +++ b/lib/validation.rb @@ -4,7 +4,7 @@ VALIDATION_TYPES = ["repeatedcrossvalidation", "leaveoneout", "crossvalidation", # Get a list of ayll possible validation types # @param [Header] Accept one of text/uri-list, application/json # @return [text/uri-list] URI list of all validation types -get "/validation/?" do +get "/api/validation/?" do uri_list = VALIDATION_TYPES.collect{|validationtype| uri("/validation/#{validationtype}")} case @accept when "text/uri-list" @@ -12,7 +12,7 @@ get "/validation/?" do when "application/json" return uri_list.to_json else - bad_request_error "Mime type #{@accept} is not supported." + halt 400, "Mime type #{@accept} is not supported." end end @@ -20,8 +20,8 @@ end # @param [Header] Accept one of text/uri-list, application/json # @param [Path] Validationtype One of "repeatedcrossvalidation", "leaveoneout", "crossvalidation", "regressioncrossvalidation" # @return [text/uri-list] list of all validations of a validation type -get "/validation/:validationtype/?" do - bad_request_error "There is no such validation type as: #{params[:validationtype]}" unless VALIDATION_TYPES.include? params[:validationtype] +get "/api/validation/:validationtype/?" do + halt 400, "There is no such validation type as: #{params[:validationtype]}" unless VALIDATION_TYPES.include? params[:validationtype] case params[:validationtype] when "repeatedcrossvalidation" validations = Validation::RepeatedCrossValidation.all @@ -35,22 +35,22 @@ get "/validation/:validationtype/?" do case @accept when "text/uri-list" - uri_list = validations.collect{|validation| uri("/validation/#{params[:validationtype]}/#{validation.id}")} + uri_list = validations.collect{|validation| uri("/api/validation/#{params[:validationtype]}/#{validation.id}")} return uri_list.join("\n") + "\n" when "application/json" validations = JSON.parse validations.to_json validations.each_index do |idx| - validations[idx][:URI] = uri("/validation/#{params[:validationtype]}/#{validations[idx]["_id"]["$oid"]}") + validations[idx][:URI] = uri("/api/validation/#{params[:validationtype]}/#{validations[idx]["_id"]["$oid"]}") end return validations.to_json else - bad_request_error "Mime type #{@accept} is not supported." + halt 400, "Mime type #{@accept} is not supported." end end # Get validation representation -get "/validation/:validationtype/:id/?" do - bad_request_error "There is no such validation type as: #{params[:validationtype]}" unless VALIDATION_TYPES.include? params[:validationtype] +get "/api/validation/:validationtype/:id/?" do + halt 400, "There is no such validation type as: #{params[:validationtype]}" unless VALIDATION_TYPES.include? params[:validationtype] case params[:validationtype] when "repeatedcrossvalidation" validation = Validation::RepeatedCrossValidation.find params[:id] @@ -62,10 +62,6 @@ get "/validation/:validationtype/:id/?" do validation = Validation::RegressionCrossValidation.find params[:id] end - not_found_error "#{params[:validationtype]} with id: #{params[:id]} not found." unless validation - #model[:URI] = uri("/model/#{model.id}") - #model[:neighbor_algorithm_parameters][:feature_dataset_uri] = uri("/dataset/#{model[:neighbor_algorithm_parameters][:feature_dataset_id]}") if model[:neighbor_algorithm_parameters][:feature_dataset_id] - #model[:training_dataset_uri] = uri("/dataset/#{model.training_dataset_id}") if model.training_dataset_id - #model[:prediction_feature_uri] = uri("/dataset/#{model.prediction_feature_id}") if model.prediction_feature_id + halt 404, "#{params[:validationtype]} with id: #{params[:id]} not found." unless validation return validation.to_json end -- cgit v1.2.3