From d3427b5e53a30a3bc532d303e76ceb29a41dd47c Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 31 May 2023 13:42:03 +0100 Subject: [PATCH 1/2] Add scatter figure test --- .../tests/baseline/test_scatter.png | Bin 0 -> 11829 bytes src/napari_matplotlib/tests/test_scatter.py | 25 ++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 src/napari_matplotlib/tests/baseline/test_scatter.png diff --git a/src/napari_matplotlib/tests/baseline/test_scatter.png b/src/napari_matplotlib/tests/baseline/test_scatter.png new file mode 100644 index 0000000000000000000000000000000000000000..1fd7d9e823055096db8151d6679d344490e71f85 GIT binary patch literal 11829 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 S{iR{xW0z!=WYRC(y8A!;L`FaW literal 0 HcmV?d00001 diff --git a/src/napari_matplotlib/tests/test_scatter.py b/src/napari_matplotlib/tests/test_scatter.py index 88e0584c..d1101909 100644 --- a/src/napari_matplotlib/tests/test_scatter.py +++ b/src/napari_matplotlib/tests/test_scatter.py @@ -1,17 +1,32 @@ +from copy import deepcopy from typing import Any, Dict, Tuple import numpy as np import numpy.typing as npt +import pytest from napari_matplotlib import FeaturesScatterWidget, ScatterWidget -def test_scatter(make_napari_viewer): - # Smoke test adding a scatter widget +@pytest.mark.mpl_image_compare +def test_scatter(make_napari_viewer, astronaut_data): viewer = make_napari_viewer() - viewer.add_image(np.random.random((100, 100))) - viewer.add_image(np.random.random((100, 100))) - ScatterWidget(viewer) + widget = ScatterWidget(viewer) + fig = widget.figure + + viewer.add_image(astronaut_data[0], **astronaut_data[1], name="astronaut") + + viewer.add_image( + astronaut_data[0] * -1, **astronaut_data[1], name="astronaut_reversed" + ) + # De-select existing selection + viewer.layers.selection.clear() + + # Select images + viewer.layers.selection.add(viewer.layers[0]) + viewer.layers.selection.add(viewer.layers[1]) + + return deepcopy(fig) def test_features_scatter_widget(make_napari_viewer): From ae06a7abc32cd6745415a895443d0af889057273 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 31 May 2023 14:14:48 +0100 Subject: [PATCH 2/2] Sort layers by their name when storing them --- src/napari_matplotlib/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/napari_matplotlib/base.py b/src/napari_matplotlib/base.py index daf7bac9..25b10ee7 100644 --- a/src/napari_matplotlib/base.py +++ b/src/napari_matplotlib/base.py @@ -183,6 +183,7 @@ def _update_layers(self, event: napari.utils.events.Event) -> None: Update the ``layers`` attribute with currently selected layers and re-draw. """ self.layers = list(self.viewer.layers.selection) + self.layers = sorted(self.layers, key=lambda layer: layer.name) self.on_update_layers() self._draw() pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy