1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# 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 "/api/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
halt 400, "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 "/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
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("/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("/api/validation/#{params[:validationtype]}/#{validations[idx]["_id"]["$oid"]}")
end
return validations.to_json
else
halt 400, "Mime type #{@accept} is not supported."
end
end
# Get validation representation
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]
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
halt 404, "#{params[:validationtype]} with id: #{params[:id]} not found." unless validation
return validation.to_json
end
|