def test_summary_quantiles(self, small_cont: ImageContainer, quantiles: Tuple[float, ...]): if not len(quantiles): with pytest.raises(ValueError, match=r"No quantiles have been selected."): small_cont.features_summary("image", quantiles=quantiles, feature_name="foo", channels=(0, 1)) else: features = small_cont.features_summary("image", quantiles=quantiles, feature_name="foo", channels=(0, 1)) haystack = features.keys() assert isinstance(features, dict) for c in (0, 1): for agg in ("mean", "std"): assert f"foo_ch-{c}_{agg}" in haystack, haystack for q in quantiles: assert f"foo_ch-{c}_quantile-{q}" in haystack, haystack
def test_custom_default_name(self, small_cont: ImageContainer): custom_features = small_cont.features_custom(np.mean, layer="image", channels=[0]) summary_features = small_cont.features_summary("image", feature_name="summary", channels=[0]) assert len(custom_features) == 1 assert f"{np.mean.__name__}_0" in custom_features assert custom_features[f"{np.mean.__name__}_0"] == summary_features["summary_ch-0_mean"]
def test_invalid_channels(self, small_cont: ImageContainer): with pytest.raises(ValueError, match=r"Channel `-1` is not in"): small_cont.features_summary("image", channels=-1)
def test_invalid_layer(self, small_cont: ImageContainer): with pytest.raises(KeyError, match=r"Image layer `foobar` not found in"): small_cont.features_summary("foobar")
def test_container_empty(self): cont = ImageContainer() with pytest.raises(ValueError, match=r"The container is empty."): cont.features_summary("image")