summaryrefslogtreecommitdiff
path: root/report
diff options
context:
space:
mode:
authormguetlein <martin.guetlein@gmail.com>2011-01-26 15:58:18 +0100
committermguetlein <martin.guetlein@gmail.com>2011-01-26 15:58:18 +0100
commit9750da9cb7dc14309be38f98bc0b50c8bff9eb72 (patch)
tree8b2ce119a932b6b0b35555eeb551e8ecb6bd35bc /report
parent3af7a871c60fb7d853edd348634d6603fccec101 (diff)
adjust to new A&A for GET, remove old Report-Errorreporting
Diffstat (limited to 'report')
-rwxr-xr-xreport/report_application.rb22
-rwxr-xr-xreport/report_factory.rb24
-rw-r--r--report/report_format.rb2
-rwxr-xr-xreport/report_persistance.rb12
-rw-r--r--report/report_service.rb30
-rwxr-xr-xreport/report_test.rb10
-rw-r--r--report/util.rb6
-rwxr-xr-xreport/validation_access.rb75
-rwxr-xr-xreport/validation_data.rb16
9 files changed, 83 insertions, 114 deletions
diff --git a/report/report_application.rb b/report/report_application.rb
index b02b780..9fcf871 100755
--- a/report/report_application.rb
+++ b/report/report_application.rb
@@ -1,20 +1,8 @@
require "report/environment.rb"
def perform
- begin
- @@report_service = Reports::ReportService.instance( url_for("/report", :full) ) unless defined?@@report_service
- yield( @@report_service )
- rescue Reports::NotFound => ex
- halt 404, ex.message
- rescue Reports::BadRequest => ex
- halt 400, ex.message
- rescue Exception => ex
- #LOGGER.error(ex.message)
- LOGGER.error "report error: "+ex.message
- LOGGER.error ": "+ex.backtrace.join("\n")
- raise ex # sinatra returns 501
- #halt 500, ex.message
- end
+ @@report_service = Reports::ReportService.instance( url_for("/report", :full) ) unless defined?@@report_service
+ yield( @@report_service )
end
def get_docbook_resource(filepath)
@@ -104,11 +92,11 @@ get '/report/:type/:id' do
end
end
-get '/report/:type/:id/:resource' do
- #hack: using request.env['REQUEST_URI'].split("/")[-1] instead of params[:resource] because the file extension is lost
+OpenTox::Authorization.whitelist( Regexp.new("/report/.*/[0-9]+/.*"),"GET")
+get '/report/:type/:id/:resource' do
perform do |rs|
- filepath = rs.get_report_resource(params[:type],params[:id],request.env['REQUEST_URI'].split("/")[-1])
+ filepath = rs.get_report_resource(params[:type],params[:id],params[:resource])
types = MIME::Types.type_for(filepath)
content_type(types[0].content_type) if types and types.size>0 and types[0]
result = body(File.new(filepath))
diff --git a/report/report_factory.rb b/report/report_factory.rb
index 11e9bfa..a5234a3 100755
--- a/report/report_factory.rb
+++ b/report/report_factory.rb
@@ -59,7 +59,7 @@ module Reports::ReportFactory
def self.create_report_validation(validation_set, task=nil)
- raise Reports::BadRequest.new("num validations is not equal to 1") unless validation_set.size==1
+ raise OpenTox::BadRequestError.new("num validations is not equal to 1") unless validation_set.size==1
val = validation_set.validations[0]
pre_load_predictions( validation_set, OpenTox::SubTask.create(task,0,80) )
@@ -84,14 +84,14 @@ module Reports::ReportFactory
def self.create_report_crossvalidation(validation_set, task=nil)
- raise Reports::BadRequest.new("num validations is not >1") unless validation_set.size>1
- raise Reports::BadRequest.new("crossvalidation-id not unique and != nil: "+
+ raise OpenTox::BadRequestError.new("num validations is not >1") unless validation_set.size>1
+ raise OpenTox::BadRequestError.new("crossvalidation-id not unique and != nil: "+
validation_set.get_values(:crossvalidation_id,false).inspect) if validation_set.unique_value(:crossvalidation_id)==nil
validation_set.load_cv_attributes
- raise Reports::BadRequest.new("num validations ("+validation_set.size.to_s+") is not equal to num folds ("+
+ raise OpenTox::BadRequestError.new("num validations ("+validation_set.size.to_s+") is not equal to num folds ("+
validation_set.unique_value(:num_folds).to_s+")") unless validation_set.unique_value(:num_folds)==validation_set.size
- raise Reports::BadRequest.new("num different folds is not equal to num validations") unless validation_set.num_different_values(:crossvalidation_fold)==validation_set.size
- raise Reports::BadRequest.new("validations must have unique feature type, i.e. must be either all regression, "+
+ raise OpenTox::BadRequestError.new("num different folds is not equal to num validations") unless validation_set.num_different_values(:crossvalidation_fold)==validation_set.size
+ raise OpenTox::BadRequestError.new("validations must have unique feature type, i.e. must be either all regression, "+
+"or all classification validations") unless validation_set.unique_feature_type
pre_load_predictions( validation_set, OpenTox::SubTask.create(task,0,80) )
@@ -125,16 +125,16 @@ module Reports::ReportFactory
def self.create_report_compare_algorithms(validation_set, task=nil)
#validation_set.to_array([:test_dataset_uri, :model_uri, :algorithm_uri], false).each{|a| puts a.inspect}
- raise Reports::BadRequest.new("num validations is not >1") unless validation_set.size>1
- raise Reports::BadRequest.new("validations must have unique feature type, i.e. must be either all regression, "+
+ raise OpenTox::BadRequestError.new("num validations is not >1") unless validation_set.size>1
+ raise OpenTox::BadRequestError.new("validations must have unique feature type, i.e. must be either all regression, "+
+"or all classification validations") unless validation_set.unique_feature_type
- raise Reports::BadRequest.new("number of different algorithms <2: "+
+ raise OpenTox::BadRequestError.new("number of different algorithms <2: "+
validation_set.get_values(:algorithm_uri).inspect) if validation_set.num_different_values(:algorithm_uri)<2
if validation_set.has_nil_values?(:crossvalidation_id)
- raise Reports::BadRequest.new("algorithm comparison for non crossvalidation not yet implemented")
+ raise OpenTox::BadRequestError.new("algorithm comparison for non crossvalidation not yet implemented")
else
- raise Reports::BadRequest.new("num different cross-validation-ids <2") if validation_set.num_different_values(:crossvalidation_id)<2
+ raise OpenTox::BadRequestError.new("num different cross-validation-ids <2") if validation_set.num_different_values(:crossvalidation_id)<2
validation_set.load_cv_attributes
compare_algorithms_crossvalidation(validation_set, task)
end
@@ -194,7 +194,7 @@ module Reports::ReportFactory
end
when "regression"
- raise Reports::BadRequest.new("algorithm comparison for regression not yet implemented")
+ raise OpenTox::BadRequestError.new("algorithm comparison for regression not yet implemented")
end
task.progress(100) if task
report
diff --git a/report/report_format.rb b/report/report_format.rb
index baf7434..98dea39 100644
--- a/report/report_format.rb
+++ b/report/report_format.rb
@@ -23,7 +23,7 @@ module Reports::ReportFormat
when /application\/x-yaml|\*\/\*/
"application/x-yaml"
else
- raise Reports::BadRequest.new("Accept header '"+accept_header_value.to_s+
+ raise OpenTox::BadRequestError.new("Accept header '"+accept_header_value.to_s+
"' not supported, supported types are "+
"text/html"+", "+
"application/rdf+xml"+", "+
diff --git a/report/report_persistance.rb b/report/report_persistance.rb
index 808547d..df4930c 100755
--- a/report/report_persistance.rb
+++ b/report/report_persistance.rb
@@ -100,7 +100,7 @@ class Reports::FileReportPersistance < Reports::ReportPersistance
report_dir = report_directory(type, id)
raise_report_not_found(type, id) unless File.directory?(report_dir)
file_path = report_dir+"/"+resource.to_s
- raise Reports::NotFound.new("resource not found, resource: '"+resource.to_s+"', type:'"+type.to_s+"', id:'"+id.to_s+"'") unless File.exist?(file_path)
+ raise OpenTox::NotFoundError.new("resource not found, resource: '"+resource.to_s+"', type:'"+type.to_s+"', id:'"+id.to_s+"'") unless File.exist?(file_path)
return file_path
end
@@ -162,7 +162,7 @@ class Reports::FileReportPersistance < Reports::ReportPersistance
private
def raise_report_not_found(type, id)
- raise Reports::NotFound.new("report not found, type:'"+type.to_s+"', id:'"+id.to_s+"'")
+ raise OpenTox::NotFoundError.new("report not found, type:'"+type.to_s+"', id:'"+id.to_s+"'")
end
def type_directory(type)
@@ -270,11 +270,11 @@ module Reports
def get_report(type, id, format, force_formating, params)
report = ReportData.first({:id => id, :report_type => type})
- raise Reports::NotFound.new("Report with id='"+id.to_s+"' and type='"+type.to_s+"' not found.") unless report
+ raise OpenTox::NotFoundError.new("Report with id='"+id.to_s+"' and type='"+type.to_s+"' not found.") unless report
# begin
# report = ReportData.find(:first, :conditions => {:id => id, :report_type => type})
# rescue ActiveRecord::RecordNotFound
-# raise Reports::NotFound.new("Report with id='"+id.to_s+"' and type='"+type.to_s+"' not found.")
+# raise OpenTox::NotFoundError.new("Report with id='"+id.to_s+"' and type='"+type.to_s+"' not found.")
# end
case format
@@ -291,11 +291,11 @@ module Reports
# begin
# report = ReportData.find(:first, :conditions => {:id => id, :report_type => type})
# rescue ActiveRecord::RecordNotFound
-# raise Reports::NotFound.new("Report with id='"+id.to_s+"' and type='"+type.to_s+"' not found.")
+# raise OpenTox::NotFoundError.new("Report with id='"+id.to_s+"' and type='"+type.to_s+"' not found.")
# end
# ReportData.delete(id)
report = ReportData.first({:id => id, :report_type => type})
- raise Reports::NotFound.new("Report with id='"+id.to_s+"' and type='"+type.to_s+"' not found.") unless report
+ raise OpenTox::NotFoundError.new("Report with id='"+id.to_s+"' and type='"+type.to_s+"' not found.") unless report
report.destroy
if (subjectid)
begin
diff --git a/report/report_service.rb b/report/report_service.rb
index dd1f6b3..91eefe8 100644
--- a/report/report_service.rb
+++ b/report/report_service.rb
@@ -66,10 +66,10 @@ module Reports
check_report_type(type)
# step1: load validations
- raise Reports::BadRequest.new("validation_uris missing") unless validation_uris
+ raise OpenTox::BadRequestError.new("validation_uris missing") unless validation_uris
LOGGER.debug "validation_uri(s): '"+validation_uris.inspect+"'"
- validation_set = Reports::ValidationSet.new(validation_uris)
- raise Reports::BadRequest.new("cannot get validations from validation_uris '"+validation_uris.inspect+"'") unless validation_set and validation_set.size > 0
+ validation_set = Reports::ValidationSet.new(validation_uris, subjectid)
+ raise OpenTox::BadRequestError.new("cannot get validations from validation_uris '"+validation_uris.inspect+"'") unless validation_set and validation_set.size > 0
LOGGER.debug "loaded "+validation_set.size.to_s+" validation/s"
task.progress(10) if task
@@ -182,30 +182,8 @@ module Reports
end
def check_report_type(type)
- raise Reports::NotFound.new("report type not found '"+type.to_s+"'") unless Reports::ReportFactory::REPORT_TYPES.index(type)
+ raise OpenTox::NotFoundError.new("report type not found '"+type.to_s+"'") unless Reports::ReportFactory::REPORT_TYPES.index(type)
end
end
end
-
-class Reports::LoggedException < Exception
-
- def initialize(message)
- super(message)
- LOGGER.error(message)
- end
-
-end
-
-# corresponds to 400
-#
-class Reports::BadRequest < Reports::LoggedException
-
-end
-
-# corresponds to 404
-#
-class Reports::NotFound < Reports::LoggedException
-
-end
-
diff --git a/report/report_test.rb b/report/report_test.rb
index 1f3e524..571d6d8 100755
--- a/report/report_test.rb
+++ b/report/report_test.rb
@@ -148,7 +148,7 @@ end
# assert types.is_a?(String)
# assert types.split("\n").size == Reports::ReportFactory::REPORT_TYPES.size
# #Reports::ReportFactory::REPORT_TYPES.each{|t| rep.get_all_reports(t)}
-# #assert_raise(Reports::NotFound){rep.get_all_reports("osterhase")}
+# #assert_raise(OpenTox::NotFoundError){rep.get_all_reports("osterhase")}
#
# ### using ot_mock_layer (reporting component does not rely on ot validation webservice)
#
@@ -156,11 +156,11 @@ end
# #Reports::Validation.reset_validation_access
#
## create_report(rep, "validation_uri_1", "validation")
-## assert_raise(Reports::BadRequest){create_report(rep, ["validation_uri_1","validation_uri_2"], "validation")}
+## assert_raise(OpenTox::BadRequestError){create_report(rep, ["validation_uri_1","validation_uri_2"], "validation")}
##
## create_report(rep, "crossvalidation_uri_1", "crossvalidation")
## create_report(rep, ["validation_uri_1"]*Reports::OTMockLayer::NUM_FOLDS, "crossvalidation")
-## assert_raise(Reports::BadRequest){create_report(rep, ["validation_uri_1"]*(Reports::OTMockLayer::NUM_FOLDS-1), "crossvalidation")}
+## assert_raise(OpenTox::BadRequestError){create_report(rep, ["validation_uri_1"]*(Reports::OTMockLayer::NUM_FOLDS-1), "crossvalidation")}
##
## create_report(rep, ["crossvalidation_uri_1"]* (Reports::OTMockLayer::NUM_DATASETS * Reports::OTMockLayer::NUM_ALGS), "algorithm_comparison")
## create_report(rep, ["validation_uri_1"]* (Reports::OTMockLayer::NUM_DATASETS * Reports::OTMockLayer::NUM_ALGS * Reports::OTMockLayer::NUM_FOLDS), "algorithm_comparison")
@@ -229,11 +229,11 @@ end
#
# #puts "created report with id "+id.to_s
#
-# #assert_raise(Reports::BadRequest){report_service.get_report(type, id, "weihnachtsmann")}
+# #assert_raise(OpenTox::BadRequestError){report_service.get_report(type, id, "weihnachtsmann")}
#
# report_service.get_report(type, id, "text/html")
# #report_service.get_report(type, id, "application/pdf")
-# #assert_raise(Reports::NotFound){report_service.delete_report(type, 877658)}
+# #assert_raise(OpenTox::NotFoundError){report_service.delete_report(type, 877658)}
#
## rep.delete_report(type, id)
# end
diff --git a/report/util.rb b/report/util.rb
index 9844fd8..ca5f3cc 100644
--- a/report/util.rb
+++ b/report/util.rb
@@ -75,10 +75,10 @@ module Reports::Util
#
def self.check_group_matching( grouped_objects, match_attributes )
- raise Reports::BadRequest.new("less then 2 groups, no matching possible") if grouped_objects.size<2
+ raise OpenTox::BadRequestError.new("less then 2 groups, no matching possible") if grouped_objects.size<2
first_group = grouped_objects[0]
other_groups = grouped_objects[1..-1].collect{ |g| g.collect{|o| o }}
- other_groups.each{ |g| raise Reports::BadRequest.new("groups are not equally sized, matching impossible") if g.size != first_group.size }
+ other_groups.each{ |g| raise OpenTox::BadRequestError.new("groups are not equally sized, matching impossible") if g.size != first_group.size }
first_group.each do |o|
@@ -94,7 +94,7 @@ module Reports::Util
break
end
end
- raise Reports::BadRequest.new("no match found for "+inspect_attributes(o, match_attributes)) unless match
+ raise OpenTox::BadRequestError.new("no match found for "+inspect_attributes(o, match_attributes)) unless match
end
end
end
diff --git a/report/validation_access.rb b/report/validation_access.rb
index 170cdfd..9c45165 100755
--- a/report/validation_access.rb
+++ b/report/validation_access.rb
@@ -8,7 +8,7 @@ class Reports::ValidationAccess
# initialize Reports::Validation object with data from Lib:Validation object
#
- def init_validation(validation, uri)
+ def init_validation(validation, uri, subjectid=nil)
raise "not implemented"
end
@@ -20,13 +20,13 @@ class Reports::ValidationAccess
# yields predictions (Lib::OTPredictions) if available
#
- def get_predictions(validation, task=nil)
+ def get_predictions(validation, subjectid=nil, task=nil)
raise "not implemented"
end
# replaces crossvalidations uris with corresponding validation uris, in-/output: array
#
- def resolve_cv_uris(validation_uris)
+ def resolve_cv_uris(validation_uris,subjectid=nil)
raise "not implemented"
end
@@ -37,11 +37,11 @@ class Reports::ValidationAccess
end
# is validation classification/regression?
- def feature_type(validation)
+ def feature_type(validation, subjectid=nil)
raise "not implemented"
end
- def predicted_variable(validation)
+ def predicted_variable(validation, subjectid=nil)
raise "not implemented"
end
@@ -53,20 +53,23 @@ class Reports::ValidationDB < Reports::ValidationAccess
# @model_store = {}
# end
- def resolve_cv_uris(validation_uris)
+ def resolve_cv_uris(validation_uris, subjectid=nil)
res = []
validation_uris.each do |u|
if u.to_s =~ /.*\/crossvalidation\/[0-9]+/
cv_id = u.split("/")[-1].to_i
cv = nil
- begin
- #cv = Lib::Crossvalidation.find( cv_id )
- cv = Lib::Crossvalidation.get( cv_id )
- rescue => ex
- raise "could not access crossvalidation with id "+validation_id.to_s+", error-msg: "+ex.message
- end
- raise Reports::BadRequest.new("crossvalidation with id '"+cv_id.to_s+"' not found") unless cv
- raise Reports::BadRequest.new("crossvalidation with id '"+cv_id.to_s+"' not finished") unless cv.finished
+
+ raise OpenTox::NotAuthorizedError.new "Not authorized: GET "+u.to_s if
+ subjectid and !OpenTox::Authorization.authorized?(u,"GET",subjectid)
+# begin
+# #cv = Lib::Crossvalidation.find( cv_id )
+# rescue => ex
+# raise "could not access crossvalidation with id "+validation_id.to_s+", error-msg: "+ex.message
+# end
+ cv = Lib::Crossvalidation.get( cv_id )
+ raise OpenTox::NotFoundError.new "crossvalidation with id "+cv_id.to_s+" not found" unless cv
+ raise OpenTox::BadRequestError.new("crossvalidation with id '"+cv_id.to_s+"' not finished") unless cv.finished
#res += Lib::Validation.find( :all, :conditions => { :crossvalidation_id => cv_id } ).collect{|v| v.validation_uri.to_s}
res += Lib::Validation.all( :crossvalidation_id => cv_id ).collect{|v| v.validation_uri.to_s }
else
@@ -76,21 +79,18 @@ class Reports::ValidationDB < Reports::ValidationAccess
res
end
- def init_validation(validation, uri)
+ def init_validation(validation, uri, subjectid=nil)
- raise Reports::BadRequest.new "not a validation uri: "+uri.to_s unless uri =~ /.*\/[0-9]+/
+ raise OpenTox::BadRequestError.new "not a validation uri: "+uri.to_s unless uri =~ /.*\/[0-9]+/
validation_id = uri.split("/")[-1]
- raise Reports::BadRequest.new "invalid validation id "+validation_id.to_s unless validation_id!=nil and
+ raise OpenTox::BadRequestError.new "invalid validation id "+validation_id.to_s unless validation_id!=nil and
(validation_id.to_i > 0 || validation_id.to_s=="0" )
v = nil
- begin
- #v = Lib::Validation.find(validation_id)
- v = Lib::Validation.get(validation_id)
- rescue => ex
- raise "could not access validation with id "+validation_id.to_s+", error-msg: "+ex.message
- end
- raise Reports::BadRequest.new "no validation found with id "+validation_id.to_s unless v #+" and uri "+uri.to_s unless v
- raise Reports::BadRequest.new "validation with id "+validation_id.to_s+" is not finished yet" unless v.finished
+ raise OpenTox::NotAuthorizedError.new "Not authorized: GET "+uri.to_s if
+ subjectid and !OpenTox::Authorization.authorized?(uri,"GET",subjectid)
+ v = Lib::Validation.get(validation_id)
+ raise OpenTox::NotFoundError.new "validation with id "+validation_id.to_s+" not found" unless v
+ raise OpenTox::BadRequestError.new "validation with id "+validation_id.to_s+" is not finished yet" unless v.finished
(Lib::VAL_PROPS + Lib::VAL_CV_PROPS).each do |p|
validation.send("#{p.to_s}=".to_sym, v.send(p))
@@ -107,32 +107,33 @@ class Reports::ValidationDB < Reports::ValidationAccess
#cv = Lib::Crossvalidation.find(validation.crossvalidation_id)
cv = Lib::Crossvalidation.get(validation.crossvalidation_id)
- raise Reports::BadRequest.new "no crossvalidation found with id "+validation.crossvalidation_id.to_s unless cv
+ raise OpenTox::BadRequestError.new "no crossvalidation found with id "+validation.crossvalidation_id.to_s unless cv
Lib::CROSS_VAL_PROPS.each do |p|
validation.send("#{p.to_s}=".to_sym, cv[p])
end
end
- def get_predictions(validation, task=nil)
+ def get_predictions(validation, subjectid=nil, task=nil)
Lib::OTPredictions.new( validation.feature_type, validation.test_dataset_uri,
validation.test_target_dataset_uri, validation.prediction_feature, validation.prediction_dataset_uri,
- validation.predicted_variable, task)
+ validation.predicted_variable, subjectid, task)
end
def get_class_domain( validation )
OpenTox::Feature.new( validation.prediction_feature ).domain
end
- def feature_type( validation )
- OpenTox::Model::Generic.new(validation.model_uri).feature_type
+ def feature_type( validation, subjectid=nil )
+ raise "subjectid is nil" unless subjectid
+ OpenTox::Model::Generic.new(validation.model_uri).feature_type(subjectid)
#get_model(validation).classification?
end
- def predicted_variable(validation)
+ def predicted_variable(validation, subjectid=nil)
raise "cannot derive model depended props for merged validations" if Lib::MergeObjects.merged?(validation)
- model = OpenTox::Model::Generic.find(validation.model_uri)
- raise Reports::NotFound.new "model not found '"+validation.model_uri+"'" unless model
+ model = OpenTox::Model::Generic.find(validation.model_uri, subjectid)
+ raise OpenTox::NotFoundError.new "model not found '"+validation.model_uri+"'" unless model
model.metadata[OT.predictedVariables]
#get_model(validation).predictedVariables
end
@@ -164,7 +165,7 @@ class Reports::ValidationWebservice < Reports::ValidationAccess
begin
vali_uri_list = RestClientWrapper.get uri
rescue => ex
- raise Reports::BadRequest.new "cannot get validations for cv at '"+uri.to_s+"', error msg: "+ex.message
+ raise OpenTox::BadRequestError.new "cannot get validations for cv at '"+uri.to_s+"', error msg: "+ex.message
end
res += vali_uri_list.split("\n")
else
@@ -180,7 +181,7 @@ class Reports::ValidationWebservice < Reports::ValidationAccess
begin
data = YAML.load(RestClient.get uri)
rescue => ex
- raise Reports::BadRequest.new "cannot get validation at '"+uri.to_s+"', error msg: "+ex.message
+ raise OpenTox::BadRequestError.new "cannot get validation at '"+uri.to_s+"', error msg: "+ex.message
end
Lib::VAL_PROPS.each do |p|
@@ -205,7 +206,7 @@ class Reports::ValidationWebservice < Reports::ValidationAccess
begin
data = YAML.load(RestClient.get validation.crossvalidation_uri)
rescue => ex
- raise Reports::BadRequest.new "cannot get crossvalidation at '"+validation.crossvalidation_uri.to_s+"', error msg: "+ex.message
+ raise OpenTox::BadRequestError.new "cannot get crossvalidation at '"+validation.crossvalidation_uri.to_s+"', error msg: "+ex.message
end
Lib::CROSS_VAL_PROPS.each do |p|
@@ -213,7 +214,7 @@ class Reports::ValidationWebservice < Reports::ValidationAccess
end
end
- def get_predictions(validation, task=nil)
+ def get_predictions(validation, subjectid=nil, task=nil)
Lib::Predictions.new( validation.prediction_feature, validation.test_dataset_uri, validation.prediction_dataset_uri)
end
end
diff --git a/report/validation_data.rb b/report/validation_data.rb
index c4eed12..0dd63ee 100755
--- a/report/validation_data.rb
+++ b/report/validation_data.rb
@@ -76,8 +76,10 @@ module Reports
attr_reader :predictions
- def initialize(uri = nil)
- @@validation_access.init_validation(self, uri) if uri
+ def initialize(uri = nil, subjectid = nil)
+ @@validation_access.init_validation(self, uri, subjectid) if uri
+ @subjectid = subjectid
+ #raise "subjectid is nil" unless subjectid
end
# returns/creates predictions, cache to save rest-calls/computation time
@@ -95,7 +97,7 @@ module Reports
task.progress(100) if task
nil
else
- @predictions = @@validation_access.get_predictions( self, task )
+ @predictions = @@validation_access.get_predictions( self, @subjectid, task )
end
end
end
@@ -111,12 +113,12 @@ module Reports
#
def feature_type
return @feature_type if @feature_type!=nil
- @feature_type = @@validation_access.feature_type(self)
+ @feature_type = @@validation_access.feature_type(self, @subjectid)
end
def predicted_variable
return @predicted_variable if @predicted_variable!=nil
- @predicted_variable = @@validation_access.predicted_variable(self)
+ @predicted_variable = @@validation_access.predicted_variable(self, @subjectid)
end
# loads all crossvalidation attributes, of the corresponding cv into this object
@@ -156,11 +158,11 @@ module Reports
#
class ValidationSet
- def initialize(validation_uris = nil)
+ def initialize(validation_uris=nil, subjectid=nil)
@unique_values = {}
validation_uris = Reports::Validation.resolve_cv_uris(validation_uris) if validation_uris
@validations = Array.new
- validation_uris.each{|u| @validations.push(Reports::Validation.new(u))} if validation_uris
+ validation_uris.each{|u| @validations.push(Reports::Validation.new(u, subjectid))} if validation_uris
end