private Double computeFractionData(BinomialMetrics.BinomialMetric metric, double effectSize, Parameters.Mode mode, long bucketImpressions, long otherBucketImpressions, long bucketUniqueCounts, long otherBucketUniqueCounts) { Double fractionData; try { if (mode == Parameters.Mode.PRODUCTION) { fractionData = min(1.0, metric.fractionOfData(bucketImpressions, bucketUniqueCounts, otherBucketImpressions, otherBucketUniqueCounts, effectSize)); } else if (mode == Parameters.Mode.TEST) { fractionData = metric.fractionOfData(bucketImpressions, bucketUniqueCounts, otherBucketImpressions, otherBucketUniqueCounts, effectSize); } else { throw new IllegalArgumentException("incorrect mode specified: " + mode.toString()); } } catch (IllegalArgumentException iae) { LOGGER.warn("BinomialMetric.fractionOfData called with invalid arguments by AnalyticsService.generateBucketComparisons: ", iae); fractionData = NaN; } return fractionData; }