summaryrefslogtreecommitdiff
path: root/lib/validation.rb
blob: fad8a449544a7c8e8606134f5041ddaf8c3efae8 (plain)
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
68
69
70
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