From b5cb0260c32a859783f87f10b8af05dc26feab76 Mon Sep 17 00:00:00 2001 From: ArneDefauw Date: Tue, 28 Jan 2025 10:58:27 +0100 Subject: [PATCH 01/11] fix table name and add unit test --- src/spatialdata_plot/pl/utils.py | 2 +- tests/pl/test_render_labels.py | 59 +++++++++++++++++++++++++++++++- 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/src/spatialdata_plot/pl/utils.py b/src/spatialdata_plot/pl/utils.py index 03941dd8..d7c0ac75 100644 --- a/src/spatialdata_plot/pl/utils.py +++ b/src/spatialdata_plot/pl/utils.py @@ -755,7 +755,7 @@ def _set_color_source_vec( color_source_vector = pd.Categorical(color_source_vector) # convert, e.g., `pd.Series` color_mapping = _get_categorical_color_mapping( - adata=sdata.table, + adata=sdata.tables[table_name], cluster_key=value_to_plot, color_source_vector=color_source_vector, groups=groups, diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index d7697bd7..0c9fa790 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -10,13 +10,15 @@ from spatialdata import SpatialData, deepcopy, get_element_instances from spatialdata.models import TableModel +from spatialdata import bounding_box_query + import spatialdata_plot # noqa: F401 from tests.conftest import DPI, PlotTester, PlotTesterMeta RNG = np.random.default_rng(seed=42) sc.pl.set_rcParams_defaults() sc.set_figure_params(dpi=DPI, color_map="viridis") -matplotlib.use("agg") # same as GitHub action runner +#matplotlib.use("agg") # same as GitHub action runner _ = spatialdata_plot # WARNING: @@ -214,6 +216,61 @@ def test_plot_label_categorical_color(self, sdata_blobs: SpatialData): self._make_tablemodel_with_categorical_labels(sdata_blobs, labels_name="blobs_labels") sdata_blobs.pl.render_labels("blobs_labels", color="category").pl.show() + def test_plot_label_categorical_color_and_colors_in_uns(self, sdata_blobs: SpatialData): + self._make_tablemodel_with_categorical_labels(sdata_blobs, labels_name="blobs_labels") + # purple, green, yellow + sdata_blobs[ "other_table" ].uns[ "category_colors"] = [ "#800080", "#008000", "#FFFF00" ] + # placeholder, otherwise "category_colors" will be ignored + sdata_blobs[ "other_table" ].uns[ "category" ] = "__value__" + sdata_blobs.pl.render_labels("blobs_labels", color="category").pl.show() + + def test_plot_label_categorical_color_and_colors_in_uns_query_uns_colors_removed(self, sdata_blobs: SpatialData): + self._make_tablemodel_with_categorical_labels(sdata_blobs, labels_name="blobs_labels") + # purple, green, yellow + sdata_blobs[ "other_table" ].uns[ "category_colors"] = [ "#800080", "#008000", "#FFFF00" ] + # placeholder, otherwise "category_colors" will be ignored + sdata_blobs[ "other_table" ].uns[ "category" ] = "__value__" + sdata_blobs = bounding_box_query( + sdata_blobs, + axes=("y", "x"), + min_coordinate=[0, 0], + max_coordinate=[100, 100], + target_coordinate_system="global", + ) + # we would expect colors purple and yellow for a and c, but we see default colors blue en orange, + # Reason: "category_colors" is removed by `.filter_by_coordinate_system` in + # `spatialdata_plot.pl.render._render_labels`. + # Why? Because `.bounding_box_query` removes "category_colors" that are not in the query, + # but restores original number of catergories in `.obs["category"]`, see https://github.com/scverse/anndata/issues/997, + # leading to mismatch and removal of "category_colors" by `.filter_by_coordinate_system`. + assert all(sdata_blobs[ "other_table" ].obs[ "category" ].unique() == [ "a", "c" ]) + assert all(sdata_blobs[ "other_table" ].uns["category_colors" ] == [ "#800080", "#FFFF00" ]) + # but due to https://github.com/scverse/anndata/issues/997: + assert all(sdata_blobs[ "other_table" ].obs["category"].cat.categories == ["a", "b", "c" ]) + sdata_blobs.pl.render_labels("blobs_labels", color="category").pl.show() + + def test_plot_label_categorical_color_and_colors_in_uns_query_workaround(self, sdata_blobs: SpatialData): + self._make_tablemodel_with_categorical_labels(sdata_blobs, labels_name="blobs_labels") + # purple, green, yellow + sdata_blobs[ "other_table" ].uns[ "category_colors"] = [ "#800080", "#008000", "#FFFF00" ] + # placeholder, otherwise "category_colors" will be ignored + sdata_blobs[ "other_table" ].uns[ "category" ] = "__value__" + sdata_blobs = bounding_box_query( + sdata_blobs, + axes=("y", "x"), + min_coordinate=[0, 0], + max_coordinate=[100, 100], + target_coordinate_system="global", + ) + assert all(sdata_blobs[ "other_table" ].obs[ "category" ].unique() == [ "a", "c" ]) + assert all(sdata_blobs[ "other_table" ].uns["category_colors" ] == [ "#800080", "#FFFF00" ]) + # but due to https://github.com/scverse/anndata/issues/997: + assert all(sdata_blobs[ "other_table" ].obs["category"].cat.categories == ["a", "b", "c" ]) + sdata_blobs["other_table"].obs[ "category" ]= \ + sdata_blobs[ "other_table" ].obs[ "category" ].cat.remove_unused_categories() + assert all(sdata_blobs[ "other_table" ].obs["category"].cat.categories == ["a", "c" ]) + sdata_blobs.pl.render_labels("blobs_labels", color="category").pl.show() + def _make_tablemodel_with_categorical_labels(self, sdata_blobs, labels_name: str): instances = get_element_instances(sdata_blobs[labels_name]) n_obs = len(instances) From 0f2663ef03201b3ac1dbc5711759c76f2b282d68 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 10:26:27 +0000 Subject: [PATCH 02/11] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/pl/test_render_labels.py | 56 ++++++++++++++++------------------ 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index 0c9fa790..327e60da 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -1,5 +1,4 @@ import dask.array as da -import matplotlib import matplotlib.pyplot as plt import numpy as np import pandas as pd @@ -7,18 +6,16 @@ import scanpy as sc from anndata import AnnData from spatial_image import to_spatial_image -from spatialdata import SpatialData, deepcopy, get_element_instances +from spatialdata import SpatialData, bounding_box_query, deepcopy, get_element_instances from spatialdata.models import TableModel -from spatialdata import bounding_box_query - import spatialdata_plot # noqa: F401 from tests.conftest import DPI, PlotTester, PlotTesterMeta RNG = np.random.default_rng(seed=42) sc.pl.set_rcParams_defaults() sc.set_figure_params(dpi=DPI, color_map="viridis") -#matplotlib.use("agg") # same as GitHub action runner +# matplotlib.use("agg") # same as GitHub action runner _ = spatialdata_plot # WARNING: @@ -218,18 +215,18 @@ def test_plot_label_categorical_color(self, sdata_blobs: SpatialData): def test_plot_label_categorical_color_and_colors_in_uns(self, sdata_blobs: SpatialData): self._make_tablemodel_with_categorical_labels(sdata_blobs, labels_name="blobs_labels") - # purple, green, yellow - sdata_blobs[ "other_table" ].uns[ "category_colors"] = [ "#800080", "#008000", "#FFFF00" ] + # purple, green, yellow + sdata_blobs["other_table"].uns["category_colors"] = ["#800080", "#008000", "#FFFF00"] # placeholder, otherwise "category_colors" will be ignored - sdata_blobs[ "other_table" ].uns[ "category" ] = "__value__" + sdata_blobs["other_table"].uns["category"] = "__value__" sdata_blobs.pl.render_labels("blobs_labels", color="category").pl.show() def test_plot_label_categorical_color_and_colors_in_uns_query_uns_colors_removed(self, sdata_blobs: SpatialData): self._make_tablemodel_with_categorical_labels(sdata_blobs, labels_name="blobs_labels") - # purple, green, yellow - sdata_blobs[ "other_table" ].uns[ "category_colors"] = [ "#800080", "#008000", "#FFFF00" ] + # purple, green, yellow + sdata_blobs["other_table"].uns["category_colors"] = ["#800080", "#008000", "#FFFF00"] # placeholder, otherwise "category_colors" will be ignored - sdata_blobs[ "other_table" ].uns[ "category" ] = "__value__" + sdata_blobs["other_table"].uns["category"] = "__value__" sdata_blobs = bounding_box_query( sdata_blobs, axes=("y", "x"), @@ -237,24 +234,24 @@ def test_plot_label_categorical_color_and_colors_in_uns_query_uns_colors_removed max_coordinate=[100, 100], target_coordinate_system="global", ) - # we would expect colors purple and yellow for a and c, but we see default colors blue en orange, - # Reason: "category_colors" is removed by `.filter_by_coordinate_system` in - # `spatialdata_plot.pl.render._render_labels`. - # Why? Because `.bounding_box_query` removes "category_colors" that are not in the query, - # but restores original number of catergories in `.obs["category"]`, see https://github.com/scverse/anndata/issues/997, - # leading to mismatch and removal of "category_colors" by `.filter_by_coordinate_system`. - assert all(sdata_blobs[ "other_table" ].obs[ "category" ].unique() == [ "a", "c" ]) - assert all(sdata_blobs[ "other_table" ].uns["category_colors" ] == [ "#800080", "#FFFF00" ]) + # we would expect colors purple and yellow for a and c, but we see default colors blue en orange, + # Reason: "category_colors" is removed by `.filter_by_coordinate_system` in + # `spatialdata_plot.pl.render._render_labels`. + # Why? Because `.bounding_box_query` removes "category_colors" that are not in the query, + # but restores original number of catergories in `.obs["category"]`, see https://github.com/scverse/anndata/issues/997, + # leading to mismatch and removal of "category_colors" by `.filter_by_coordinate_system`. + assert all(sdata_blobs["other_table"].obs["category"].unique() == ["a", "c"]) + assert all(sdata_blobs["other_table"].uns["category_colors"] == ["#800080", "#FFFF00"]) # but due to https://github.com/scverse/anndata/issues/997: - assert all(sdata_blobs[ "other_table" ].obs["category"].cat.categories == ["a", "b", "c" ]) + assert all(sdata_blobs["other_table"].obs["category"].cat.categories == ["a", "b", "c"]) sdata_blobs.pl.render_labels("blobs_labels", color="category").pl.show() def test_plot_label_categorical_color_and_colors_in_uns_query_workaround(self, sdata_blobs: SpatialData): self._make_tablemodel_with_categorical_labels(sdata_blobs, labels_name="blobs_labels") - # purple, green, yellow - sdata_blobs[ "other_table" ].uns[ "category_colors"] = [ "#800080", "#008000", "#FFFF00" ] + # purple, green, yellow + sdata_blobs["other_table"].uns["category_colors"] = ["#800080", "#008000", "#FFFF00"] # placeholder, otherwise "category_colors" will be ignored - sdata_blobs[ "other_table" ].uns[ "category" ] = "__value__" + sdata_blobs["other_table"].uns["category"] = "__value__" sdata_blobs = bounding_box_query( sdata_blobs, axes=("y", "x"), @@ -262,13 +259,14 @@ def test_plot_label_categorical_color_and_colors_in_uns_query_workaround(self, s max_coordinate=[100, 100], target_coordinate_system="global", ) - assert all(sdata_blobs[ "other_table" ].obs[ "category" ].unique() == [ "a", "c" ]) - assert all(sdata_blobs[ "other_table" ].uns["category_colors" ] == [ "#800080", "#FFFF00" ]) + assert all(sdata_blobs["other_table"].obs["category"].unique() == ["a", "c"]) + assert all(sdata_blobs["other_table"].uns["category_colors"] == ["#800080", "#FFFF00"]) # but due to https://github.com/scverse/anndata/issues/997: - assert all(sdata_blobs[ "other_table" ].obs["category"].cat.categories == ["a", "b", "c" ]) - sdata_blobs["other_table"].obs[ "category" ]= \ - sdata_blobs[ "other_table" ].obs[ "category" ].cat.remove_unused_categories() - assert all(sdata_blobs[ "other_table" ].obs["category"].cat.categories == ["a", "c" ]) + assert all(sdata_blobs["other_table"].obs["category"].cat.categories == ["a", "b", "c"]) + sdata_blobs["other_table"].obs["category"] = ( + sdata_blobs["other_table"].obs["category"].cat.remove_unused_categories() + ) + assert all(sdata_blobs["other_table"].obs["category"].cat.categories == ["a", "c"]) sdata_blobs.pl.render_labels("blobs_labels", color="category").pl.show() def _make_tablemodel_with_categorical_labels(self, sdata_blobs, labels_name: str): From 0d4867cd5075a666cfd3866ae68316653ed70ee6 Mon Sep 17 00:00:00 2001 From: ArneDefauw Date: Tue, 28 Jan 2025 11:32:11 +0100 Subject: [PATCH 03/11] uncomment matplotlib use agg --- tests/pl/test_render_labels.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index 0c9fa790..f90cb1de 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -7,18 +7,16 @@ import scanpy as sc from anndata import AnnData from spatial_image import to_spatial_image -from spatialdata import SpatialData, deepcopy, get_element_instances +from spatialdata import SpatialData, bounding_box_query, deepcopy, get_element_instances from spatialdata.models import TableModel -from spatialdata import bounding_box_query - import spatialdata_plot # noqa: F401 from tests.conftest import DPI, PlotTester, PlotTesterMeta RNG = np.random.default_rng(seed=42) sc.pl.set_rcParams_defaults() sc.set_figure_params(dpi=DPI, color_map="viridis") -#matplotlib.use("agg") # same as GitHub action runner +matplotlib.use("agg") # same as GitHub action runner _ = spatialdata_plot # WARNING: From 2dfb47c68fb34090d9cfe896b5b674f2b4cbfcb6 Mon Sep 17 00:00:00 2001 From: ArneDefauw Date: Tue, 28 Jan 2025 11:53:11 +0100 Subject: [PATCH 04/11] category not deterministic in unit test --- tests/pl/test_render_labels.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index 0ce76397..d422cfe8 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -16,7 +16,7 @@ RNG = np.random.default_rng(seed=42) sc.pl.set_rcParams_defaults() sc.set_figure_params(dpi=DPI, color_map="viridis") -matplotlib.use("agg") # same as GitHub action runner +#matplotlib.use("agg") # same as GitHub action runner _ = spatialdata_plot # WARNING: @@ -241,8 +241,8 @@ def test_plot_label_categorical_color_and_colors_in_uns_query_uns_colors_removed # Why? Because `.bounding_box_query` removes "category_colors" that are not in the query, # but restores original number of catergories in `.obs["category"]`, see https://github.com/scverse/anndata/issues/997, # leading to mismatch and removal of "category_colors" by `.filter_by_coordinate_system`. - assert all(sdata_blobs["other_table"].obs["category"].unique() == ["a", "c"]) - assert all(sdata_blobs["other_table"].uns["category_colors"] == ["#800080", "#FFFF00"]) + assert len(sdata_blobs["other_table"].obs["category"].unique()) == 2 + assert len(sdata_blobs["other_table"].uns["category_colors"]) == 2 # but due to https://github.com/scverse/anndata/issues/997: assert all(sdata_blobs["other_table"].obs["category"].cat.categories == ["a", "b", "c"]) sdata_blobs.pl.render_labels("blobs_labels", color="category").pl.show() @@ -260,14 +260,13 @@ def test_plot_label_categorical_color_and_colors_in_uns_query_workaround(self, s max_coordinate=[100, 100], target_coordinate_system="global", ) - assert all(sdata_blobs["other_table"].obs["category"].unique() == ["a", "c"]) - assert all(sdata_blobs["other_table"].uns["category_colors"] == ["#800080", "#FFFF00"]) + assert len(sdata_blobs["other_table"].obs["category"].unique()) == 2 + assert len(sdata_blobs["other_table"].uns["category_colors"]) == 2 # but due to https://github.com/scverse/anndata/issues/997: assert all(sdata_blobs["other_table"].obs["category"].cat.categories == ["a", "b", "c"]) sdata_blobs["other_table"].obs["category"] = ( sdata_blobs["other_table"].obs["category"].cat.remove_unused_categories() ) - assert all(sdata_blobs["other_table"].obs["category"].cat.categories == ["a", "c"]) sdata_blobs.pl.render_labels("blobs_labels", color="category").pl.show() def _make_tablemodel_with_categorical_labels(self, sdata_blobs, labels_name: str): From bd39e7ea2724a069a6adf1c2e0a0843464c00e1a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 10:53:36 +0000 Subject: [PATCH 05/11] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/pl/test_render_labels.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index d422cfe8..c40f10a0 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -1,5 +1,4 @@ import dask.array as da -import matplotlib import matplotlib.pyplot as plt import numpy as np import pandas as pd @@ -16,7 +15,7 @@ RNG = np.random.default_rng(seed=42) sc.pl.set_rcParams_defaults() sc.set_figure_params(dpi=DPI, color_map="viridis") -#matplotlib.use("agg") # same as GitHub action runner +# matplotlib.use("agg") # same as GitHub action runner _ = spatialdata_plot # WARNING: From 39038e913fa9b09c732c399ac4855fad1d802643 Mon Sep 17 00:00:00 2001 From: ArneDefauw Date: Tue, 28 Jan 2025 11:53:48 +0100 Subject: [PATCH 06/11] matplotlib --- tests/pl/test_render_labels.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index d422cfe8..f25ed9b5 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -16,7 +16,7 @@ RNG = np.random.default_rng(seed=42) sc.pl.set_rcParams_defaults() sc.set_figure_params(dpi=DPI, color_map="viridis") -#matplotlib.use("agg") # same as GitHub action runner +matplotlib.use("agg") # same as GitHub action runner _ = spatialdata_plot # WARNING: From 5af65aa118f7abf87e47470038ecdbddb27ef1ca Mon Sep 17 00:00:00 2001 From: ArneDefauw Date: Tue, 28 Jan 2025 12:00:09 +0100 Subject: [PATCH 07/11] import --- tests/pl/test_render_labels.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index b4e99927..f25ed9b5 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -1,4 +1,5 @@ import dask.array as da +import matplotlib import matplotlib.pyplot as plt import numpy as np import pandas as pd From 1c587192bf8f2040e795ec74a5773553009be9b1 Mon Sep 17 00:00:00 2001 From: ArneDefauw Date: Tue, 28 Jan 2025 15:39:53 +0100 Subject: [PATCH 08/11] fix for keyerror --- src/spatialdata_plot/pl/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/spatialdata_plot/pl/utils.py b/src/spatialdata_plot/pl/utils.py index d7c0ac75..f7cc0e25 100644 --- a/src/spatialdata_plot/pl/utils.py +++ b/src/spatialdata_plot/pl/utils.py @@ -755,7 +755,7 @@ def _set_color_source_vec( color_source_vector = pd.Categorical(color_source_vector) # convert, e.g., `pd.Series` color_mapping = _get_categorical_color_mapping( - adata=sdata.tables[table_name], + adata=sdata.tables[table_name] if table_name is not None else sdata.table, cluster_key=value_to_plot, color_source_vector=color_source_vector, groups=groups, From 6a333042a45c16dc4578b0bbbdd1601276c23ea5 Mon Sep 17 00:00:00 2001 From: ArneDefauw Date: Wed, 29 Jan 2025 09:08:59 +0100 Subject: [PATCH 09/11] tests --- ...abel_categorical_color_and_colors_in_uns.png | Bin 0 -> 32151 bytes ...d_colors_in_uns_query_uns_colors_removed.png | Bin 0 -> 20532 bytes ...color_and_colors_in_uns_query_workaround.png | Bin 0 -> 15512 bytes tests/pl/test_render_labels.py | 2 +- 4 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 tests/_images/Labels_label_categorical_color_and_colors_in_uns.png create mode 100644 tests/_images/Labels_label_categorical_color_and_colors_in_uns_query_uns_colors_removed.png create mode 100644 tests/_images/Labels_label_categorical_color_and_colors_in_uns_query_workaround.png diff --git a/tests/_images/Labels_label_categorical_color_and_colors_in_uns.png b/tests/_images/Labels_label_categorical_color_and_colors_in_uns.png new file mode 100644 index 0000000000000000000000000000000000000000..eff4ca5d8cab5ebfc0710b387044f4255272b49c GIT binary patch literal 32151 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 literal 0 HcmV?d00001 diff --git a/tests/_images/Labels_label_categorical_color_and_colors_in_uns_query_uns_colors_removed.png b/tests/_images/Labels_label_categorical_color_and_colors_in_uns_query_uns_colors_removed.png new file mode 100644 index 0000000000000000000000000000000000000000..c8cfba5cc0aef9b82330345b18221a3b5b1dff24 GIT binary patch literal 20532 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 literal 0 HcmV?d00001 diff --git a/tests/_images/Labels_label_categorical_color_and_colors_in_uns_query_workaround.png b/tests/_images/Labels_label_categorical_color_and_colors_in_uns_query_workaround.png new file mode 100644 index 0000000000000000000000000000000000000000..be9003ec672c66b681c447c303468916b1ac8664 GIT binary patch literal 15512 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 literal 0 HcmV?d00001 diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index f25ed9b5..508d7372 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -235,7 +235,7 @@ def test_plot_label_categorical_color_and_colors_in_uns_query_uns_colors_removed max_coordinate=[100, 100], target_coordinate_system="global", ) - # we would expect colors purple and yellow for a and c, but we see default colors blue en orange, + # we would expect colors purple and yellow for a and c, but we see default colors blue and orange, # Reason: "category_colors" is removed by `.filter_by_coordinate_system` in # `spatialdata_plot.pl.render._render_labels`. # Why? Because `.bounding_box_query` removes "category_colors" that are not in the query, From 6d9a5904f15e63602ee73b343c9e592663d6f353 Mon Sep 17 00:00:00 2001 From: ArneDefauw Date: Wed, 29 Jan 2025 11:24:16 +0100 Subject: [PATCH 10/11] move rng, fix tests --- ...s_can_annotate_labels_with_table_layer.png | Bin 31789 -> 31109 bytes tests/pl/test_render_labels.py | 11 ++++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/_images/Labels_can_annotate_labels_with_table_layer.png b/tests/_images/Labels_can_annotate_labels_with_table_layer.png index ce2c179af60e0b8145be6f48c0a229d573bba81d..4b1f4d753c89148b80e4c7f426dbd67efa302afa 100644 GIT binary patch literal 31109 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 literal 31789 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

`b&f?EYvEcrKC_{ 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 C{NcF( diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index 508d7372..995bf652 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -13,7 +13,6 @@ import spatialdata_plot # noqa: F401 from tests.conftest import DPI, PlotTester, PlotTesterMeta -RNG = np.random.default_rng(seed=42) sc.pl.set_rcParams_defaults() sc.set_figure_params(dpi=DPI, color_map="viridis") matplotlib.use("agg") # same as GitHub action runner @@ -241,8 +240,8 @@ def test_plot_label_categorical_color_and_colors_in_uns_query_uns_colors_removed # Why? Because `.bounding_box_query` removes "category_colors" that are not in the query, # but restores original number of catergories in `.obs["category"]`, see https://github.com/scverse/anndata/issues/997, # leading to mismatch and removal of "category_colors" by `.filter_by_coordinate_system`. - assert len(sdata_blobs["other_table"].obs["category"].unique()) == 2 - assert len(sdata_blobs["other_table"].uns["category_colors"]) == 2 + assert all(sdata_blobs["other_table"].obs["category"].unique() == [ "a", "c" ]) + assert all(sdata_blobs["other_table"].uns["category_colors"] == ["#800080", "#FFFF00"]) # but due to https://github.com/scverse/anndata/issues/997: assert all(sdata_blobs["other_table"].obs["category"].cat.categories == ["a", "b", "c"]) sdata_blobs.pl.render_labels("blobs_labels", color="category").pl.show() @@ -260,8 +259,8 @@ def test_plot_label_categorical_color_and_colors_in_uns_query_workaround(self, s max_coordinate=[100, 100], target_coordinate_system="global", ) - assert len(sdata_blobs["other_table"].obs["category"].unique()) == 2 - assert len(sdata_blobs["other_table"].uns["category_colors"]) == 2 + assert all(sdata_blobs["other_table"].obs["category"].unique() == [ "a", "c" ]) + assert all(sdata_blobs["other_table"].uns["category_colors"] == ["#800080", "#FFFF00"]) # but due to https://github.com/scverse/anndata/issues/997: assert all(sdata_blobs["other_table"].obs["category"].cat.categories == ["a", "b", "c"]) sdata_blobs["other_table"].obs["category"] = ( @@ -270,6 +269,7 @@ def test_plot_label_categorical_color_and_colors_in_uns_query_workaround(self, s sdata_blobs.pl.render_labels("blobs_labels", color="category").pl.show() def _make_tablemodel_with_categorical_labels(self, sdata_blobs, labels_name: str): + RNG = np.random.default_rng(seed=42) instances = get_element_instances(sdata_blobs[labels_name]) n_obs = len(instances) adata = AnnData( @@ -290,5 +290,6 @@ def _make_tablemodel_with_categorical_labels(self, sdata_blobs, labels_name: str sdata_blobs["other_table"].obs["category"] = sdata_blobs["other_table"].obs["category"].astype("category") def test_plot_can_annotate_labels_with_table_layer(self, sdata_blobs: SpatialData): + RNG = np.random.default_rng(seed=42) sdata_blobs["table"].layers["normalized"] = RNG.random(sdata_blobs["table"].X.shape) sdata_blobs.pl.render_labels("blobs_labels", color="channel_0_sum", table_layer="normalized").pl.show() From be331f3446447239e698c899522083cdec226b38 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 29 Jan 2025 10:24:33 +0000 Subject: [PATCH 11/11] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/pl/test_render_labels.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index 995bf652..abaf06df 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -240,7 +240,7 @@ def test_plot_label_categorical_color_and_colors_in_uns_query_uns_colors_removed # Why? Because `.bounding_box_query` removes "category_colors" that are not in the query, # but restores original number of catergories in `.obs["category"]`, see https://github.com/scverse/anndata/issues/997, # leading to mismatch and removal of "category_colors" by `.filter_by_coordinate_system`. - assert all(sdata_blobs["other_table"].obs["category"].unique() == [ "a", "c" ]) + assert all(sdata_blobs["other_table"].obs["category"].unique() == ["a", "c"]) assert all(sdata_blobs["other_table"].uns["category_colors"] == ["#800080", "#FFFF00"]) # but due to https://github.com/scverse/anndata/issues/997: assert all(sdata_blobs["other_table"].obs["category"].cat.categories == ["a", "b", "c"]) @@ -259,7 +259,7 @@ def test_plot_label_categorical_color_and_colors_in_uns_query_workaround(self, s max_coordinate=[100, 100], target_coordinate_system="global", ) - assert all(sdata_blobs["other_table"].obs["category"].unique() == [ "a", "c" ]) + assert all(sdata_blobs["other_table"].obs["category"].unique() == ["a", "c"]) assert all(sdata_blobs["other_table"].uns["category_colors"] == ["#800080", "#FFFF00"]) # but due to https://github.com/scverse/anndata/issues/997: assert all(sdata_blobs["other_table"].obs["category"].cat.categories == ["a", "b", "c"])