From 100b4cfb929e4361639b5f1e2f784e7838045f83 Mon Sep 17 00:00:00 2001 From: Tim Treis Date: Fri, 8 Dec 2023 11:26:22 +0100 Subject: [PATCH 1/6] aeisenbarths changes --- src/spatialdata_plot/pl/basic.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/spatialdata_plot/pl/basic.py b/src/spatialdata_plot/pl/basic.py index c4352f05..f4d58331 100644 --- a/src/spatialdata_plot/pl/basic.py +++ b/src/spatialdata_plot/pl/basic.py @@ -567,7 +567,7 @@ def show( ] # prepare rendering params - render_cmds = OrderedDict() + render_cmds = [] for cmd, params in plotting_tree.items(): # strip prefix from cmd and verify it's valid cmd = "_".join(cmd.split("_")[1:]) @@ -577,9 +577,9 @@ def show( if "render" in cmd: # verify that rendering commands have been called before - render_cmds[cmd] = params + render_cmds.append((cmd, params)) - if len(render_cmds.keys()) == 0: + if len(render_cmds) == 0: raise TypeError("Please specify what to plot using the 'render_*' functions before calling 'imshow()'.") if title is not None: @@ -606,10 +606,12 @@ def show( if cs not in sdata.coordinate_systems: raise ValueError(f"Unknown coordinate system '{cs}', valid choices are: {sdata.coordinate_systems}") + print(render_cmds) + # Check if user specified only certain elements to be plotted cs_contents = _get_cs_contents(sdata) elements_to_be_rendered = [] - for cmd, params in render_cmds.items(): + for cmd, params in render_cmds: if cmd == "render_images" and cs_contents.query(f"cs == '{cs}'")["has_images"][0]: # noqa: SIM114 if params.elements is not None: elements_to_be_rendered += ( @@ -632,13 +634,14 @@ def show( ) # filter out cs without relevant elements + cmds = [cmd for cmd, _ in render_cmds] coordinate_systems = _get_valid_cs( sdata=sdata, coordinate_systems=coordinate_systems, - render_images="render_images" in render_cmds, - render_labels="render_labels" in render_cmds, - render_points="render_points" in render_cmds, - render_shapes="render_shapes" in render_cmds, + render_images="render_images" in cmds, + render_labels="render_labels" in cmds, + render_points="render_points" in cmds, + render_shapes="render_shapes" in cmds, elements=elements_to_be_rendered, ) @@ -689,7 +692,7 @@ def show( wants_shapes = False wanted_elements = [] - for cmd, params in render_cmds.items(): + for cmd, params in render_cmds: if cmd == "render_images" and has_images: wants_images = True wanted_images = params.elements if params.elements is not None else list(sdata.images.keys()) From fc109be25fb959d5fde683e5ea03e4dac3e903e8 Mon Sep 17 00:00:00 2001 From: Tim Treis Date: Fri, 8 Dec 2023 12:59:06 +0100 Subject: [PATCH 2/6] Added tests for stacking render commands --- src/spatialdata_plot/pl/render.py | 13 +++++++++++-- .../_images/Images_can_stack_render_images.png | Bin 0 -> 18929 bytes .../_images/Labels_can_stack_render_labels.png | Bin 0 -> 20850 bytes .../_images/Points_can_stack_render_points.png | Bin 0 -> 15295 bytes .../_images/Shapes_can_stack_render_shapes.png | Bin 0 -> 8711 bytes tests/pl/test_render_images.py | 8 ++++++++ tests/pl/test_render_labels.py | 10 ++++++++++ tests/pl/test_render_points.py | 7 +++++++ tests/pl/test_render_shapes.py | 8 ++++++++ 9 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 tests/_images/Images_can_stack_render_images.png create mode 100644 tests/_images/Labels_can_stack_render_labels.png create mode 100644 tests/_images/Points_can_stack_render_points.png create mode 100644 tests/_images/Shapes_can_stack_render_shapes.png diff --git a/src/spatialdata_plot/pl/render.py b/src/spatialdata_plot/pl/render.py index 03d95662..1445c1b6 100644 --- a/src/spatialdata_plot/pl/render.py +++ b/src/spatialdata_plot/pl/render.py @@ -406,10 +406,13 @@ def _render_images( else: cmap = _get_linear_colormap([render_params.palette], "k")[0] + # Overwrite alpha in cmap: https://stackoverflow.com/a/10127675 + cmap._init() + cmap._lut[:, -1] = render_params.alpha + im = ax.imshow( - layer, # get rid of the channel dimension + layer, cmap=cmap, - alpha=render_params.alpha, ) im.set_transform(trans_data) @@ -514,6 +517,12 @@ def _render_labels( ) -> None: elements = render_params.elements + if not isinstance(render_params.outline, bool): + raise TypeError("Parameter 'outline' must be a boolean.") + + if not isinstance(render_params.contour_px, int): + raise TypeError("Parameter 'contour_px' must be an integer.") + if render_params.groups is not None: if isinstance(render_params.groups, str): render_params.groups = [render_params.groups] diff --git a/tests/_images/Images_can_stack_render_images.png b/tests/_images/Images_can_stack_render_images.png new file mode 100644 index 0000000000000000000000000000000000000000..ee45140f85b54a07117413c2c155590e29f4345c GIT binary patch literal 18929 zcmV*DKy1H>P)005u}1^@s6i_d2*0000vbVXQnQ*UN; zcVTj608L?ZaBOdMY-wU3c4cyNX>V>bE;lYREFfrfbZ~PzFE4FjbZ~5MbZlv2E^l&Y zFDYH+e*gdg32;bRa{vGaCjbBjCjm`V*v9|>NnS}rK~#90?Y(WRrPW2FyR%29>5))!cO~62u2~87JTASFRnEpSM2=PNLiD}Y= zrYiO�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
1N$FV~o-SsQX)Xecz{$1WkR;S1JMM_Q0 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 literal 0 HcmV?d00001 diff --git a/tests/_images/Shapes_can_stack_render_shapes.png b/tests/_images/Shapes_can_stack_render_shapes.png new file mode 100644 index 0000000000000000000000000000000000000000..a093b558e43ff4192189a37292a2a3e82ff08d75 GIT binary patch literal 8711 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 A=>Px# literal 0 HcmV?d00001 diff --git a/tests/pl/test_render_images.py b/tests/pl/test_render_images.py index a1b732ff..63f9fb80 100644 --- a/tests/pl/test_render_images.py +++ b/tests/pl/test_render_images.py @@ -77,3 +77,11 @@ def test_plot_can_stop_rasterization_with_scale_full(self, sdata_blobs: SpatialD sdata_blobs["blobs_giant_image"] = img sdata_blobs.pl.render_images("blobs_giant_image", scale="full").pl.show() + + def test_plot_can_stack_render_images(self, sdata_blobs: SpatialData): + ( + sdata_blobs + .pl.render_images(elements="blobs_image", channel=0, palette="red", alpha=0.5) + .pl.render_images(elements="blobs_image", channel=1, palette="blue", alpha=0.5) + .pl.show() + ) diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index 52dada28..9d6c55e3 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -59,3 +59,13 @@ def test_plot_can_stop_rasterization_with_scale_full(self, sdata_blobs: SpatialD sdata_blobs.table.uns["spatialdata_attrs"]["region"] = "blobs_giant_labels" sdata_blobs.pl.render_labels("blobs_giant_labels", scale="full").pl.show() + + def test_plot_can_stack_render_labels(self, sdata_blobs: SpatialData): + ( + sdata_blobs + .pl.render_labels(elements="blobs_labels", na_color="red", fill_alpha=1, outline_alpha=0, outline=False) + .pl.render_labels( + elements="blobs_labels", na_color="blue", fill_alpha=0, outline_alpha=1, outline=True, contour_px=10 + ) + .pl.show() + ) diff --git a/tests/pl/test_render_points.py b/tests/pl/test_render_points.py index 43379517..a1a55534 100644 --- a/tests/pl/test_render_points.py +++ b/tests/pl/test_render_points.py @@ -30,3 +30,10 @@ def test_plot_coloring_with_palette(self, sdata_blobs: SpatialData): def test_plot_coloring_with_cmap(self, sdata_blobs: SpatialData): sdata_blobs.pl.render_points(color="genes", cmap="rainbow").pl.show() + + def test_plot_can_stack_render_points(self, sdata_blobs: SpatialData): + ( + sdata_blobs.pl.render_points(elements="blobs_points", na_color="red", size=30) + .pl.render_points(elements="blobs_points", na_color="blue", size=10) + .pl.show() + ) diff --git a/tests/pl/test_render_shapes.py b/tests/pl/test_render_shapes.py index 941b1970..c5e79ade 100644 --- a/tests/pl/test_render_shapes.py +++ b/tests/pl/test_render_shapes.py @@ -254,3 +254,11 @@ def test_plot_can_color_two_queried_shapes_elements_by_annotation(self, sdata_bl del sdata_cropped.labels["blobs_multiscale_labels"] sdata_cropped.pl.render_shapes(["blobs_circles", "blobs_polygons"], color="annotation").pl.show() + + def test_plot_can_stack_render_shapes(self, sdata_blobs: SpatialData): + ( + sdata_blobs + .pl.render_shapes(elements="blobs_circles", na_color="red", fill_alpha=0.5) + .pl.render_shapes(elements="blobs_polygons", na_color="blue", fill_alpha=0.5) + .pl.show() + ) From 4c52b0f61250d1b9041458f9e18ea2b7817a6706 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 8 Dec 2023 11:59:20 +0000 Subject: [PATCH 3/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/pl/test_render_images.py | 3 +-- tests/pl/test_render_labels.py | 5 +++-- tests/pl/test_render_shapes.py | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/tests/pl/test_render_images.py b/tests/pl/test_render_images.py index 63f9fb80..f2903a52 100644 --- a/tests/pl/test_render_images.py +++ b/tests/pl/test_render_images.py @@ -80,8 +80,7 @@ def test_plot_can_stop_rasterization_with_scale_full(self, sdata_blobs: SpatialD def test_plot_can_stack_render_images(self, sdata_blobs: SpatialData): ( - sdata_blobs - .pl.render_images(elements="blobs_image", channel=0, palette="red", alpha=0.5) + sdata_blobs.pl.render_images(elements="blobs_image", channel=0, palette="red", alpha=0.5) .pl.render_images(elements="blobs_image", channel=1, palette="blue", alpha=0.5) .pl.show() ) diff --git a/tests/pl/test_render_labels.py b/tests/pl/test_render_labels.py index 9d6c55e3..fe0ef717 100644 --- a/tests/pl/test_render_labels.py +++ b/tests/pl/test_render_labels.py @@ -62,8 +62,9 @@ def test_plot_can_stop_rasterization_with_scale_full(self, sdata_blobs: SpatialD def test_plot_can_stack_render_labels(self, sdata_blobs: SpatialData): ( - sdata_blobs - .pl.render_labels(elements="blobs_labels", na_color="red", fill_alpha=1, outline_alpha=0, outline=False) + sdata_blobs.pl.render_labels( + elements="blobs_labels", na_color="red", fill_alpha=1, outline_alpha=0, outline=False + ) .pl.render_labels( elements="blobs_labels", na_color="blue", fill_alpha=0, outline_alpha=1, outline=True, contour_px=10 ) diff --git a/tests/pl/test_render_shapes.py b/tests/pl/test_render_shapes.py index c5e79ade..c70e7ebf 100644 --- a/tests/pl/test_render_shapes.py +++ b/tests/pl/test_render_shapes.py @@ -257,8 +257,7 @@ def test_plot_can_color_two_queried_shapes_elements_by_annotation(self, sdata_bl def test_plot_can_stack_render_shapes(self, sdata_blobs: SpatialData): ( - sdata_blobs - .pl.render_shapes(elements="blobs_circles", na_color="red", fill_alpha=0.5) + sdata_blobs.pl.render_shapes(elements="blobs_circles", na_color="red", fill_alpha=0.5) .pl.render_shapes(elements="blobs_polygons", na_color="blue", fill_alpha=0.5) .pl.show() ) From a3c643d5c8855695dce0ebb8d5ddff8f1f8e4cd9 Mon Sep 17 00:00:00 2001 From: Tim Treis Date: Fri, 8 Dec 2023 13:00:29 +0100 Subject: [PATCH 4/6] Removed debugprint --- src/spatialdata_plot/pl/basic.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/spatialdata_plot/pl/basic.py b/src/spatialdata_plot/pl/basic.py index f4d58331..c5592fb6 100644 --- a/src/spatialdata_plot/pl/basic.py +++ b/src/spatialdata_plot/pl/basic.py @@ -606,8 +606,6 @@ def show( if cs not in sdata.coordinate_systems: raise ValueError(f"Unknown coordinate system '{cs}', valid choices are: {sdata.coordinate_systems}") - print(render_cmds) - # Check if user specified only certain elements to be plotted cs_contents = _get_cs_contents(sdata) elements_to_be_rendered = [] From 3bfa877e42455f3c54722a5fa15f89120a35d189 Mon Sep 17 00:00:00 2001 From: Tim Treis Date: Fri, 8 Dec 2023 13:06:54 +0100 Subject: [PATCH 5/6] Replaced local plot with artifact from GH action --- .../Labels_can_stack_render_labels.png | Bin 20850 -> 20535 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/_images/Labels_can_stack_render_labels.png b/tests/_images/Labels_can_stack_render_labels.png index ac4ea50a0f32ce3daa7868b5ca9274736fd52f8d..5bdb53a020c6290c2d391e43235916104a1fd8bd 100644 GIT binary patch literal 20535 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 Date: Fri, 8 Dec 2023 13:15:27 +0100 Subject: [PATCH 6/6] Updated Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea577174..9243c123 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning][]. - Multiscale image handling: user can specify a scale, else the best scale is selected automatically given the figure size and dpi (#164) - Large images are automatically rasterized to speed up performance (#164) - Added better error message for mismatch in cs and ax number (#185) +- Can now stack render commands (#190, #192) ### Fixed