diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 71aa4ae5..caf38d16 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,7 +12,7 @@ repos: - id: setup-cfg-fmt - repo: https://github.com/psf/black - rev: 23.3.0 + rev: 23.7.0 hooks: - id: black @@ -27,9 +27,9 @@ repos: - id: mypy additional_dependencies: [numpy, matplotlib] - - repo: https://github.com/charliermarsh/ruff-pre-commit + - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.0.276' + rev: 'v0.0.280' hooks: - id: ruff diff --git a/docs/changelog.rst b/docs/changelog.rst index a31a0d3a..103cd80e 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,5 +1,17 @@ Changelog ========= +1.0.2 +----- +Bug fixes +~~~~~~~~~ +- A full dataset is no longer read into memory when using ``HistogramWidget``. + Only the current slice is loaded. +- Fixed compatibility with napari 0.4.18. + +Changes +~~~~~~~ +- Histogram bin limits are now caclualted from the slice being histogrammed, and + not the whole dataset. This is as a result of the above bug fix. 1.0.1 ----- diff --git a/setup.cfg b/setup.cfg index dfd52347..229b5777 100644 --- a/setup.cfg +++ b/setup.cfg @@ -28,7 +28,7 @@ project_urls = packages = find: install_requires = matplotlib - napari<0.4.18 + napari numpy tinycss2 python_requires = >=3.8 @@ -47,7 +47,7 @@ napari.manifest = [options.extras_require] docs = - napari[all] + napari[all]==0.4.17 numpydoc pydata-sphinx-theme qtgallery @@ -55,7 +55,7 @@ docs = sphinx-automodapi sphinx-gallery testing = - napari[pyqt6-experimental] + napari[pyqt6-experimental]>=0.4.18 pooch pyqt6 pytest diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 39ad41a3..ab098f38 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -33,7 +33,6 @@ def draw(self) -> None: Clear the axes and histogram the currently selected layer/slice. """ layer = self.layers[0] - bins = np.linspace(np.min(layer.data), np.max(layer.data), 100) if layer.data.ndim - layer.rgb == 3: # 3D data, can be single channel or RGB @@ -41,6 +40,12 @@ def draw(self) -> None: self.axes.set_title(f"z={self.current_z}") else: data = layer.data + # Read data into memory if it's a dask array + data = np.asarray(data) + + # Important to calculate bins after slicing 3D data, to avoid reading + # whole cube into memory. + bins = np.linspace(np.min(data), np.max(data), 100) if layer.rgb: # Histogram RGB channels independently diff --git a/src/napari_matplotlib/tests/baseline/test_custom_theme.png b/src/napari_matplotlib/tests/baseline/test_custom_theme.png index 65c43a49..c3858522 100644 Binary files a/src/napari_matplotlib/tests/baseline/test_custom_theme.png and b/src/napari_matplotlib/tests/baseline/test_custom_theme.png differ diff --git a/src/napari_matplotlib/tests/baseline/test_slice_2D.png b/src/napari_matplotlib/tests/baseline/test_slice_2D.png index 5b73091c..639f25b8 100644 Binary files a/src/napari_matplotlib/tests/baseline/test_slice_2D.png and b/src/napari_matplotlib/tests/baseline/test_slice_2D.png differ diff --git a/src/napari_matplotlib/tests/scatter/baseline/test_scatter_2D.png b/src/napari_matplotlib/tests/scatter/baseline/test_scatter_2D.png index 3b550666..f96b5354 100644 Binary files a/src/napari_matplotlib/tests/scatter/baseline/test_scatter_2D.png and b/src/napari_matplotlib/tests/scatter/baseline/test_scatter_2D.png differ diff --git a/src/napari_matplotlib/tests/test_theme.py b/src/napari_matplotlib/tests/test_theme.py index a3642f8f..2a340c89 100644 --- a/src/napari_matplotlib/tests/test_theme.py +++ b/src/napari_matplotlib/tests/test_theme.py @@ -37,9 +37,11 @@ def _mock_up_theme() -> None: https://napari.org/stable/gallery/new_theme.html """ blue_theme = napari.utils.theme.get_theme("dark", False) - blue_theme.name = "blue" + blue_theme.label = "blue" blue_theme.background = "#4169e1" # my favourite shade of blue - napari.utils.theme.register_theme("blue", blue_theme) + napari.utils.theme.register_theme( + "blue", blue_theme, source="napari-mpl-tests" + ) def test_theme_background_check(make_napari_viewer):