def test_generate_equi_width_buckets(self): _assert_buckets_almost_equal( self, quantiles_util.generate_equi_width_buckets( quantiles=[1.0, 5.0, 10.0, 15.0, 20.0], min_val=0, max_val=24.0, total_count=18, num_buckets=3), [ quantiles_util.Bucket(0, 8.0, 7.8), quantiles_util.Bucket(8.0, 16.0, 4.8), quantiles_util.Bucket(16.0, 24.0, 5.4) ]) _assert_buckets_almost_equal( self, quantiles_util.generate_equi_width_buckets( quantiles=[1.0, 2.0, 3.0, 4.0, 5.0], min_val=1.0, max_val=5.0, total_count=6, num_buckets=3), [ quantiles_util.Bucket(1.0, 2.33333333, 2.33333333), quantiles_util.Bucket(2.33333333, 3.66666666, 1.33333333), quantiles_util.Bucket(3.66666666, 5, 2.33333333) ]) _assert_buckets_almost_equal( self, quantiles_util.generate_equi_width_buckets( quantiles=[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], min_val=1.0, max_val=1.0, total_count=100, num_buckets=3), [quantiles_util.Bucket(1.0, 1.0, 100.0)])
_EQUI_WIDTH_BUCKETS_TESTS = [ { 'testcase_name': 'finite_values_integer_boundaries', 'quantiles': [0, 1.0, 5.0, 10.0, 15.0, 20.0, 24.0], 'finite_min': 0, 'finite_max': 24, 'total_count': 18, 'num_buckets': 3, 'expected_buckets': [ quantiles_util.Bucket(0, 8.0, 7.8), quantiles_util.Bucket(8.0, 16.0, 4.8), quantiles_util.Bucket(16.0, 24.0, 5.4) ], }, { 'testcase_name': 'finite_values_float_boundaries', 'quantiles': [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 5.0], 'finite_min': 1, 'finite_max': 5, 'total_count': 6, 'num_buckets':
def test_find_median(self): self.assertEqual(quantiles_util.find_median([5.0]), 5.0) self.assertEqual(quantiles_util.find_median([3.0, 5.0]), 4.0) self.assertEqual(quantiles_util.find_median([3.0, 4.0, 5.0]), 4.0) self.assertEqual(quantiles_util.find_median([3.0, 4.0, 5.0, 6.0]), 4.5) _EQUI_WIDTH_BUCKETS_TESTS = [ { 'testcase_name': 'finite_values_integer_boundaries', 'quantiles': [0, 1.0, 5.0, 10.0, 15.0, 20.0, 24.0], 'finite_min': 0, 'finite_max': 24, 'total_count': 18, 'num_buckets': 3, 'expected_buckets': [quantiles_util.Bucket(0, 8.0, 7.8), quantiles_util.Bucket(8.0, 16.0, 4.8), quantiles_util.Bucket(16.0, 24.0, 5.4)], }, { 'testcase_name': 'finite_values_float_boundaries', 'quantiles': [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 5.0], 'finite_min': 1, 'finite_max': 5, 'total_count': 6, 'num_buckets': 3, 'expected_buckets': [ quantiles_util.Bucket(1.0, 2.33333333, 2.33333333), quantiles_util.Bucket(2.33333333, 3.66666666, 1.33333333), quantiles_util.Bucket(3.66666666, 5, 2.33333333)], },