diff options
author | Martin Gütlein <martin.guetlein@gmail.com> | 2009-11-24 10:26:17 +0100 |
---|---|---|
committer | Martin Gütlein <martin.guetlein@gmail.com> | 2009-11-24 10:26:17 +0100 |
commit | db65b03dc761f7788dad5bdbfd9e0d7e8376f6cb (patch) | |
tree | 108a823cdd26b0f47360d4a3f45502e52735150c /report | |
parent | 199a350dfda66a918bd52b59e7f511a9cc19fd63 (diff) |
add prediction_feature param
Diffstat (limited to 'report')
-rw-r--r-- | report/environment.rb | 6 | ||||
-rw-r--r-- | report/report_application.rb | 2 | ||||
-rw-r--r-- | report/report_format.rb | 2 | ||||
-rw-r--r-- | report/report_service.rb | 5 | ||||
-rw-r--r-- | report/report_test.rb | 5 | ||||
-rw-r--r-- | report/validation_access.rb | 22 | ||||
-rw-r--r-- | report/validation_data.rb | 2 |
7 files changed, 29 insertions, 15 deletions
diff --git a/report/environment.rb b/report/environment.rb index 6a449b9..cbed3de 100644 --- a/report/environment.rb +++ b/report/environment.rb @@ -27,7 +27,9 @@ load "report/external/mimeparse.rb" load "lib/prediction_util.rb" -LOGGER = Logger.new(STDOUT) -LOGGER.datetime_format = "%Y-%m-%d %H:%M:%S " +unless(defined? LOGGER) + LOGGER = Logger.new(STDOUT) + LOGGER.datetime_format = "%Y-%m-%d %H:%M:%S " +end diff --git a/report/report_application.rb b/report/report_application.rb index 4cba0ae..83250e8 100644 --- a/report/report_application.rb +++ b/report/report_application.rb @@ -2,7 +2,7 @@ load "report/environment.rb" def perform begin - $rep = Reports::ReportService.new(url_for("", :full)) unless $rep + $rep = Reports::ReportService.new(url_for("/report", :full)) unless $rep yield( $rep ) rescue Reports::NotFound => ex halt 404, ex.message diff --git a/report/report_format.rb b/report/report_format.rb index 6d3adcd..d58a1f4 100644 --- a/report/report_format.rb +++ b/report/report_format.rb @@ -14,7 +14,7 @@ module Reports::ReportFormat RF_HTML = "html" RF_PDF = "pdf" REPORT_FORMATS = [RF_XML, RF_HTML, RF_PDF] - CONTENT_TYPES = {"text/xml"=>RF_XML,"text/html"=>RF_HTML,"application/pdf"=>RF_PDF} + CONTENT_TYPES = {"*/xml"=>RF_XML,"*/html"=>RF_HTML,"*/pdf"=>RF_PDF} # returns report-format, according to header value def self.get_format(accept_header_value) diff --git a/report/report_service.rb b/report/report_service.rb index 2ff5415..364ac85 100644 --- a/report/report_service.rb +++ b/report/report_service.rb @@ -48,12 +48,13 @@ module Reports check_report_type(type) #step 0.5: replace cv-uris with list of validation-uris - LOGGER.debug "validation uri list '"+uri_list.inspect+"'" + raise Reports::BadRequest.new("validation uri_list missing") unless uri_list + LOGGER.debug "validation uri_list: '"+uri_list.inspect+"'" uri_list = Reports.validation_access.resolve_cv_uris(uri_list) # step1: load validations validation_set = Reports::ValidationSet.new(uri_list) - raise Reports::BadRequest.new("no validations found") unless validation_set and validation_set.size > 0 + raise Reports::BadRequest.new("cannot get validations from uri_list '"+uri_list.inspect+"'") unless validation_set and validation_set.size > 0 LOGGER.debug "loaded "+validation_set.size.to_s+" validation/s" #step 2: create report of type diff --git a/report/report_test.rb b/report/report_test.rb index 8822568..9ee9ce5 100644 --- a/report/report_test.rb +++ b/report/report_test.rb @@ -148,14 +148,15 @@ class Reports::ReportServiceTest < Test::Unit::TestCase val_params = { :dataset_uri => data_uri, :algorithm_uri => ws_class_alg, - :split_ratio=>0.9 } + :split_ratio=>0.9, + :prediction_feature => "classification",} val_params[:feature_service_uri] = ws_feat_alg if ws_feat_alg RestClient.post WS_VAL+"/validation/training_test_split", val_params end def create_cross_validation(data_uri, ws_class_alg=WS_CLASS_ALG, ws_feat_alg=WS_FEATURE_ALG) puts "cross-validating" - ext("curl -X POST -d dataset_uri="+data_uri+" -d algorithm_uri="+ws_class_alg+ + ext("curl -X POST -d dataset_uri="+data_uri+" -d algorithm_uri="+ws_class_alg+" -d prediction_feature=classification"+ (ws_feat_alg ? " -d feature_service_uri="+ws_feat_alg : "")+ " "+WS_VAL+"/crossvalidation",nil) end diff --git a/report/validation_access.rb b/report/validation_access.rb index 5f04472..ed19c14 100644 --- a/report/validation_access.rb +++ b/report/validation_access.rb @@ -16,7 +16,7 @@ class Reports::ValidationAccess raise "not implemented" end - def get_predictions( test_dataset_uri, prediction_dataset_uri) + def get_predictions( prediction_feature, test_dataset_uri, prediction_dataset_uri) raise "not implemented" end @@ -52,6 +52,10 @@ class Reports::ValidationDB < Reports::ValidationAccess validation.send("#{p.to_s}=".to_sym, v[p]) end + model = OpenTox::Model::LazarClassificationModel.new(v[:model_uri]) + raise "cannot access model '"+v[:model_uri].to_s+"'" unless model + validation.prediction_feature = model.get_prediction_feature + {OpenTox::Validation::VAL_CLASS_PROP => OpenTox::Validation::VAL_CLASS_PROPS}.each do |subset_name,subset_props| subset = v[subset_name] subset_props.each{ |prop| validation.send("#{prop.to_s}=".to_sym, subset[prop]) } if subset @@ -68,8 +72,8 @@ class Reports::ValidationDB < Reports::ValidationAccess end end - def get_predictions( test_dataset_uri, prediction_dataset_uri) - Lib::Predictions.new( test_dataset_uri, prediction_dataset_uri) + def get_predictions( prediction_feature, test_dataset_uri, prediction_dataset_uri) + Lib::Predictions.new( prediction_feature, test_dataset_uri, prediction_dataset_uri) end end @@ -107,6 +111,10 @@ class Reports::ValidationWebservice < Reports::ValidationAccess validation.send("#{p}=".to_sym, data[p]) end + model = OpenTox::Model::LazarClassificationModel.new(v[:model_uri]) + raise "cannot access model '"+v[:model_uri].to_s+"'" unless model + validation.prediction_feature = model.get_prediction_feature + {OpenTox::Validation::VAL_CV_PROP => OpenTox::Validation::VAL_CV_PROPS, OpenTox::Validation::VAL_CLASS_PROP => OpenTox::Validation::VAL_CLASS_PROPS}.each do |subset_name,subset_props| subset = data[subset_name] @@ -130,8 +138,8 @@ class Reports::ValidationWebservice < Reports::ValidationAccess end end - def get_predictions( test_dataset_uri, prediction_dataset_uri) - Lib::Predictions.new( test_dataset_uri, prediction_dataset_uri) + def get_predictions( prediction_feature, test_dataset_uri, prediction_dataset_uri) + Lib::Predictions.new( prediction_feature, test_dataset_uri, prediction_dataset_uri) end end @@ -197,6 +205,8 @@ class Reports::ValidationMockLayer < Reports::ValidationAccess validation.training_dataset_uri = @datasets[@count] validation.test_dataset_uri = @datasets[@count] + validation.prediction_feature = "classification" + @count += 1 end @@ -212,7 +222,7 @@ class Reports::ValidationMockLayer < Reports::ValidationAccess #validation.CV_dataset_name = @datasets[validation.crossvalidation_id.to_i * NUM_FOLDS] end - def get_predictions(test_dataset_uri, prediction_dataset_uri) + def get_predictions( prediction_feature, test_dataset_uri, prediction_dataset_uri) p = Array.new c = Array.new diff --git a/report/validation_data.rb b/report/validation_data.rb index 46c5e44..eb609c9 100644 --- a/report/validation_data.rb +++ b/report/validation_data.rb @@ -71,7 +71,7 @@ module Reports LOGGER.info("no predictions available, prediction_dataset_uri not set") return nil end - @predictions = Reports.validation_access.get_predictions( @test_dataset_uri, @prediction_dataset_uri ) + @predictions = Reports.validation_access.get_predictions( @prediction_feature, @test_dataset_uri, @prediction_dataset_uri ) end # loads all crossvalidation attributes, of the corresponding cv into this object |