def test_sum(self): for shape, tiles_count in self.data: tiler = Tiler(shape, tiles_count, outlier=False, supersampling=4) ones = np.ones(tiler.tile_shape, dtype=cfg.PRECISION.np_float) ones_gpu = cl_array.to_device(cfg.OPENCL.queue, ones) out = tiler.average(ones_gpu).get() np.testing.assert_almost_equal( out, ones[::tiler.supersampling, ::tiler.supersampling])
def test_tile_shape(self): for size, tiles_count in self.data: tiler = Tiler(size, tiles_count, True) self.assertEqual(2 * size[0] / tiles_count[0], tiler.tile_shape[0]) self.assertEqual(2 * size[1] / tiles_count[1], tiler.tile_shape[1]) tiler = Tiler(size, tiles_count, False) self.assertEqual(size[0] / tiles_count[0], tiler.tile_shape[0]) self.assertEqual(size[1] / tiles_count[1], tiler.tile_shape[1])
def test_tile_indices(self): sizes = [256, 1024] tile_counts = [2, 4] for j in range(len(sizes)): for i in range(len(sizes)): size = sizes[j], sizes[i] for t_j in range(len(tile_counts)): for t_i in range(len(tile_counts)): tiles_count = tile_counts[t_j], tile_counts[t_i] outlier = True tiler = Tiler(size, tiles_count, outlier) self._check_tiles(tiler.tile_indices, size, tiles_count, outlier) outlier = False tiler = Tiler(size, tiles_count, outlier) self._check_tiles(tiler.tile_indices, size, tiles_count, outlier)
def test_insert(self): shape = 16, 32 tiles_count = 4, 2 tile_shape = [shape[i] / tiles_count[i] for i in range(len(shape))] tilers = [ Tiler(shape, tiles_count, outlier=True, supersampling=1), Tiler(shape, tiles_count, outlier=False, supersampling=1), Tiler(shape, tiles_count, outlier=True, supersampling=2), Tiler(shape, tiles_count, outlier=False, supersampling=2), Tiler(shape, tiles_count, outlier=True, supersampling=4), Tiler(shape, tiles_count, outlier=False, supersampling=4) ] for tiler in tilers: self.assertEqual(tiler.overall_image.shape, shape) for j in range(tiles_count[0]): for i in range(tiles_count[1]): tile = np.random.random(tile_shape).\ astype(tiler.overall_image.dtype) tiler.insert(tile, (j, i)) np.testing.assert_equal( tiler.overall_image[j * tile_shape[0]:tile_shape[0] * (j + 1), i * tile_shape[1]:tile_shape[1] * (i + 1)], tile)
def test_result_tile_shape(self): for shape, tiles_count in self.data: tiler = Tiler(shape, tiles_count, outlier=False, supersampling=1) ground_truth = tiler.tile_shape self.assertEqual(tiler.result_tile_shape, ground_truth) tiler = Tiler(shape, tiles_count, outlier=False, supersampling=2) ground_truth = tuple( [dim / tiler.supersampling for dim in tiler.tile_shape]) self.assertEqual(tiler.result_tile_shape, ground_truth) tiler = Tiler(shape, tiles_count, outlier=True, supersampling=1) ground_truth = tuple([dim / 2 for dim in tiler.tile_shape]) self.assertEqual(tiler.result_tile_shape, ground_truth) tiler = Tiler(shape, tiles_count, outlier=True, supersampling=2) ground_truth = tuple( [dim / 2 / tiler.supersampling for dim in tiler.tile_shape]) self.assertEqual(tiler.result_tile_shape, ground_truth) tiler = Tiler(shape, tiles_count, outlier=True, supersampling=4) ground_truth = tuple( [dim / 2 / tiler.supersampling for dim in tiler.tile_shape]) self.assertEqual(tiler.result_tile_shape, ground_truth)