diff --git a/docs/user-guide/dream/dream-instrument-view.ipynb b/docs/user-guide/dream/dream-instrument-view.ipynb index 0241d6db..c573805d 100644 --- a/docs/user-guide/dream/dream-instrument-view.ipynb +++ b/docs/user-guide/dream/dream-instrument-view.ipynb @@ -154,7 +154,8 @@ }, "outputs": [], "source": [ - "full_view[2].controls[\"tof\"][\"slider\"].value = 35" + "full_view[2].controls[\"tof\"][\"slider\"].value = 35\n", + "full_view[1].toolbar.tools[\"autoscale\"].click()" ] }, { @@ -206,7 +207,8 @@ }, "outputs": [], "source": [ - "mantle_view[1].controls[\"tof\"][\"slider\"].value = 43" + "mantle_view[1].controls[\"tof\"][\"slider\"].value = 43\n", + "mantle_view[0].toolbar.tools[\"autoscale\"].click()" ] }, { @@ -246,8 +248,7 @@ "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.14" + "pygments_lexer": "ipython3" } }, "nbformat": 4, diff --git a/pyproject.toml b/pyproject.toml index 29c12ebf..2d7530bf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,7 +35,7 @@ dependencies = [ "essreduce>=25.02.4", "graphviz", "numpy", - "plopp", + "plopp>=25.03.0", "pythreejs", "sciline>=24.06.0", "scipp>=24.09.1", diff --git a/requirements/base.in b/requirements/base.in index 9232804e..4f469acb 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -6,7 +6,7 @@ dask essreduce>=25.02.4 graphviz numpy -plopp +plopp>=25.03.0 pythreejs sciline>=24.06.0 scipp>=24.09.1 diff --git a/requirements/base.txt b/requirements/base.txt index c630b71a..05155289 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,4 +1,4 @@ -# SHA1:bd57e2addebc398f9de7064eb2a5c993a359ba46 +# SHA1:af7d2d7a93f0ecc6c2914fa96f82f7aef8510e44 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -23,33 +23,37 @@ cycler==0.12.1 # via matplotlib dask==2025.2.0 # via -r base.in -decorator==5.1.1 +decorator==5.2.1 # via ipython dnspython==2.7.0 # via email-validator email-validator==2.2.0 # via scippneutron -essreduce==25.2.4 +essreduce==25.3.0 # via -r base.in +exceptiongroup==1.2.2 + # via ipython executing==2.2.0 # via stack-data fonttools==4.56.0 # via matplotlib -fsspec==2025.2.0 +fsspec==2025.3.0 # via dask graphviz==0.20.3 # via -r base.in -h5py==3.12.1 +h5py==3.13.0 # via # scippneutron # scippnexus idna==3.10 # via email-validator +importlib-metadata==8.6.1 + # via dask importlib-resources==6.5.2 # via tof ipydatawidgets==4.3.5 # via pythreejs -ipython==8.32.0 +ipython==8.34.0 # via ipywidgets ipywidgets==8.1.5 # via @@ -62,10 +66,12 @@ jupyterlab-widgets==3.0.13 kiwisolver==1.4.8 # via matplotlib lazy-loader==0.4 - # via scippneutron + # via + # plopp + # scippneutron locket==1.0.0 # via partd -matplotlib==3.10.0 +matplotlib==3.10.1 # via # mpltoolbox # plopp @@ -100,7 +106,7 @@ pexpect==4.9.0 # via ipython pillow==11.1.0 # via matplotlib -plopp==24.10.0 +plopp==25.3.0 # via # -r base.in # scippneutron @@ -139,7 +145,7 @@ scipp==25.2.0 # scippneutron # scippnexus # tof -scippneutron==25.2.0 +scippneutron==25.2.1 # via # -r base.in # essreduce @@ -175,9 +181,12 @@ traittypes==0.2.1 # via ipydatawidgets typing-extensions==4.12.2 # via + # ipython # pydantic # pydantic-core wcwidth==0.2.13 # via prompt-toolkit widgetsnbextension==4.0.13 # via ipywidgets +zipp==3.21.0 + # via importlib-metadata diff --git a/requirements/basetest.txt b/requirements/basetest.txt index 2bcb4de2..f634f315 100644 --- a/requirements/basetest.txt +++ b/requirements/basetest.txt @@ -9,6 +9,8 @@ certifi==2025.1.31 # via requests charset-normalizer==3.4.1 # via requests +exceptiongroup==1.2.2 + # via pytest idna==3.10 # via requests iniconfig==2.0.0 @@ -27,7 +29,7 @@ pluggy==1.5.0 # via pytest pooch==1.8.2 # via -r basetest.in -pytest==8.3.4 +pytest==8.3.5 # via -r basetest.in python-dateutil==2.9.0.post0 # via pandas @@ -37,6 +39,8 @@ requests==2.32.3 # via pooch six==1.17.0 # via python-dateutil +tomli==2.2.1 + # via pytest tzdata==2025.1 # via pandas urllib3==2.3.0 diff --git a/requirements/ci.txt b/requirements/ci.txt index 3ff16713..9a0cd466 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -5,7 +5,7 @@ # # pip-compile-multi # -cachetools==5.5.1 +cachetools==5.5.2 # via tox certifi==2025.1.31 # via requests @@ -44,9 +44,15 @@ requests==2.32.3 # via -r ci.in smmap==5.0.2 # via gitdb -tox==4.24.1 +tomli==2.2.1 + # via + # pyproject-api + # tox +tox==4.24.2 # via -r ci.in +typing-extensions==4.12.2 + # via tox urllib3==2.3.0 # via requests -virtualenv==20.29.2 +virtualenv==20.29.3 # via tox diff --git a/requirements/dev.txt b/requirements/dev.txt index b9014c97..bdf687c8 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -26,7 +26,7 @@ async-lru==2.0.4 # via jupyterlab cffi==1.17.1 # via argon2-cffi-bindings -copier==9.5.0 +copier==9.6.0 # via -r dev.in dunamai==1.23.0 # via copier @@ -75,7 +75,7 @@ overrides==7.7.0 # via jupyter-server pathspec==0.12.1 # via copier -pip-compile-multi==2.7.1 +pip-compile-multi==2.8.0 # via -r dev.in pip-tools==7.4.1 # via pip-compile-multi @@ -85,7 +85,7 @@ prometheus-client==0.21.1 # via jupyter-server pycparser==2.22 # via cffi -python-json-logger==3.2.1 +python-json-logger==3.3.0 # via jupyter-events questionary==2.1.0 # via copier diff --git a/requirements/docs.txt b/requirements/docs.txt index 263fa7bd..0a52bc72 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -28,7 +28,7 @@ certifi==2025.1.31 # via requests charset-normalizer==3.4.1 # via requests -debugpy==1.8.12 +debugpy==1.8.13 # via ipykernel defusedxml==0.7.1 # via nbconvert @@ -46,9 +46,9 @@ imagesize==1.4.1 # via sphinx ipykernel==6.29.5 # via -r docs.in -ipympl==0.9.6 +ipympl==0.9.7 # via -r docs.in -jinja2==3.1.5 +jinja2==3.1.6 # via # myst-parser # nbconvert @@ -85,7 +85,7 @@ mdit-py-plugins==0.4.2 # via myst-parser mdurl==0.1.2 # via markdown-it-py -mistune==3.1.1 +mistune==3.1.2 # via nbconvert myst-parser==4.0.1 # via -r docs.in @@ -98,7 +98,7 @@ nbformat==5.10.4 # nbclient # nbconvert # nbsphinx -nbsphinx==0.9.6 +nbsphinx==0.9.7 # via -r docs.in nest-asyncio==1.6.0 # via ipykernel @@ -114,7 +114,7 @@ pooch==1.8.2 # via -r docs.in psutil==7.0.0 # via ipykernel -pyarrow==19.0.0 +pyarrow==19.0.1 # via -r docs.in pybtex==0.24.0 # via @@ -126,7 +126,7 @@ pydata-sphinx-theme==0.16.1 # via -r docs.in pytz==2025.1 # via pandas -pyzmq==26.2.1 +pyzmq==26.3.0 # via # ipykernel # jupyter-client @@ -138,7 +138,7 @@ requests==2.32.3 # via # pooch # sphinx -rpds-py==0.22.3 +rpds-py==0.23.1 # via # jsonschema # referencing @@ -178,6 +178,8 @@ sphinxcontrib-serializinghtml==2.0.0 # via sphinx tinycss2==1.4.0 # via bleach +tomli==2.2.1 + # via sphinx tornado==6.4.2 # via # ipykernel @@ -190,6 +192,3 @@ webencodings==0.5.1 # via # bleach # tinycss2 - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/nightly.txt b/requirements/nightly.txt index fead986a..b87560a5 100644 --- a/requirements/nightly.txt +++ b/requirements/nightly.txt @@ -30,7 +30,7 @@ cycler==0.12.1 # via matplotlib dask==2025.2.0 # via -r nightly.in -decorator==5.1.1 +decorator==5.2.1 # via ipython dnspython==2.7.0 # via email-validator @@ -38,15 +38,19 @@ email-validator==2.2.0 # via scippneutron essreduce @ git+https://github.com/scipp/essreduce@main # via -r nightly.in +exceptiongroup==1.2.2 + # via + # ipython + # pytest executing==2.2.0 # via stack-data fonttools==4.56.0 # via matplotlib -fsspec==2025.2.0 +fsspec==2025.3.0 # via dask graphviz==0.20.3 # via -r nightly.in -h5py==3.12.1 +h5py==3.13.0 # via # scippneutron # scippnexus @@ -54,13 +58,15 @@ idna==3.10 # via # email-validator # requests +importlib-metadata==8.6.1 + # via dask importlib-resources==6.5.2 # via tof iniconfig==2.0.0 # via pytest ipydatawidgets==4.3.5 # via pythreejs -ipython==8.32.0 +ipython==8.34.0 # via ipywidgets ipywidgets==8.1.5 # via @@ -78,7 +84,7 @@ lazy-loader==0.4 # scippneutron locket==1.0.0 # via partd -matplotlib==3.10.0 +matplotlib==3.10.1 # via # mpltoolbox # plopp @@ -135,15 +141,15 @@ ptyprocess==0.7.0 # via pexpect pure-eval==0.2.3 # via stack-data -pydantic==2.11.0a2 +pydantic==2.11.0b1 # via scippneutron -pydantic-core==2.29.0 +pydantic-core==2.31.1 # via pydantic pygments==2.19.1 # via ipython pyparsing==3.2.1 # via matplotlib -pytest==8.3.4 +pytest==8.3.5 # via -r nightly.in python-dateutil==2.9.0.post0 # via @@ -190,6 +196,8 @@ stack-data==0.6.3 # via ipython tof @ git+https://github.com/scipp/tof@main # via -r nightly.in +tomli==2.2.1 + # via pytest toolz==1.0.0 # via # dask @@ -206,8 +214,12 @@ traittypes==0.2.1 # via ipydatawidgets typing-extensions==4.12.2 # via + # ipython # pydantic # pydantic-core + # typing-inspection +typing-inspection==0.4.0 + # via pydantic tzdata==2025.1 # via pandas urllib3==2.3.0 @@ -216,3 +228,5 @@ wcwidth==0.2.13 # via prompt-toolkit widgetsnbextension==4.0.13 # via ipywidgets +zipp==3.21.0 + # via importlib-metadata diff --git a/requirements/static.txt b/requirements/static.txt index a0569bda..3471aadf 100644 --- a/requirements/static.txt +++ b/requirements/static.txt @@ -11,7 +11,7 @@ distlib==0.3.9 # via virtualenv filelock==3.17.0 # via virtualenv -identify==2.6.7 +identify==2.6.9 # via pre-commit nodeenv==1.9.1 # via pre-commit @@ -21,5 +21,5 @@ pre-commit==4.1.0 # via -r static.in pyyaml==6.0.2 # via pre-commit -virtualenv==20.29.2 +virtualenv==20.29.3 # via pre-commit diff --git a/requirements/wheels.txt b/requirements/wheels.txt index 198dd23e..bfae20bf 100644 --- a/requirements/wheels.txt +++ b/requirements/wheels.txt @@ -11,3 +11,5 @@ packaging==24.2 # via build pyproject-hooks==1.2.0 # via build +tomli==2.2.1 + # via build diff --git a/src/ess/dream/instrument_view.py b/src/ess/dream/instrument_view.py index 7f769ed3..31003e6a 100644 --- a/src/ess/dream/instrument_view.py +++ b/src/ess/dream/instrument_view.py @@ -19,6 +19,7 @@ def instrument_view( data: sc.DataArray | sc.DataGroup | dict, dim: str | None = None, pixel_size: float | sc.Variable | None = None, + autoscale: bool = False, **kwargs: Any, ) -> Box: """ @@ -38,13 +39,19 @@ def instrument_view( Dimension to use for the slider. No slider will be shown if this is None. pixel_size: Size of the pixels. + autoscale: + If ``True``, the color scale will be automatically adjusted to the data as it + gets updated. This can be somewhat expensive with many pixels, so it is set to + ``False`` by default. **kwargs: Additional arguments are forwarded to the scatter3d figure (see https://scipp.github.io/plopp/generated/plopp.scatter3d.html). """ from plopp.widgets import Box - view = InstrumentView(data, dim=dim, pixel_size=pixel_size, **kwargs) + view = InstrumentView( + data, dim=dim, pixel_size=pixel_size, autoscale=autoscale, **kwargs + ) return Box(view.children)