def it_knows_its_n_tiles(self): n_tiles = 4 score_tiler = ScoreTiler(RandomScorer(), (512, 512), n_tiles, 0) n_tiles_ = score_tiler.n_tiles assert type(n_tiles_) == int assert n_tiles_ == n_tiles
def it_knows_its_scorer(self): random_scorer = RandomScorer() score_tiler = ScoreTiler(random_scorer, (512, 512), 4, 0) scorer_ = score_tiler.scorer assert callable(scorer_) assert isinstance(scorer_, RandomScorer)
def it_knows_if_it_has_valid_tile_size(self, tmpdir, tile_size, expected_result): slide, _ = base_test_slide(tmpdir, PILIMG.RGBA_COLOR_500X500_155_249_240) score_tiler = ScoreTiler(RandomScorer(), tile_size, 2, 0) result = score_tiler._has_valid_tile_size(slide) assert type(result) == bool assert result == expected_result
def it_constructs_from_args(self, request): _init = initializer_mock(request, ScoreTiler) rs = RandomScorer() grid_tiler = ScoreTiler(rs, (512, 512), 4, 2, True, 0, "", ".png") _init.assert_called_once_with(ANY, rs, (512, 512), 4, 2, True, 0, "", ".png") assert isinstance(grid_tiler, ScoreTiler) assert isinstance(grid_tiler, GridTiler) assert isinstance(grid_tiler, Tiler)
def it_can_extract_score_tiles_and_save_report(self, request, tmpdir): _extract_tile = method_mock(request, Slide, "extract_tile") 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, os.path.join(tmp_path_, "processed")) coords = CP(0, 10, 0, 10) _tiles_generator = method_mock( request, ScoreTiler, "_tiles_generator", ) tile = Tile(image, coords) _extract_tile.return_value = tile _tiles_generator.return_value = ( [(0.8, coords), (0.7, coords)], [(0.8, coords), (0.7, coords)], ) _tile_filename = method_mock(request, GridTiler, "_tile_filename") _tile_filename.side_effect = [ f"tile_{i}_level2_0-10-0-10.png" for i in range(2) ] _save_report = method_mock(request, ScoreTiler, "_save_report", autospec=False) random_scorer = RandomScorer() score_tiler = ScoreTiler(random_scorer, (10, 10), 2, 0) binary_mask = BiggestTissueBoxMask() score_tiler.extract(slide, binary_mask, "report.csv") assert _extract_tile.call_args_list == [ call(slide, coords, 0, (10, 10)), call(slide, coords, 0, (10, 10)), ] _tiles_generator.assert_called_with(score_tiler, slide, binary_mask) assert _tile_filename.call_args_list == [ call(score_tiler, coords, 0), call(score_tiler, coords, 1), ] assert os.path.exists( os.path.join(tmp_path_, "processed", "tile_0_level2_0-10-0-10.png")) assert os.path.exists( os.path.join(tmp_path_, "processed", "tile_1_level2_0-10-0-10.png")) _save_report.assert_called_once_with( "report.csv", [(0.8, coords), (0.7, coords)], [(0.8, coords), (0.7, coords)], [f"tile_{i}_level2_0-10-0-10.png" for i in range(2)], )
def it_can_extract_score_tiles(self, request, tmpdir): _extract_tile = method_mock(request, Slide, "extract_tile") 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, os.path.join(tmp_path_, "processed")) _highest_score_tiles = method_mock(request, ScoreTiler, "_highest_score_tiles") coords = CP(0, 10, 0, 10) tile = Tile(image, coords) _extract_tile.return_value = tile _highest_score_tiles.return_value = ( [(0.8, coords), (0.7, coords)], [(0.8, coords), (0.7, coords)], ) _tile_filename = method_mock(request, GridTiler, "_tile_filename") _tile_filename.side_effect = [ f"tile_{i}_level2_0-10-0-10.png" for i in range(2) ] _save_report = method_mock(request, ScoreTiler, "_save_report") random_scorer = RandomScorer() score_tiler = ScoreTiler(random_scorer, (10, 10), 2, 2) score_tiler.extract(slide) assert _extract_tile.call_args_list == [ call(slide, coords, 2), call(slide, coords, 2), ] _highest_score_tiles.assert_called_once_with(score_tiler, slide) assert _tile_filename.call_args_list == [ call(score_tiler, coords, 0), call(score_tiler, coords, 1), ] assert os.path.exists( os.path.join(tmp_path_, "processed", "tiles", "tile_0_level2_0-10-0-10.png") ) assert os.path.exists( os.path.join(tmp_path_, "processed", "tiles", "tile_1_level2_0-10-0-10.png") ) _save_report.assert_not_called()