def test_uncrop_too_small_requested_shape(self, small_cont_1c: ImageContainer): crops = list(small_cont_1c.generate_equal_crops(size=13)) with pytest.raises(ValueError, match=r"Requested final image shape"): ImageContainer.uncrop(crops, shape=(small_cont_1c.shape[0] - 1, small_cont_1c.shape[1] - 1))
def test_equal_crops_as_array(self, small_cont: ImageContainer, as_array: bool): small_cont.add_img(np.random.normal(size=(small_cont.shape + (1, ))), channel_dim="foobar", layer="baz") for crop in small_cont.generate_equal_crops(size=11, as_array=as_array): if as_array: if isinstance(as_array, bool): assert isinstance(crop, dict) for key in small_cont: assert key in crop assert crop[key].shape == ( 11, 11, small_cont[key].data.shape[-1]) elif isinstance(as_array, str): assert isinstance(crop, np.ndarray) assert crop.shape == (11, 11, small_cont[as_array].data.shape[-1]) else: assert isinstance(crop, tuple) assert len(crop) == len(as_array) for key, data in zip(as_array, crop): assert isinstance(data, np.ndarray) assert data.shape == (11, 11, small_cont[key].data.shape[-1]) else: assert isinstance(crop, ImageContainer) for key in (Key.img.coords, Key.img.padding, Key.img.scale, Key.img.mask_circle): assert key in crop.data.attrs, key assert crop.shape == (11, 11)
def test_uncrop_preserves_shape(self, small_cont_1c: ImageContainer): small_cont_1c.add_img(np.random.normal(size=(small_cont_1c.shape + (4, ))), channel_dim="foobar", layer="baz") crops = list(small_cont_1c.generate_equal_crops(size=13)) uncrop = ImageContainer.uncrop(crops) np.testing.assert_array_equal(small_cont_1c.shape, uncrop.shape) for key in small_cont_1c: np.testing.assert_array_equal(uncrop[key], small_cont_1c[key])