diff options
author | mguetlein <martin.guetlein@gmail.com> | 2011-01-13 15:18:45 +0100 |
---|---|---|
committer | mguetlein <martin.guetlein@gmail.com> | 2011-01-13 15:18:45 +0100 |
commit | eeb0b6df2dbdae29ccf3f4ccd923002e0ed65506 (patch) | |
tree | c0b0956d5b107e613c3236ede71462fa7f18cf05 /validation/validation_application.rb | |
parent | 5786ebd5095451e928d9811bd6bbd98af72de99d (diff) |
adjust to new wrapper, replace activerecord with datamapper (remove activerecord code), is_classification to feature_type
Diffstat (limited to 'validation/validation_application.rb')
-rwxr-xr-x[-rw-r--r--] | validation/validation_application.rb | 161 |
1 files changed, 98 insertions, 63 deletions
diff --git a/validation/validation_application.rb b/validation/validation_application.rb index 2a2bcb0..9c6c60c 100644..100755 --- a/validation/validation_application.rb +++ b/validation/validation_application.rb @@ -1,16 +1,17 @@ -[ 'rubygems', 'sinatra', 'sinatra/url_for', 'opentox-ruby-api-wrapper' ].each do |lib| +[ 'rubygems', 'sinatra', 'sinatra/url_for', 'opentox-ruby' ].each do |lib| require lib end require 'lib/merge.rb' -require 'lib/active_record_setup.rb' +#require 'lib/active_record_setup.rb' require 'validation/validation_service.rb' get '/crossvalidation/?' do LOGGER.info "list all crossvalidations" - uri_list = Validation::Crossvalidation.find_like(params).collect{ |cv| cv.crossvalidation_uri }.join("\n")+"\n" + uri_list = Validation::Crossvalidation.all.collect{ |cv| cv.crossvalidation_uri }.join("\n")+"\n" + #uri_list = Validation::Crossvalidation.find_like(params).collect{ |cv| cv.crossvalidation_uri }.join("\n")+"\n" if request.env['HTTP_ACCEPT'] =~ /text\/html/ related_links = "Single validations: "+$sinatra.url_for("/",:full)+"\n"+ @@ -28,8 +29,7 @@ get '/crossvalidation/?' do end post '/crossvalidation/?' do - content_type "text/uri-list" - task_uri = OpenTox::Task.as_task( "Perform crossvalidation", url_for("/crossvalidation", :full), params ) do |task| + task = OpenTox::Task.create( "Perform crossvalidation", url_for("/crossvalidation", :full) ) do |task| #, params LOGGER.info "creating crossvalidation "+params.inspect halt 400, "dataset_uri missing" unless params[:dataset_uri] halt 400, "algorithm_uri missing" unless params[:algorithm_uri] @@ -44,20 +44,25 @@ post '/crossvalidation/?' do cv.perform_cv( params[:prediction_feature], params[:algorithm_params], task ) cv.crossvalidation_uri end - halt 202,task_uri+"\n" + content_type 'text/uri-list' + halt 503,task.uri+"\n" if task.status == "Cancelled" + halt 202,task.uri end post '/crossvalidation/cleanup/?' do LOGGER.info "crossvalidation cleanup, starting..." content_type "text/uri-list" deleted = [] - Validation::Crossvalidation.find_like(params).each do |cv| - num_vals = Validation::Validation.find( :all, :conditions => { :crossvalidation_id => cv.id } ).size - if cv.num_folds != num_vals - LOGGER.debug "delete cv with id:"+cv.id.to_s+" num-folds should be "+cv.num_folds.to_s+", is "+num_vals.to_s + #Validation::Crossvalidation.find_like(params).each do |cv| + Validation::Crossvalidation.all( { :finished => false } ).each do |cv| + #num_vals = Validation::Validation.find( :all, :conditions => { :crossvalidation_id => cv.id } ).size + #num_vals = Validation::Validation.all( :crossvalidation_id => cv.id ).size + #if cv.num_folds != num_vals || !cv.finished + LOGGER.debug "delete cv with id:"+cv.id.to_s+", finished is false" deleted << cv.crossvalidation_uri - Validation::Crossvalidation.delete(cv.id) - end + #Validation::Crossvalidation.delete(cv.id) + cv.delete + #end end LOGGER.info "crossvalidation cleanup, deleted "+deleted.size.to_s+" cvs" deleted.join("\n")+"\n" @@ -73,11 +78,13 @@ end get '/crossvalidation/:id' do LOGGER.info "get crossvalidation with id "+params[:id].to_s - begin - crossvalidation = Validation::Crossvalidation.find(params[:id]) - rescue ActiveRecord::RecordNotFound => ex - halt 404, "Crossvalidation '#{params[:id]}' not found." - end +# begin +# #crossvalidation = Validation::Crossvalidation.find(params[:id]) +# rescue ActiveRecord::RecordNotFound => ex +# halt 404, "Crossvalidation '#{params[:id]}' not found." +# end + crossvalidation = Validation::Crossvalidation.get(params[:id]) + halt 404,"Crossvalidation '#{params[:id]}' not found." unless crossvalidation case request.env['HTTP_ACCEPT'].to_s when "application/rdf+xml" @@ -104,19 +111,24 @@ end get '/crossvalidation/:id/statistics' do LOGGER.info "get merged validation-result for crossvalidation with id "+params[:id].to_s - begin - crossvalidation = Validation::Crossvalidation.find(params[:id]) - rescue ActiveRecord::RecordNotFound => ex - halt 404, "Crossvalidation '#{params[:id]}' not found." - end +# begin + #crossvalidation = Validation::Crossvalidation.find(params[:id]) +# rescue ActiveRecord::RecordNotFound => ex +# halt 404, "Crossvalidation '#{params[:id]}' not found." +# end + #crossvalidation = Validation::Crossvalidation.find(params[:id]) + crossvalidation = Validation::Crossvalidation.get(params[:id]) + + halt 404,"Crossvalidation '#{params[:id]}' not found." unless crossvalidation halt 400,"Crossvalidation '"+params[:id].to_s+"' not finished" unless crossvalidation.finished Lib::MergeObjects.register_merge_attributes( Validation::Validation, - Lib::VAL_MERGE_AVG,Lib::VAL_MERGE_SUM,Lib::VAL_MERGE_GENERAL-[:validation_uri,:crossvalidation_uri]) unless + Lib::VAL_MERGE_AVG,Lib::VAL_MERGE_SUM,Lib::VAL_MERGE_GENERAL-[:date,:validation_uri,:crossvalidation_uri]) unless Lib::MergeObjects.merge_attributes_registered?(Validation::Validation) - v = Lib::MergeObjects.merge_array_objects( Validation::Validation.find( :all, :conditions => { :crossvalidation_id => params[:id] } ) ) - v.date = nil + #v = Lib::MergeObjects.merge_array_objects( Validation::Validation.find( :all, :conditions => { :crossvalidation_id => params[:id] } ) ) + v = Lib::MergeObjects.merge_array_objects( Validation::Validation.all( :crossvalidation_id => params[:id] ) ) + v.created_at = nil v.id = nil case request.env['HTTP_ACCEPT'].to_s @@ -136,12 +148,16 @@ end delete '/crossvalidation/:id/?' do LOGGER.info "delete crossvalidation with id "+params[:id].to_s content_type "text/plain" - begin - crossvalidation = Validation::Crossvalidation.find(params[:id]) - rescue ActiveRecord::RecordNotFound => ex - halt 404, "Crossvalidation '#{params[:id]}' not found." - end - Validation::Crossvalidation.delete(params[:id]) +# begin + #crossvalidation = Validation::Crossvalidation.find(params[:id]) +# rescue ActiveRecord::RecordNotFound => ex +# halt 404, "Crossvalidation '#{params[:id]}' not found." +# end +# Validation::Crossvalidation.delete(params[:id]) + + cv = Validation::Crossvalidation.get(params[:id]) + halt 404,"Crossvalidation '#{params[:id]}' not found." unless cv + cv.delete end #get '/crossvalidation/:id/validations' do @@ -158,14 +174,16 @@ end get '/crossvalidation/:id/predictions' do LOGGER.info "get predictions for crossvalidation with id "+params[:id].to_s begin - crossvalidation = Validation::Crossvalidation.find(params[:id]) + #crossvalidation = Validation::Crossvalidation.find(params[:id]) + crossvalidation = Validation::Crossvalidation.get(params[:id]) rescue ActiveRecord::RecordNotFound => ex halt 404, "Crossvalidation '#{params[:id]}' not found." end halt 400,"Crossvalidation '"+params[:id].to_s+"' not finished" unless crossvalidation.finished content_type "application/x-yaml" - validations = Validation::Validation.find( :all, :conditions => { :crossvalidation_id => params[:id] } ) + #validations = Validation::Validation.find( :all, :conditions => { :crossvalidation_id => params[:id] } ) + validations = Validation::Validation.all( :crossvalidation_id => params[:id] ) p = Lib::OTPredictions.to_array( validations.collect{ |v| v.compute_validation_stats_with_model(nil, true) } ).to_yaml case request.env['HTTP_ACCEPT'].to_s @@ -184,8 +202,11 @@ get '/crossvalidation/:id/predictions' do end get '/?' do + LOGGER.info "list all validations, params: "+params.inspect - uri_list = Validation::Validation.find_like(params).collect{ |v| v.validation_uri }.join("\n")+"\n" + #uri_list = Validation::Validation.find_like(params).collect{ |v| v.validation_uri }.join("\n")+"\n" + uri_list = Validation::Validation.all.collect{ |v| v.validation_uri }.join("\n")+"\n" + if request.env['HTTP_ACCEPT'] =~ /text\/html/ related_links = "To perform a validation:\n"+ @@ -216,7 +237,7 @@ post '/test_set_validation' do content_type "text/uri-list" LOGGER.info "creating test-set-validation "+params.inspect if params[:model_uri] and params[:test_dataset_uri] and !params[:training_dataset_uri] and !params[:algorithm_uri] - task_uri = OpenTox::Task.as_task( "Perform test-set-validation", url_for("/", :full), params ) do |task| + task = OpenTox::Task.create( "Perform test-set-validation", url_for("/", :full) ) do |task| #, params v = Validation::Validation.new :validation_type => "test_set_validation", :model_uri => params[:model_uri], :test_dataset_uri => params[:test_dataset_uri], @@ -225,7 +246,7 @@ post '/test_set_validation' do v.validate_model( task ) v.validation_uri end - halt 202,task_uri+"\n" + halt 202,task.uri+"\n" else halt 400, "illegal parameters, pls specify model_uri and test_dataset_uri\n"+ "params given: "+params.inspect @@ -234,7 +255,10 @@ end get '/test_set_validation' do LOGGER.info "list all test-set-validations, params: "+params.inspect - uri_list = Validation::Validation.find( :all, :conditions => { :validation_type => "test_set_validation" } ).collect{ |v| v.validation_uri }.join("\n")+"\n" + + #uri_list = Validation::Validation.find( :all, :conditions => { :validation_type => "test_set_validation" } ).collect{ |v| v.validation_uri }.join("\n")+"\n" + uri_list = Validation::Validation.all( :validation_type => "test_set_validation" ).collect{ |v| v.validation_uri }.join("\n")+"\n" + if request.env['HTTP_ACCEPT'] =~ /text\/html/ related_links = "All validations: "+$sinatra.url_for("/",:full)+"\n"+ @@ -252,10 +276,9 @@ get '/test_set_validation' do end post '/training_test_validation/?' do - content_type "text/uri-list" LOGGER.info "creating training-test-validation "+params.inspect if params[:algorithm_uri] and params[:training_dataset_uri] and params[:test_dataset_uri] and params[:prediction_feature] and !params[:model_uri] - task_uri = OpenTox::Task.as_task( "Perform training-test-validation", url_for("/", :full), params ) do |task| + task = OpenTox::Task.create( "Perform training-test-validation", url_for("/", :full) ) do |task| #, params v = Validation::Validation.new :validation_type => "training_test_validation", :algorithm_uri => params[:algorithm_uri], :training_dataset_uri => params[:training_dataset_uri], @@ -265,7 +288,8 @@ post '/training_test_validation/?' do v.validate_algorithm( params[:algorithm_params], task ) v.validation_uri end - halt 202,task_uri+"\n" + content_type "text/uri-list" + halt 202,task.uri+"\n" else halt 400, "illegal parameters, pls specify algorithm_uri, training_dataset_uri, test_dataset_uri, prediction_feature\n"+ "params given: "+params.inspect @@ -274,7 +298,8 @@ end get '/training_test_validation' do LOGGER.info "list all training-test-validations, params: "+params.inspect - uri_list = Validation::Validation.find( :all, :conditions => { :validation_type => "training_test_validation" } ).collect{ |v| v.validation_uri }.join("\n")+"\n" + #uri_list = Validation::Validation.find( :all, :conditions => { :validation_type => "training_test_validation" } ).collect{ |v| v.validation_uri }.join("\n")+"\n" + uri_list = Validation::Validation.all( :validation_type => "training_test_validation" ).collect{ |v| v.validation_uri }.join("\n")+"\n" if request.env['HTTP_ACCEPT'] =~ /text\/html/ related_links = "All validations: "+$sinatra.url_for("/",:full)+"\n"+ @@ -298,7 +323,7 @@ end post '/bootstrapping' do content_type "text/uri-list" - task_uri = OpenTox::Task.as_task( "Perform bootstrapping validation", url_for("/bootstrapping", :full), params ) do |task| + task = OpenTox::Task.create( "Perform bootstrapping validation", url_for("/bootstrapping", :full) ) do |task| #, params LOGGER.info "performing bootstrapping validation "+params.inspect halt 400, "dataset_uri missing" unless params[:dataset_uri] halt 400, "algorithm_uri missing" unless params[:algorithm_uri] @@ -315,12 +340,13 @@ post '/bootstrapping' do v.validate_algorithm( params[:algorithm_params], OpenTox::SubTask.create(task,33,100)) v.validation_uri end - halt 202,task_uri+"\n" + halt 202,task.uri+"\n" end get '/bootstrapping' do LOGGER.info "list all bootstrapping-validations, params: "+params.inspect - uri_list = Validation::Validation.find( :all, :conditions => { :validation_type => "bootstrapping" } ).collect{ |v| v.validation_uri }.join("\n")+"\n" + #uri_list = Validation::Validation.find( :all, :conditions => { :validation_type => "bootstrapping" } ).collect{ |v| v.validation_uri }.join("\n")+"\n" + uri_list = Validation::Validation.all( :validation_type => "bootstrapping" ).collect{ |v| v.validation_uri }.join("\n")+"\n" if request.env['HTTP_ACCEPT'] =~ /text\/html/ related_links = "All validations: "+$sinatra.url_for("/",:full)+"\n"+ @@ -343,8 +369,7 @@ end post '/training_test_split' do - content_type "text/uri-list" - task_uri = OpenTox::Task.as_task( "Perform training test split validation", url_for("/training_test_split", :full), params ) do |task| + task = OpenTox::Task.create( "Perform training test split validation", url_for("/training_test_split", :full) ) do |task| #, params LOGGER.info "creating training test split "+params.inspect halt 400, "dataset_uri missing" unless params[:dataset_uri] @@ -362,12 +387,16 @@ post '/training_test_split' do v.validate_algorithm( params[:algorithm_params], OpenTox::SubTask.create(task,33,100)) v.validation_uri end - halt 202,task_uri+"\n" + content_type 'text/uri-list' + halt 503,task.uri+"\n" if task.status == "Cancelled" + halt 202,task.uri + end get '/training_test_split' do LOGGER.info "list all training-test-split-validations, params: "+params.inspect - uri_list = Validation::Validation.find( :all, :conditions => { :validation_type => "training_test_split" } ).collect{ |v| v.validation_uri }.join("\n")+"\n" + #uri_list = Validation::Validation.find( :all, :conditions => { :validation_type => "training_test_split" } ).collect{ |v| v.validation_uri }.join("\n")+"\n" + uri_list = Validation::Validation.all( :validation_type => "training_test_split" ).collect{ |v| v.validation_uri }.join("\n")+"\n" if request.env['HTTP_ACCEPT'] =~ /text\/html/ related_links = "All validations: "+$sinatra.url_for("/",:full)+"\n"+ @@ -393,10 +422,12 @@ post '/cleanup/?' do LOGGER.info "validation cleanup, starting..." content_type "text/uri-list" deleted = [] - Validation::Validation.find( :all, :conditions => { :prediction_dataset_uri => nil } ).each do |val| - LOGGER.debug "delete val with id:"+val.id.to_s+" prediction_dataset_uri is nil" + #Validation::Validation.find( :all, :conditions => { :prediction_dataset_uri => nil } ).each do |val| + Validation::Validation.all( :finished => false ).each do |val| + LOGGER.debug "delete val with id:"+val.id.to_s+", finished is false" deleted << val.validation_uri - Validation::Validation.delete(val.id) + #Validation::Validation.delete(val.id) + val.delete end LOGGER.info "validation cleanup, deleted "+deleted.size.to_s+" validations" deleted.join("\n")+"\n" @@ -413,7 +444,7 @@ end post '/validate_datasets' do content_type "text/uri-list" - task_uri = OpenTox::Task.as_task( "Perform dataset validation", url_for("/validate_datasets", :full), params ) do |task| + task = OpenTox::Task.create( "Perform dataset validation", url_for("/validate_datasets", :full) ) do |task| #, params LOGGER.info "validating values "+params.inspect halt 400, "test_dataset_uri missing" unless params[:test_dataset_uri] halt 400, "prediction_datset_uri missing" unless params[:prediction_dataset_uri] @@ -429,20 +460,21 @@ post '/validate_datasets' do params[:classification] or params[:regression] predicted_feature = params.delete("predicted_feature") - clazz = params.delete("classification")!=nil - regr = params.delete("regression")!=nil + feature_type = "classification" if params.delete("classification")!=nil + feature_type = "regression" if params.delete("regression")!=nil v = Validation::Validation.new params - v.compute_validation_stats((clazz and !regr),predicted_feature,nil,false,task) + v.compute_validation_stats(feature_type,predicted_feature,nil,nil,false,task) end v.validation_uri end - halt 202,task_uri+"\n" + halt 202,task.uri+"\n" end get '/:id/predictions' do LOGGER.info "get validation predictions "+params.inspect begin - validation = Validation::Validation.find(params[:id]) + #validation = Validation::Validation.find(params[:id]) + validation = Validation::Validation.get(params[:id]) rescue ActiveRecord::RecordNotFound => ex halt 404, "Validation '#{params[:id]}' not found." end @@ -482,7 +514,8 @@ end get '/:id' do LOGGER.info "get validation with id "+params[:id].to_s+" '"+request.env['HTTP_ACCEPT'].to_s+"'" begin - validation = Validation::Validation.find(params[:id]) + #validation = Validation::Validation.find(params[:id]) + validation = Validation::Validation.get(params[:id]) rescue ActiveRecord::RecordNotFound => ex halt 404, "Validation '#{params[:id]}' not found." end @@ -511,11 +544,13 @@ end delete '/:id' do LOGGER.info "delete validation with id "+params[:id].to_s - begin - validation = Validation::Validation.find(params[:id]) - rescue ActiveRecord::RecordNotFound => ex - halt 404, "Validation '#{params[:id]}' not found." - end +# begin + #validation = Validation::Validation.find(params[:id]) +# rescue ActiveRecord::RecordNotFound => ex +# halt 404, "Validation '#{params[:id]}' not found." +# end + validation = Validation::Validation.get(params[:id]) + halt 404, "Validation '#{params[:id]}' not found." unless validation content_type "text/plain" validation.delete end
\ No newline at end of file |