summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormguetlein <martin.guetlein@gmail.com>2011-12-14 16:40:01 +0100
committermguetlein <martin.guetlein@gmail.com>2011-12-14 16:40:01 +0100
commit98c22a0f22c5e4934a72dfeabbcb1fbad5a5838f (patch)
tree718f6e36f018c4a981ebc6ed8f09ec3f5a4f46fc
parentd02b54b2c58d2d71e29700bbedbb38768d6c9e35 (diff)
make prediciton filtering robust to nil values
-rw-r--r--lib/prediction_data.rb8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/prediction_data.rb b/lib/prediction_data.rb
index 154d11a..434818d 100644
--- a/lib/prediction_data.rb
+++ b/lib/prediction_data.rb
@@ -7,6 +7,7 @@ module Lib
def self.filter_data( data, compounds, min_confidence, min_num_predictions, max_num_predictions, prediction_index=nil )
+ raise "cannot filter anything, no confidence values available" if data[:confidence_values][0]==nil
raise OpenTox::BadRequestError.new "please specify either min_confidence or max_num_predictions" if
(min_confidence!=nil and max_num_predictions!=nil) || (min_confidence==nil and max_num_predictions==nil)
raise OpenTox::BadRequestError.new "min_num_predictions only valid for min_confidence" if
@@ -15,14 +16,16 @@ module Lib
LOGGER.debug("filtering predictions, conf:'"+min_confidence.to_s+"' min_num_predictions: '"+
min_num_predictions.to_s+"' max_num_predictions: '"+max_num_predictions.to_s+"' ")
-
+ #LOGGER.debug("to filter:\nconf: "+data[:confidence_values].inspect)
+
orig_size = data[:predicted_values].size
valid_indices = []
data[:confidence_values].size.times do |i|
next if prediction_index!=nil and prediction_index!=data[:predicted_values][i]
valid = false
if min_confidence!=nil
- valid = (valid_indices.size<=min_num_predictions or data[:confidence_values][i]>=min_confidence)
+ valid = (valid_indices.size<=min_num_predictions or
+ (data[:confidence_values][i]!=nil and data[:confidence_values][i]>=min_confidence))
else
valid = valid_indices.size<max_num_predictions
end
@@ -37,7 +40,6 @@ module Lib
new_compounds = []
valid_indices.each{|i| new_compounds << compounds[i]}
end
-
LOGGER.debug("filtered predictions remaining: "+data[:predicted_values].size.to_s+"/"+orig_size.to_s)
PredictionData.new(data, new_compounds)