summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormguetlein <martin.guetlein@gmail.com>2011-05-27 10:09:35 +0200
committermguetlein <martin.guetlein@gmail.com>2011-05-27 10:09:35 +0200
commit654711ccecf3829f9ba8501fe67df06fd1aac9cf (patch)
tree9ec6babf6eb302bd379bcb5879a2b814dfce090f
parent5abed3eedb5e0bc763574ef6a24b006546bdb22f (diff)
remove hack to determine prediction feature
-rw-r--r--lib/feature_util.rb63
-rwxr-xr-xlib/predictions.rb2
-rwxr-xr-xreport/validation_access.rb6
-rwxr-xr-xvalidation/validation_application.rb1
-rwxr-xr-xvalidation/validation_service.rb14
5 files changed, 8 insertions, 78 deletions
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