summaryrefslogtreecommitdiff
path: root/report
diff options
context:
space:
mode:
authorMartin Gütlein <martin.guetlein@gmail.com>2009-11-24 10:26:17 +0100
committerMartin Gütlein <martin.guetlein@gmail.com>2009-11-24 10:26:17 +0100
commitdb65b03dc761f7788dad5bdbfd9e0d7e8376f6cb (patch)
tree108a823cdd26b0f47360d4a3f45502e52735150c /report
parent199a350dfda66a918bd52b59e7f511a9cc19fd63 (diff)
add prediction_feature param
Diffstat (limited to 'report')
-rw-r--r--report/environment.rb6
-rw-r--r--report/report_application.rb2
-rw-r--r--report/report_format.rb2
-rw-r--r--report/report_service.rb5
-rw-r--r--report/report_test.rb5
-rw-r--r--report/validation_access.rb22
-rw-r--r--report/validation_data.rb2
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