From 654711ccecf3829f9ba8501fe67df06fd1aac9cf Mon Sep 17 00:00:00 2001 From: mguetlein Date: Fri, 27 May 2011 10:09:35 +0200 Subject: remove hack to determine prediction feature --- lib/feature_util.rb | 63 ------------------------------------ lib/predictions.rb | 2 +- report/validation_access.rb | 6 ++-- validation/validation_application.rb | 1 - validation/validation_service.rb | 14 +++----- 5 files changed, 8 insertions(+), 78 deletions(-) delete mode 100644 lib/feature_util.rb diff --git a/lib/feature_util.rb b/lib/feature_util.rb deleted file mode 100644 index e412416..0000000 --- a/lib/feature_util.rb +++ /dev/null @@ -1,63 +0,0 @@ - -module Lib - class FeatureUtil - - # this derieves the predicted_variable and predicted_confidence in prediction dataset - # predicted_variable: the feature-uri of model predictions - # predicted_confidence: the feature-uri of the model prediction confidence - # according to API info should be available in the API - # problem: IST has no feature-service -> predicted_variable depends on prediction dataset - # - # PENDING: ambit and ist declare prediction features differently -> unify - # - def self.predicted_variables( model, prediction_dataset_uri, subjectid=nil ) - - predicted_variable = nil - predicted_confidence = nil - - if model.metadata[OT.predictedVariables] - predictedVariables = model.metadata[OT.predictedVariables] - if predictedVariables.is_a?(Array) - if (predictedVariables.size==1) - predicted_variable = predictedVariables[0] - elsif (predictedVariables.size==2) - # PENDING identify confidence - conf_index = -1 - predictedVariables.size.times do |i| - conf_index = i if OpenTox::Feature.find(predictedVariables[i]).metadata[DC.title]=~/(?i)confidence/ - end - raise "size=2, no confidence "+predictedVariables.inspect+" "+model.uri.to_s if conf_index==-1 - predicted_variable = predictedVariables[1-conf_index] - predicted_confidence = predictedVariables[conf_index] - else - raise "size>2 "+predictedVariables.inspect+" "+model.uri.to_s - end - else - raise "predictedVariables is no array" - end - end - - unless predicted_variable - d = OpenTox::Dataset.new prediction_dataset_uri - d.load_features(subjectid) - d.features.keys.each do |f| - if d.features[f][OT.hasSource]==model.uri - # PENDING identify confidence - if f =~ /(?i)confidence/ - raise "duplicate confidence feature, what to choose?" if predicted_confidence!=nil - predicted_confidence = f - elsif d.features[f][RDF.type].include? OT.ModelPrediction - raise "duplicate predicted variable, what to choose?" if predicted_variable!=nil - predicted_variable = f - end - end - end - raise "could not estimate predicted variable, model: '"+model.uri.to_s+"', prediction_dataset: '"+ - prediction_dataset_uri.to_s+"'" unless predicted_variable - end - - {:predicted_variable => predicted_variable, :predicted_confidence => predicted_confidence} - end - end -end - diff --git a/lib/predictions.rb b/lib/predictions.rb index a449776..2409375 100755 --- a/lib/predictions.rb +++ b/lib/predictions.rb @@ -36,7 +36,7 @@ module Lib #puts "actual: "+actual_values.inspect #puts "confidence: "+confidence_values.inspect - raise "unknown feature_type: "+@feature_type.to_s unless + raise "unknown feature_type: '"+@feature_type.to_s+"'" unless @feature_type=="classification" || @feature_type=="regression" raise "no predictions" if @predicted_values.size == 0 num_info = "predicted:"+@predicted_values.size.to_s+ diff --git a/report/validation_access.rb b/report/validation_access.rb index ef6a806..299b124 100755 --- a/report/validation_access.rb +++ b/report/validation_access.rb @@ -124,15 +124,15 @@ class Reports::ValidationDB raise "cannot derive model depended props for merged validations" if Lib::MergeObjects.merged?(validation) model = OpenTox::Model::Generic.find(validation.model_uri, subjectid) raise OpenTox::NotFoundError.new "model not found '"+validation.model_uri+"'" unless model - Lib::FeatureUtil.predicted_variables(model, validation.prediction_dataset_uri, subjectid)[:predicted_variable] + model.predicted_variable(subjectid) end def predicted_confidence(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, subjectid) raise OpenTox::NotFoundError.new "model not found '"+validation.model_uri+"'" unless model - Lib::FeatureUtil.predicted_variables(model, validation.prediction_dataset_uri, subjectid)[:predicted_confidence] - end + model.predicted_confidence(subjectid) + end # private # def get_model(validation) diff --git a/validation/validation_application.rb b/validation/validation_application.rb index 32a1c99..39a5c50 100755 --- a/validation/validation_application.rb +++ b/validation/validation_application.rb @@ -4,7 +4,6 @@ end require 'lib/dataset_cache.rb' -require 'lib/feature_util.rb' require 'validation/validation_service.rb' get '/crossvalidation/?' do diff --git a/validation/validation_service.rb b/validation/validation_service.rb index a18c6ab..cc9faf5 100755 --- a/validation/validation_service.rb +++ b/validation/validation_service.rb @@ -46,13 +46,8 @@ module Validation test_target_dataset_uris = vals.collect{|v| v.test_target_dataset_uri} prediction_feature = vals.first.prediction_feature prediction_dataset_uris = vals.collect{|v| v.prediction_dataset_uri} - predicted_variables = [] - predicted_confidences = [] - models.size.times do |i| - predicted = Lib::FeatureUtil.predicted_variables(models[i], prediction_dataset_uris[i], subjectid) - predicted_variables << predicted[:predicted_variable] - predicted_confidences << predicted[:predicted_confidence] - end + predicted_variables = models.collect{|m| m.predicted_variable(subjectid)} + predicted_confidences = models.collect{|m| m.predicted_confidence(subjectid)} prediction = Lib::OTPredictions.new( feature_type, test_dataset_uris, test_target_dataset_uris, prediction_feature, prediction_dataset_uris, predicted_variables, predicted_confidences, subjectid ) @@ -224,9 +219,8 @@ module Validation dependentVariables = model.metadata[OT.dependentVariables] prediction_feature = self.prediction_feature ? nil : dependentVariables algorithm_uri = self.algorithm_uri ? nil : model.metadata[OT.algorithm] - predicted_variables = Lib::FeatureUtil.predicted_variables(model, prediction_dataset_uri, subjectid) - predicted_variable = predicted_variables[:predicted_variable] - predicted_confidence = predicted_variables[:predicted_confidence] + predicted_variable = model.predicted_variable(self.subjectid) + predicted_confidence = model.predicted_confidence(self.subjectid) compute_validation_stats( model.feature_type(self.subjectid), predicted_variable, predicted_confidence, prediction_feature, algorithm_uri, dry_run, task ) end -- cgit v1.2.3