From 98c22a0f22c5e4934a72dfeabbcb1fbad5a5838f Mon Sep 17 00:00:00 2001 From: mguetlein Date: Wed, 14 Dec 2011 16:40:01 +0100 Subject: make prediciton filtering robust to nil values --- lib/prediction_data.rb | 8 +++++--- 1 file 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