def test_ugly(self): bps = (0, 668, 1587, 3085, 5000, 6915, 8413, 9332, 10000) bucket_limits = [ -1.0, 0.0, 0.917246389039776, 1.0089710279437536, 1.7976931348623157e308, ] bucket_counts = [0.0, 896.0, 0.0, 64.0] assert len(bucket_counts) == len(bucket_limits) - 1 buckets = list( zip(*[bucket_limits[:-1], bucket_limits[1:], bucket_counts]) ) vals = compressor.compress_histogram(buckets, bps) self.assertEqual(tuple(v.basis_point for v in vals), bps) self.assertAlmostEqual(vals[0].value, -1.0) self.assertAlmostEqual(vals[1].value, -0.86277993701301037) self.assertAlmostEqual(vals[2].value, -0.67399964077791519) self.assertAlmostEqual(vals[3].value, -0.36628159533703131) self.assertAlmostEqual(vals[4].value, 0.027096279842737214) self.assertAlmostEqual(vals[5].value, 0.42047415502250551) self.assertAlmostEqual(vals[6].value, 0.72819220046338917) self.assertAlmostEqual(vals[7].value, 0.91697249669848446) self.assertAlmostEqual(vals[8].value, 1.7976931348623157e308)
def test_another_example(self): bps = (0, 2500, 5000, 7500, 10000) buckets = [[1, 2, 1], [2, 3, 3], [3, 4, 0]] self.assertEqual( _make_expected_value((0, 1.0), (2500, 2.0), (5000, 2.0 + 1 / 3), (7500, 2.0 + 2 / 3), (10000, 4.0)), compressor.compress_histogram(buckets, bps))
def test_empty(self): bps = (0, 2500, 5000, 7500, 10000) buckets = [[0, 1, 0], [1, 2, 0], [2, 3, 0]] self.assertEqual( _make_expected_value( (0, 3.0), (2500, 3.0), (5000, 3.0), (7500, 3.0), (10000, 3.0), ), compressor.compress_histogram(buckets, bps), )
def summarize_compressed_histogram(self, events: List[Event]): basis_points = [int(b) for b in np.multiply(BASIS_POINTS, 100)] results = [] for e in events: buckets = compressor.compress_histogram(e.tensor) assert (len(buckets) == len(basis_points)) for i, c in enumerate(buckets): assert (c.basis_point == basis_points[i]) results.append([e.step] + [c.value for c in buckets]) return np.asarray(results)
def _compress(self, histogram): (wall_time, step, buckets) = histogram converted_buckets = compressor.compress_histogram(buckets) return [wall_time, step, converted_buckets]