def test2dRectilinearRecursion(self): ''' 0 1 2 +----------------------------+----------------------+ | | 1.5 | | | +--------+---------+ | | | | | | | | 0 | | 3 | 4 | | | | | | | | | | | | | | | | +--------+---------+ | 1+---------------------------------------------------+ | 0.5 | | | +-----------+------------+ | | | | | | | | | | 1 | 2 | | 5 | | | | | | | | | | | | | | +-----------+------------+ | | 2+---------------------------------------------------+ ''' outer_mapper = RectilinearBinMapper([[0, 1, 2], [0, 1, 2]]) upper_right_mapper = RectilinearBinMapper([[1, 1.5, 2], [0, 1]]) lower_left_mapper = RectilinearBinMapper([[0, 0.5, 1], [1, 2]]) rmapper = RecursiveBinMapper(outer_mapper) rmapper.add_mapper(upper_right_mapper, [1.5, 0.5]) rmapper.add_mapper(lower_left_mapper, [0.5, 1.5]) pairs = [(0.5, 0.5), (1.25, 0.5), (1.75, 0.5), (0.25, 1.5), (0.75, 1.5), (1.5, 1.5)] assert rmapper.nbins == 6 assignments = rmapper.assign(pairs) expected = [0, 3, 4, 1, 2, 5] print('PAIRS', pairs) print('LABELS', list(rmapper.labels)) print('EXPECTED', expected) print('OUTPUT ', assignments) assert (assignments == expected).all()
def test2dAssign(self): boundaries = [(-1, -0.5, 0, 0.5, 1), (-1, -0.5, 0, 0.5, 1)] coords = np.array([(-0.75, -0.75), (-0.25, -0.25), (0, 0), (0.25, 0.25), (0.75, 0.75), (-0.25, 0.75), (0.25, -0.75)]) assigner = RectilinearBinMapper(boundaries) """bin structure: [(a,b), (c,d)] => x in [a,b), y in [c, d) 0:[(-1, -0.5), (-1, -0.5)] 1:[(-1, -0.5), (-0.5, 0)] 2:[(-1, -0.5), (0, 0.5)] 3:[(-1, -0.5), (0.5, 1)] 4:[(-0.5, 0), (-1, -0.5)] 5:[(-0.5, 0), (-0.5, 0)] 6:[(-0.5, 0), (0, 0.5)] 7:[(-0.5, 0), (0.5, 1)] 8:[(0, 0.5), (-1, -0.5)] 9:[(0, 0.5), (-0.5, 0)] 10:[(0, 0.5), (0, 0.5)] 11:[(0, 0.5), (0.5, 1)] 12:[(0.5, 1), (-1, -0.5)] 13:[(0.5, 1), (-0.5, 0)] 14:[(0.5, 1), (0, 0.5)] 15:[(0.5, 1), (0.5, 1)]""" assert (assigner.assign(coords) == [0, 5, 10, 10, 15, 7, 8]).all()
def dummy_callback_two(self): system = self.sim_manager.system bounds = [0.0, 1.0, 2.0, 5.0] system.bin_mapper = RectilinearBinMapper([bounds])
def test1dAssign(self): bounds = [0.0, 1.0, 2.0, 3.0] coords = np.array([0, 0.5, 1.5, 1.6, 2.0, 2.0, 2.9])[:, None] assigner = RectilinearBinMapper([bounds]) assert (assigner.assign(coords) == [0, 0, 1, 1, 2, 2, 2]).all()