def it_can_generate_grid_tiles_with_no_check_tissue( self, request, tmpdir, tile1, tile2, has_enough_tissue, expected_n_tiles, ): slide, _ = base_test_slide(tmpdir, PILIMG.RGBA_COLOR_500X500_155_249_240) _extract_tile = method_mock(request, Slide, "extract_tile") _has_enough_tissue = method_mock(request, Tile, "has_enough_tissue") _has_enough_tissue.side_effect = has_enough_tissue _grid_coordinates_generator = method_mock( request, GridTiler, "_grid_coordinates_generator") _grid_coordinates_generator.return_value = [ CP(0, 10, 0, 10), CP(0, 10, 0, 10) ] _extract_tile.side_effect = [tile1, tile2] grid_tiler = GridTiler((10, 10), level=0, check_tissue=False) tiles = [tile1, tile2] generated_tiles = list(grid_tiler._tiles_generator(slide)) _grid_coordinates_generator.assert_called_once_with(grid_tiler, slide) assert _extract_tile.call_args_list == ([ call(slide, CP(0, 10, 0, 10), 0), call(slide, CP(0, 10, 0, 10), 0) ]) _has_enough_tissue.assert_not_called() assert len(generated_tiles) == expected_n_tiles for i, tile in enumerate(generated_tiles): assert tile[0] == tiles[i]
def it_can_generate_grid_tiles( self, request, tmpdir, tile1, tile2, check_tissue, has_enough_tissue, expected_n_tiles, ): tmp_path_ = tmpdir.mkdir("myslide") image = PILIMG.RGBA_COLOR_500X500_155_249_240 image.save(os.path.join(tmp_path_, "mywsi.png"), "PNG") slide_path = os.path.join(tmp_path_, "mywsi.png") slide = Slide(slide_path, "processed") _extract_tile = method_mock(request, Slide, "extract_tile") _has_enough_tissue = method_mock(request, Tile, "has_enough_tissue") _has_enough_tissue.side_effect = has_enough_tissue _grid_coordinates_generator = method_mock( request, GridTiler, "_grid_coordinates_generator" ) _grid_coordinates_generator.return_value = [CP(0, 10, 0, 10), CP(0, 10, 0, 10)] _extract_tile.side_effect = [tile1, tile2] grid_tiler = GridTiler((10, 10), level=0, check_tissue=check_tissue) tiles = [tile1, tile2] generated_tiles = list(grid_tiler._tiles_generator(slide)) _grid_coordinates_generator.assert_called_once_with(grid_tiler, slide) assert _extract_tile.call_args_list == ( [call(slide, CP(0, 10, 0, 10), 0), call(slide, CP(0, 10, 0, 10), 0)] ) assert len(generated_tiles) == expected_n_tiles for i, tile in enumerate(generated_tiles): assert tile[0] == tiles[i]
def and_doesnt_raise_error_with_wrong_coordinates(self, request, tmpdir): slide, _ = base_test_slide(tmpdir, PILIMG.RGBA_COLOR_500X500_155_249_240) coords = CP(5800, 6000, 5800, 6000) _grid_coordinates_generator = method_mock( request, GridTiler, "_grid_coordinates_generator") _grid_coordinates_generator.return_value = [coords] grid_tiler = GridTiler((10, 10)) generated_tiles = list(grid_tiler._tiles_generator(slide)) assert len(generated_tiles) == 0 _grid_coordinates_generator.assert_called_once_with(grid_tiler, slide)
def and_doesnt_raise_error_with_wrong_coordinates(self, request, tmpdir): tmp_path_ = tmpdir.mkdir("myslide") image = PILIMG.RGBA_COLOR_500X500_155_249_240 image.save(os.path.join(tmp_path_, "mywsi.png"), "PNG") slide_path = os.path.join(tmp_path_, "mywsi.png") slide = Slide(slide_path, "processed") coords = CP(5800, 6000, 5800, 6000) _grid_coordinates_generator = method_mock( request, GridTiler, "_grid_coordinates_generator" ) _grid_coordinates_generator.return_value = [coords] grid_tiler = GridTiler((10, 10)) generated_tiles = list(grid_tiler._tiles_generator(slide)) assert len(generated_tiles) == 0 _grid_coordinates_generator.assert_called_once_with(grid_tiler, slide)
def but_with_wrong_coordinates(self, request, tmpdir): slide, _ = base_test_slide(tmpdir, PILIMG.RGBA_COLOR_500X500_155_249_240) _has_enough_tissue = method_mock(request, Tile, "has_enough_tissue") _has_enough_tissue.return_value = False _grid_coordinates_generator = method_mock( request, GridTiler, "_grid_coordinates_generator") coords1 = CP(600, 610, 600, 610) coords2 = CP(0, 10, 0, 10) _grid_coordinates_generator.return_value = [coords1, coords2] grid_tiler = GridTiler((10, 10), level=0, check_tissue=False) generated_tiles = list(grid_tiler._tiles_generator(slide)) _grid_coordinates_generator.assert_called_once_with(grid_tiler, slide) assert len(generated_tiles) == 1 # generated_tiles[0][0] is a Tile object but we don't know what object it is # because Slide.extract_tile is not mocked (for the exception to happen inside) assert isinstance(generated_tiles[0][0], Tile) assert generated_tiles[0][1] == coords2
def but_with_wrong_coordinates(self, request, tmpdir): tmp_path_ = tmpdir.mkdir("myslide") image = PILIMG.RGBA_COLOR_500X500_155_249_240 image.save(os.path.join(tmp_path_, "mywsi.png"), "PNG") slide_path = os.path.join(tmp_path_, "mywsi.png") slide = Slide(slide_path, "processed") _has_enough_tissue = method_mock(request, Tile, "has_enough_tissue") _has_enough_tissue.return_value = False _grid_coordinates_generator = method_mock( request, GridTiler, "_grid_coordinates_generator" ) coords1 = CP(600, 610, 600, 610) coords2 = CP(0, 10, 0, 10) _grid_coordinates_generator.return_value = [coords1, coords2] grid_tiler = GridTiler((10, 10), level=0, check_tissue=False) generated_tiles = list(grid_tiler._tiles_generator(slide)) _grid_coordinates_generator.assert_called_once_with(grid_tiler, slide) assert len(generated_tiles) == 1 # generated_tiles[0][0] is a Tile object but we don't know what object it is # because Slide.extract_tile is not mocked (for the exception to happen inside) assert isinstance(generated_tiles[0][0], Tile) assert generated_tiles[0][1] == coords2