diff --git a/requirements-dev.txt b/requirements-dev.txt
index 58be104eabc724c1c1a00f467835b6238591f3de..ca2e15b30d371a76c87460f8d779fd8faf1c4115 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -19,6 +19,7 @@ astroid==3.2.2            # via nomad-lab (pyproject.toml)
 asttokens==2.4.1          # via devtools, stack-data, -r requirements.txt
 async-generator==1.10     # via jupyterhub, -r requirements.txt
 async-lru==2.0.4          # via jupyterlab, -r requirements.txt
+async-property==0.2.2     # via python-keycloak, -r requirements.txt
 atpublic==4.1.0           # via aiosmtpd
 attrs==23.2.0             # via aiosmtpd, jsonschema, -r requirements.txt
 babel==2.15.0             # via jupyterlab-server, mkdocs-git-revision-date-localized-plugin, mkdocs-material, sphinx, -r requirements.txt
@@ -38,7 +39,7 @@ celery==5.4.0             # via -r requirements.txt, nomad-lab (pyproject.toml)
 certifi==2024.6.2         # via elasticsearch, httpcore, httpx, netcdf4, requests, -r requirements.txt
 certipy==0.1.3            # via jupyterhub, -r requirements.txt
 cffi==1.16.0              # via argon2-cffi-bindings, cryptography, -r requirements.txt
-cftime==1.6.3             # via netcdf4, -r requirements.txt
+cftime==1.6.4             # via netcdf4, -r requirements.txt
 charset-normalizer==3.3.2  # via requests, -r requirements.txt
 click==8.1.7              # via asr, celery, click-default-group, click-didyoumean, click-plugins, click-repl, dask, flask, mkdocs, mkdocs-click, pynxtools, uvicorn, -r requirements.txt, nomad-lab (pyproject.toml)
 click-default-group==1.2.4  # via pynxtools, -r requirements.txt
@@ -53,14 +54,14 @@ contourpy==1.2.1          # via matplotlib, -r requirements.txt
 coverage==7.5.3           # via pytest-cov
 cryptography==42.0.8      # via jwcrypto, pyjwt, pyopenssl, rfc3161ng, secretstorage, -r requirements.txt
 cycler==0.12.1            # via matplotlib, -r requirements.txt
-dask==2024.5.2            # via hyperspy, kikuchipy, orix, pyxem, rosettasciio, -r requirements.txt
+dask==2024.6.0            # via hyperspy, kikuchipy, orix, pyxem, rosettasciio, -r requirements.txt
 debugpy==1.8.1            # via ipykernel, -r requirements.txt
 decorator==5.1.1          # via ipyparallel, ipython, validators, -r requirements.txt
 defusedxml==0.7.1         # via nbconvert, -r requirements.txt
 deprecation==2.1.0        # via python-keycloak, -r requirements.txt
 devtools==0.12.2          # via nomad-lab (pyproject.toml)
 diffpy-structure==3.1.0   # via diffsims, kikuchipy, orix, -r requirements.txt
-diffsims==0.5.2           # via kikuchipy, pyxem, -r requirements.txt
+diffsims==0.6.0           # via kikuchipy, pyxem, -r requirements.txt
 dill==0.3.8               # via hyperspy, lmfit, -r requirements.txt
 dnspython==2.6.1          # via email-validator, pymongo, -r requirements.txt
 docker==7.1.0             # via dockerspawner, -r requirements.txt
@@ -81,7 +82,7 @@ f90wrap==0.2.14           # via quippy-ase, -r requirements.txt
 fabio==2024.4.0           # via pyfai, silx, -r requirements.txt
 fastapi==0.99.1           # via h5grove, -r requirements.txt, nomad-lab (pyproject.toml)
 fasteners==0.19           # via mdanalysis, zarr, -r requirements.txt
-fastjsonschema==2.19.1    # via nbformat, -r requirements.txt
+fastjsonschema==2.20.0    # via nbformat, -r requirements.txt
 filelock==3.3.1           # via -r requirements.txt, nomad-lab (pyproject.toml)
 findiff==0.10.0           # via pynxtools-stm, -r requirements.txt
 flask==3.0.3              # via asr, -r requirements.txt
@@ -104,11 +105,11 @@ hjson==3.1.0              # via -r requirements.txt, nomad-lab (pyproject.toml)
 html5lib==1.1             # via -r requirements.txt, nomad-lab (pyproject.toml)
 httpcore==1.0.5           # via httpx, -r requirements.txt
 httptools==0.6.1          # via uvicorn, -r requirements.txt
-httpx==0.27.0             # via jupyterlab, -r requirements.txt, nomad-lab (pyproject.toml)
+httpx==0.27.0             # via jupyterlab, python-keycloak, -r requirements.txt, nomad-lab (pyproject.toml)
 hyperspy==1.7.5           # via kikuchipy, pyxem, -r requirements.txt
 idna==3.7                 # via anyio, email-validator, httpx, jsonschema, requests, -r requirements.txt
 ifes-apt-tc-data-modeling==0.2.2  # via pynxtools-apm, -r requirements.txt
-igor2==0.5.6              # via pynxtools-xps, -r requirements.txt
+igor2==0.5.8              # via pynxtools-xps, -r requirements.txt
 imageio==2.27.0           # via hyperspy, kikuchipy, nionswift, nionswift-io, nionui, scikit-image, -r requirements.txt
 imagesize==1.4.1          # via sphinx, -r requirements.txt
 importlib-metadata==7.1.0  # via build, dask, flask, hyperspy, jupyter-client, jupyter-lsp, jupyterhub, jupyterlab, jupyterlab-server, keyring, markdown, mkdocs, mkdocs-get-deps, nbconvert, pynxtools, sphinx, twine, -r requirements.txt, nomad-lab (pyproject.toml)
@@ -131,7 +132,7 @@ jinja2==3.1.4             # via flask, hyperspy, jupyter-server, jupyterhub, jup
 jmespath==1.0.1           # via -r requirements.txt, nomad-lab (pyproject.toml)
 joblib==1.4.2             # via mdanalysis, pymatgen, scikit-learn, -r requirements.txt
 json5==0.9.25             # via jupyterlab-server, -r requirements.txt
-jsonpointer==2.4          # via jsonschema, -r requirements.txt
+jsonpointer==3.0.0        # via jsonschema, -r requirements.txt
 jsonschema==4.17.3        # via jupyter-events, jupyter-telemetry, jupyterlab-server, nbformat, oauthenticator, -r requirements.txt, nomad-lab (pyproject.toml)
 jupyter==1.0.0            # via ifes-apt-tc-data-modeling, -r requirements.txt
 jupyter-client==8.6.2     # via ipykernel, ipyparallel, jupyter-console, jupyter-server, nbclient, qtconsole, -r requirements.txt
@@ -155,7 +156,7 @@ kiwisolver==1.4.5         # via matplotlib, -r requirements.txt
 kombu==5.3.7              # via celery, -r requirements.txt
 lark==1.1.9               # via optimade, -r requirements.txt
 latexcodec==3.0.0         # via pybtex, -r requirements.txt
-llvmlite==0.42.0          # via numba, -r requirements.txt
+llvmlite==0.43.0          # via numba, -r requirements.txt
 lmfit==1.3.1              # via pyxem, -r requirements.txt
 locket==1.0.0             # via partd, -r requirements.txt
 lxml==5.2.2               # via fabio, lxml-html-clean, pynxtools, -r requirements.txt, nomad-lab (pyproject.toml)
@@ -178,14 +179,14 @@ mkdocs-get-deps==0.2.0    # via mkdocs
 mkdocs-git-revision-date-localized-plugin==1.2.6  # via nomad-lab (pyproject.toml)
 mkdocs-glightbox==0.4.0   # via nomad-lab (pyproject.toml)
 mkdocs-macros-plugin==1.0.5  # via nomad-lab (pyproject.toml)
-mkdocs-material==9.5.25   # via nomad-lab (pyproject.toml)
+mkdocs-material==9.5.27   # via nomad-lab (pyproject.toml)
 mkdocs-material-extensions==1.3.1  # via mkdocs-material, nomad-lab (pyproject.toml)
 mkdocs-redirects==1.2.1   # via nomad-lab (pyproject.toml)
 mmtf-python==1.1.3        # via mdanalysis, -r requirements.txt
 mongoengine==0.28.2       # via -r requirements.txt, nomad-lab (pyproject.toml)
 mongomock==4.1.2          # via optimade, -r requirements.txt
 monty==2024.5.24          # via pymatgen, -r requirements.txt
-more-itertools==10.2.0    # via jaraco-classes, jaraco-functools
+more-itertools==10.3.0    # via jaraco-classes, jaraco-functools
 mpmath==1.3.0             # via sympy, -r requirements.txt
 mrcfile==1.5.0            # via griddataformats, -r requirements.txt
 msgpack==1.0.8            # via blosc2, mmtf-python, -r requirements.txt, nomad-lab (pyproject.toml)
@@ -201,26 +202,26 @@ nest-asyncio==1.6.0       # via ipykernel, -r requirements.txt
 netcdf4==1.6.5            # via -r requirements.txt, nomad-lab (pyproject.toml)
 networkx==2.6.3           # via matid, mdanalysis, pymatgen, radioactivedecay, scikit-image, -r requirements.txt, nomad-lab (pyproject.toml)
 nh3==0.2.17               # via readme-renderer
-niondata==15.6.2          # via nionswift, nionswift-io, -r requirements.txt
-nionswift==16.10.0        # via pynxtools-em, -r requirements.txt
+niondata==15.6.3          # via nionswift, nionswift-io, -r requirements.txt
+nionswift==16.11.0        # via pynxtools-em, -r requirements.txt
 nionswift-io==15.2.1      # via nionswift, -r requirements.txt
-nionui==7.0.3             # via nionswift, -r requirements.txt
-nionutils==0.4.10         # via niondata, nionswift, nionswift-io, nionui, -r requirements.txt
+nionui==7.1.1             # via nionswift, -r requirements.txt
+nionutils==4.11.0         # via niondata, nionswift, nionswift-io, nionui, -r requirements.txt
 notebook==7.1.3           # via jupyter, -r requirements.txt
 notebook-shim==0.2.4      # via jupyterlab, notebook, -r requirements.txt
 nptyping==1.4.4           # via -r requirements.txt, nomad-lab (pyproject.toml)
-numba==0.59.1             # via diffsims, hyperspy, kikuchipy, orix, pyxem, sparse, -r requirements.txt
+numba==0.60.0             # via diffsims, hyperspy, kikuchipy, orix, pyxem, sparse, -r requirements.txt
 numcodecs==0.12.1         # via zarr, -r requirements.txt
 numexpr==2.10.0           # via hyperspy, pyfai, pyxem, tables, -r requirements.txt
-numpy==1.26.4             # via ase, biopython, blosc2, cftime, contourpy, dask, diffsims, f90wrap, fabio, findiff, griddataformats, gsd, h5grove, h5py, hyperspy, ifes-apt-tc-data-modeling, igor2, imageio, kikuchipy, lmfit, matid, matplotlib, mdanalysis, mrcfile, netcdf4, niondata, nionswift, nionswift-io, nionui, nptyping, numba, numcodecs, numexpr, numpy-quaternion, orix, pandas, phonopy, pycifrw, pyedr, pyfai, pymatgen, pynxtools, pywavelets, pyxem, quippy-ase, radioactivedecay, rdkit, rosettasciio, scikit-image, scikit-learn, scipy, silx, sparse, spglib, tables, tifffile, xarray, xraydb, zarr, -r requirements.txt, nomad-lab (pyproject.toml)
+numpy==1.26.4             # via ase, biopython, blosc2, cftime, contourpy, dask, diffsims, f90wrap, fabio, findiff, griddataformats, gsd, h5grove, h5py, hyperspy, ifes-apt-tc-data-modeling, igor2, imageio, kikuchipy, lmfit, matid, matplotlib, mdanalysis, mrcfile, netcdf4, niondata, nionswift, nionswift-io, nionui, nptyping, numba, numcodecs, numexpr, numpy-quaternion, orix, pandas, phonopy, pycifrw, pyedr, pyfai, pymatgen, pynxtools, pywavelets, pyxem, quippy-ase, radioactivedecay, rdkit, rosettasciio, scikit-image, scikit-learn, scipy, silx, sparse, spglib, tables, tifffile, transforms3d, xarray, xraydb, zarr, -r requirements.txt, nomad-lab (pyproject.toml)
 numpy-quaternion==2023.0.3  # via orix, -r requirements.txt
 oauthenticator==15.1.0    # via -r requirements.txt, nomad-lab (pyproject.toml)
 oauthlib==3.2.2           # via jupyterhub, -r requirements.txt
-openpyxl==3.1.3           # via -r requirements.txt, nomad-lab (pyproject.toml)
+openpyxl==3.1.4           # via -r requirements.txt, nomad-lab (pyproject.toml)
 optimade==0.22.1          # via -r requirements.txt, nomad-lab (pyproject.toml)
 orix==0.12.1.post0        # via diffsims, kikuchipy, pyxem, -r requirements.txt
-orjson==3.10.3            # via h5grove, -r requirements.txt, nomad-lab (pyproject.toml)
-packaging==24.0           # via build, dask, deprecation, f90wrap, gunicorn, hyperspy, ipykernel, jupyter-server, jupyterhub, jupyterlab, jupyterlab-server, matplotlib, mdanalysis, mkdocs, mongomock, nbconvert, pint, plotly, pooch, pytest, qtconsole, qtpy, scikit-image, silx, sphinx, tables, xarray, xraydb, -r requirements.txt
+orjson==3.10.5            # via h5grove, -r requirements.txt, nomad-lab (pyproject.toml)
+packaging==24.1           # via build, dask, deprecation, f90wrap, gunicorn, hyperspy, ipykernel, jupyter-server, jupyterhub, jupyterlab, jupyterlab-server, matplotlib, mdanalysis, mkdocs, mongomock, nbconvert, pint, plotly, pooch, pytest, qtconsole, qtpy, scikit-image, silx, sphinx, tables, xarray, xraydb, -r requirements.txt
 paginate==0.5.6           # via mkdocs-material
 palettable==3.3.3         # via pymatgen, -r requirements.txt
 pamela==1.1.0             # via jupyterhub, -r requirements.txt
@@ -232,18 +233,18 @@ parso==0.8.4              # via jedi, -r requirements.txt
 partd==1.4.2              # via dask, -r requirements.txt
 pathspec==0.12.1          # via mkdocs
 pexpect==4.9.0            # via ipython, -r requirements.txt
-phonopy==2.23.1           # via asr, -r requirements.txt
+phonopy==2.24.2.post1     # via asr, -r requirements.txt
 pillow==10.3.0            # via fabio, imageio, matplotlib, nionswift, rdkit, scikit-image, -r requirements.txt
 pint==0.17                # via hyperspy, pynxtools-xps, rosettasciio, -r requirements.txt, nomad-lab (pyproject.toml)
-pkginfo==1.11.0           # via twine
+pkginfo==1.11.1           # via twine
 platformdirs==4.2.2       # via jupyter-core, mkdocs-get-deps, pooch, xraydb, -r requirements.txt
 plotly==5.22.0            # via asr, pymatgen, -r requirements.txt
 pluggy==1.5.0             # via pytest
 ply==3.11                 # via pycifrw, -r requirements.txt
-pooch==1.8.1              # via kikuchipy, orix, -r requirements.txt
+pooch==1.8.2              # via kikuchipy, orix, -r requirements.txt
 prettytable==3.10.0       # via hyperspy, -r requirements.txt
 prometheus-client==0.20.0  # via jupyter-server, jupyterhub, -r requirements.txt
-prompt-toolkit==3.0.46    # via click-repl, ipython, jupyter-console, -r requirements.txt
+prompt-toolkit==3.0.47    # via click-repl, ipython, jupyter-console, -r requirements.txt
 psutil==5.9.8             # via diffsims, ipykernel, ipyparallel, pyxem, -r requirements.txt
 ptyprocess==0.7.0         # via pexpect, terminado, -r requirements.txt
 pure-eval==0.2.2          # via stack-data, -r requirements.txt
@@ -253,14 +254,14 @@ pyasn1-modules==0.4.0     # via rfc3161ng, -r requirements.txt
 pybis @ git+https://github.com/FAIRmat-NFDI/fairmat-pybis.git@91039c2a1df364c88ab7e284b59c43ec42f18370  # via -r requirements.txt, nomad-lab (pyproject.toml)
 pybtex==0.24.0            # via pymatgen, -r requirements.txt
 pycifrw==4.4.6            # via diffpy-structure, -r requirements.txt
-pycodestyle==2.11.1       # via nomad-lab (pyproject.toml)
+pycodestyle==2.12.0       # via nomad-lab (pyproject.toml)
 pycparser==2.22           # via cffi, -r requirements.txt
-pydantic==1.10.15         # via fastapi, optimade, -r requirements.txt, nomad-lab (pyproject.toml)
+pydantic==1.10.16         # via fastapi, optimade, -r requirements.txt, nomad-lab (pyproject.toml)
 pyedr==0.8.0              # via panedr, -r requirements.txt
 pyfai==2024.5.0           # via pyxem, -r requirements.txt
 pygments==2.18.0          # via devtools, ipython, jupyter-console, mkdocs-material, nbconvert, qtconsole, readme-renderer, sphinx, -r requirements.txt
 pyjwt==2.6.0              # via -r requirements.txt, nomad-lab (pyproject.toml)
-pymatgen==2024.5.31       # via asr, -r requirements.txt, nomad-lab (pyproject.toml)
+pymatgen==2024.5.1        # via asr, -r requirements.txt, nomad-lab (pyproject.toml)
 pymdown-extensions==10.8.1  # via mkdocs-material
 pymongo==4.6.3            # via mongoengine, optimade, -r requirements.txt, nomad-lab (pyproject.toml)
 pynxtools==0.3.1          # via pynxtools-apm, pynxtools-ellips, pynxtools-em, pynxtools-mpes, pynxtools-stm, pynxtools-xps, pynxtools-xrd, -r requirements.txt, nomad-lab (pyproject.toml)
@@ -285,7 +286,7 @@ python-dateutil==2.9.0.post0  # via arrow, celery, elasticsearch-dsl, ghp-import
 python-dotenv==1.0.1      # via uvicorn, -r requirements.txt
 python-gitlab==2.10.1     # via nomad-lab (pyproject.toml)
 python-json-logger==2.0.2  # via jupyter-events, jupyter-telemetry, -r requirements.txt, nomad-lab (pyproject.toml)
-python-keycloak==4.0.1    # via -r requirements.txt, nomad-lab (pyproject.toml)
+python-keycloak==4.1.0    # via -r requirements.txt, nomad-lab (pyproject.toml)
 python-logstash==0.4.6    # via -r requirements.txt, nomad-lab (pyproject.toml)
 python-magic==0.4.24      # via -r requirements.txt, nomad-lab (pyproject.toml)
 python-multipart==0.0.9   # via -r requirements.txt, nomad-lab (pyproject.toml)
@@ -299,7 +300,7 @@ pyzmq==26.0.3             # via ipykernel, ipyparallel, jupyter-client, jupyter-
 qtconsole==5.5.2          # via jupyter, -r requirements.txt
 qtpy==2.4.1               # via qtconsole, -r requirements.txt
 quippy-ase==0.9.14        # via -r requirements.txt, nomad-lab (pyproject.toml)
-radioactivedecay==0.5.0   # via ifes-apt-tc-data-modeling, -r requirements.txt
+radioactivedecay==0.5.1   # via ifes-apt-tc-data-modeling, -r requirements.txt
 rdflib==5.0.0             # via -r requirements.txt, nomad-lab (pyproject.toml)
 rdkit==2023.9.5           # via -r requirements.txt, nomad-lab (pyproject.toml)
 readme-renderer==43.0     # via twine
@@ -316,7 +317,7 @@ rope==0.21.0              # via nomad-lab (pyproject.toml)
 rosettasciio==0.4         # via pynxtools-em, -r requirements.txt
 ruamel-yaml==0.18.6       # via jupyter-telemetry, oauthenticator, pymatgen, -r requirements.txt, nomad-lab (pyproject.toml)
 ruamel-yaml-clib==0.2.8   # via ruamel-yaml, -r requirements.txt
-ruff==0.4.7               # via nomad-lab (pyproject.toml)
+ruff==0.4.9               # via nomad-lab (pyproject.toml)
 runstats==2.0.0           # via -r requirements.txt, nomad-lab (pyproject.toml)
 scikit-image==0.19.3      # via hyperspy, kikuchipy, pyxem, -r requirements.txt
 scikit-learn==1.5.0       # via kikuchipy, matid, pyxem, -r requirements.txt, nomad-lab (pyproject.toml)
@@ -347,7 +348,7 @@ structlog==24.2.0         # via -r requirements.txt, nomad-lab (pyproject.toml)
 sympy==1.12.1             # via findiff, hyperspy, pymatgen, radioactivedecay, -r requirements.txt
 tables==3.9.2             # via ifes-apt-tc-data-modeling, -r requirements.txt
 tabulate==0.8.9           # via pybis, pymatgen, -r requirements.txt, nomad-lab (pyproject.toml)
-tenacity==8.3.0           # via plotly, -r requirements.txt
+tenacity==8.4.1           # via plotly, -r requirements.txt
 termcolor==2.4.0          # via mkdocs-macros-plugin
 terminado==0.18.1         # via jupyter-server, jupyter-server-terminals, -r requirements.txt
 texttable==1.7.0          # via pybis, -r requirements.txt
@@ -357,23 +358,23 @@ tinycss2==1.3.0           # via nbconvert, -r requirements.txt
 tomli==2.0.1              # via build, coverage, jupyterlab, mypy, pytest, sphinx, -r requirements.txt
 toolz==0.12.1             # via dask, hyperspy, partd, -r requirements.txt
 toposort==1.10            # via -r requirements.txt, nomad-lab (pyproject.toml)
-tornado==6.4              # via ipykernel, ipyparallel, jupyter-client, jupyter-server, jupyterhub, jupyterlab, notebook, terminado, -r requirements.txt
+tornado==6.4.1            # via ipykernel, ipyparallel, jupyter-client, jupyter-server, jupyterhub, jupyterlab, notebook, terminado, -r requirements.txt
 tqdm==4.66.4              # via diffsims, hyperspy, ipyparallel, kikuchipy, mdanalysis, orix, pyedr, pymatgen, pyxem, twine, -r requirements.txt
 traitlets==5.14.3         # via comm, ipykernel, ipyparallel, ipython, ipywidgets, jupyter-client, jupyter-console, jupyter-core, jupyter-events, jupyter-server, jupyter-telemetry, jupyterhub, jupyterlab, matplotlib-inline, nbclient, nbconvert, nbformat, qtconsole, -r requirements.txt
 traits==6.4.3             # via hyperspy, pyxem, -r requirements.txt
-transforms3d==0.4.1       # via diffsims, pyxem, -r requirements.txt
+transforms3d==0.4.2       # via diffsims, pyxem, -r requirements.txt
 twine==3.4.2              # via nomad-lab (pyproject.toml)
 typed-ast==1.5.5          # via nomad-lab (pyproject.toml)
 types-python-dateutil==2.9.0.20240316  # via arrow, -r requirements.txt
-typing-extensions==4.12.1  # via alembic, anyio, asgiref, astroid, async-lru, fastapi, ipython, jwcrypto, kombu, mypy, pydantic, sqlalchemy, starlette, uvicorn, -r requirements.txt
+typing-extensions==4.12.2  # via alembic, anyio, asgiref, astroid, async-lru, fastapi, ipython, jwcrypto, kombu, mypy, pydantic, sqlalchemy, starlette, uvicorn, -r requirements.txt
 typish==1.9.3             # via nptyping, -r requirements.txt
 tzdata==2024.1            # via celery, -r requirements.txt
 tzlocal==5.2              # via nionswift, pynxtools-em, -r requirements.txt
-uncertainties==3.2.0      # via lmfit, pymatgen, -r requirements.txt
+uncertainties==3.2.1      # via lmfit, pymatgen, -r requirements.txt
 unidecode==1.3.2          # via -r requirements.txt, nomad-lab (pyproject.toml)
 uri-template==1.3.0       # via jsonschema, -r requirements.txt
-urllib3==1.26.18          # via docker, elasticsearch, pybis, requests, -r requirements.txt
-uv==0.2.6                 # via nomad-lab (pyproject.toml)
+urllib3==1.26.19          # via docker, elasticsearch, pybis, requests, -r requirements.txt
+uv==0.2.12                # via nomad-lab (pyproject.toml)
 uvicorn==0.30.1           # via h5grove, -r requirements.txt, nomad-lab (pyproject.toml)
 uvloop==0.19.0            # via uvicorn, -r requirements.txt
 validators==0.18.2        # via -r requirements.txt, nomad-lab (pyproject.toml)
@@ -381,7 +382,7 @@ vine==5.1.0               # via amqp, celery, kombu, -r requirements.txt
 watchdog==4.0.1           # via mkdocs
 watchfiles==0.22.0        # via uvicorn, -r requirements.txt
 wcwidth==0.2.13           # via prettytable, prompt-toolkit, -r requirements.txt
-webcolors==1.13           # via jsonschema, -r requirements.txt
+webcolors==24.6.0         # via jsonschema, -r requirements.txt
 webencodings==0.5.1       # via bleach, html5lib, tinycss2, -r requirements.txt
 websocket-client==1.8.0   # via jupyter-server, -r requirements.txt
 websockets==12.0          # via uvicorn, -r requirements.txt
diff --git a/requirements.txt b/requirements.txt
index e051c2ab63732f755811e2edd362757e8610a5f2..14cdebecf4671ad68d800f1d96bbbd9022366994 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -17,6 +17,7 @@ asteval==0.9.33           # via lmfit
 asttokens==2.4.1          # via stack-data
 async-generator==1.10     # via jupyterhub
 async-lru==2.0.4          # via jupyterlab
+async-property==0.2.2     # via python-keycloak
 attrs==23.2.0             # via jsonschema
 babel==2.15.0             # via jupyterlab-server, sphinx
 bagit==1.8.1              # via nomad-lab (pyproject.toml)
@@ -33,7 +34,7 @@ celery==5.4.0             # via nomad-lab (pyproject.toml)
 certifi==2024.6.2         # via elasticsearch, httpcore, httpx, netcdf4, requests
 certipy==0.1.3            # via jupyterhub
 cffi==1.16.0              # via argon2-cffi-bindings, cryptography
-cftime==1.6.3             # via netcdf4
+cftime==1.6.4             # via netcdf4
 charset-normalizer==3.3.2  # via requests
 click==8.1.7              # via asr, celery, click-default-group, click-didyoumean, click-plugins, click-repl, dask, flask, pynxtools, uvicorn, nomad-lab (pyproject.toml)
 click-default-group==1.2.4  # via pynxtools
@@ -46,13 +47,13 @@ commonmark==0.9.1         # via recommonmark
 contourpy==1.2.1          # via matplotlib
 cryptography==42.0.8      # via jwcrypto, pyjwt, pyopenssl, rfc3161ng
 cycler==0.12.1            # via matplotlib
-dask==2024.5.2            # via hyperspy, kikuchipy, orix, pyxem, rosettasciio
+dask==2024.6.0            # via hyperspy, kikuchipy, orix, pyxem, rosettasciio
 debugpy==1.8.1            # via ipykernel
 decorator==5.1.1          # via ipyparallel, ipython, validators
 defusedxml==0.7.1         # via nbconvert
 deprecation==2.1.0        # via python-keycloak
 diffpy-structure==3.1.0   # via diffsims, kikuchipy, orix
-diffsims==0.5.2           # via kikuchipy, pyxem
+diffsims==0.6.0           # via kikuchipy, pyxem
 dill==0.3.8               # via hyperspy, lmfit
 dnspython==2.6.1          # via email-validator, pymongo
 docker==7.1.0             # via dockerspawner
@@ -71,7 +72,7 @@ f90wrap==0.2.14           # via quippy-ase
 fabio==2024.4.0           # via pyfai, silx
 fastapi==0.99.1           # via h5grove, nomad-lab (pyproject.toml)
 fasteners==0.19           # via mdanalysis, zarr
-fastjsonschema==2.19.1    # via nbformat
+fastjsonschema==2.20.0    # via nbformat
 filelock==3.3.1           # via nomad-lab (pyproject.toml)
 findiff==0.10.0           # via pynxtools-stm
 flask==3.0.3              # via asr
@@ -93,11 +94,11 @@ hjson==3.1.0              # via nomad-lab (pyproject.toml)
 html5lib==1.1             # via nomad-lab (pyproject.toml)
 httpcore==1.0.5           # via httpx
 httptools==0.6.1          # via uvicorn
-httpx==0.27.0             # via jupyterlab, nomad-lab (pyproject.toml)
+httpx==0.27.0             # via jupyterlab, python-keycloak, nomad-lab (pyproject.toml)
 hyperspy==1.7.5           # via kikuchipy, pyxem
 idna==3.7                 # via anyio, email-validator, httpx, jsonschema, requests
 ifes-apt-tc-data-modeling==0.2.2  # via pynxtools-apm
-igor2==0.5.6              # via pynxtools-xps
+igor2==0.5.8              # via pynxtools-xps
 imageio==2.27.0           # via hyperspy, kikuchipy, nionswift, nionswift-io, nionui, scikit-image
 imagesize==1.4.1          # via sphinx
 importlib-metadata==7.1.0  # via dask, flask, hyperspy, jupyter-client, jupyter-lsp, jupyterhub, jupyterlab, jupyterlab-server, nbconvert, pynxtools, sphinx, nomad-lab (pyproject.toml)
@@ -115,7 +116,7 @@ jinja2==3.1.4             # via flask, hyperspy, jupyter-server, jupyterhub, jup
 jmespath==1.0.1           # via nomad-lab (pyproject.toml)
 joblib==1.4.2             # via mdanalysis, pymatgen, scikit-learn
 json5==0.9.25             # via jupyterlab-server
-jsonpointer==2.4          # via jsonschema
+jsonpointer==3.0.0        # via jsonschema
 jsonschema==4.17.3        # via jupyter-events, jupyter-telemetry, jupyterlab-server, nbformat, oauthenticator, nomad-lab (pyproject.toml)
 jupyter==1.0.0            # via ifes-apt-tc-data-modeling
 jupyter-client==8.6.2     # via ipykernel, ipyparallel, jupyter-console, jupyter-server, nbclient, qtconsole
@@ -138,7 +139,7 @@ kiwisolver==1.4.5         # via matplotlib
 kombu==5.3.7              # via celery
 lark==1.1.9               # via optimade
 latexcodec==3.0.0         # via pybtex
-llvmlite==0.42.0          # via numba
+llvmlite==0.43.0          # via numba
 lmfit==1.3.1              # via pyxem
 locket==1.0.0             # via partd
 lxml==5.2.2               # via fabio, lxml-html-clean, pynxtools, nomad-lab (pyproject.toml)
@@ -169,26 +170,26 @@ ndindex==1.8              # via blosc2
 nest-asyncio==1.6.0       # via ipykernel
 netcdf4==1.6.5            # via nomad-lab (pyproject.toml)
 networkx==2.6.3           # via matid, mdanalysis, pymatgen, radioactivedecay, scikit-image, nomad-lab (pyproject.toml)
-niondata==15.6.2          # via nionswift, nionswift-io
-nionswift==16.10.0        # via pynxtools-em
+niondata==15.6.3          # via nionswift, nionswift-io
+nionswift==16.11.0        # via pynxtools-em
 nionswift-io==15.2.1      # via nionswift
-nionui==7.0.3             # via nionswift
-nionutils==0.4.10         # via niondata, nionswift, nionswift-io, nionui
+nionui==7.1.1             # via nionswift
+nionutils==4.11.0         # via niondata, nionswift, nionswift-io, nionui
 notebook==7.1.3           # via jupyter
 notebook-shim==0.2.4      # via jupyterlab, notebook
 nptyping==1.4.4           # via nomad-lab (pyproject.toml)
-numba==0.59.1             # via diffsims, hyperspy, kikuchipy, orix, pyxem, sparse
+numba==0.60.0             # via diffsims, hyperspy, kikuchipy, orix, pyxem, sparse
 numcodecs==0.12.1         # via zarr
 numexpr==2.10.0           # via hyperspy, pyfai, pyxem, tables
-numpy==1.26.4             # via ase, biopython, blosc2, cftime, contourpy, dask, diffsims, f90wrap, fabio, findiff, griddataformats, gsd, h5grove, h5py, hyperspy, ifes-apt-tc-data-modeling, igor2, imageio, kikuchipy, lmfit, matid, matplotlib, mdanalysis, mrcfile, netcdf4, niondata, nionswift, nionswift-io, nionui, nptyping, numba, numcodecs, numexpr, numpy-quaternion, orix, pandas, phonopy, pycifrw, pyedr, pyfai, pymatgen, pynxtools, pywavelets, pyxem, quippy-ase, radioactivedecay, rdkit, rosettasciio, scikit-image, scikit-learn, scipy, silx, sparse, spglib, tables, tifffile, xarray, xraydb, zarr, nomad-dos-fingerprints (dependencies/nomad-dos-fingerprints/pyproject.toml), nomad-lab (pyproject.toml)
+numpy==1.26.4             # via ase, biopython, blosc2, cftime, contourpy, dask, diffsims, f90wrap, fabio, findiff, griddataformats, gsd, h5grove, h5py, hyperspy, ifes-apt-tc-data-modeling, igor2, imageio, kikuchipy, lmfit, matid, matplotlib, mdanalysis, mrcfile, netcdf4, niondata, nionswift, nionswift-io, nionui, nptyping, numba, numcodecs, numexpr, numpy-quaternion, orix, pandas, phonopy, pycifrw, pyedr, pyfai, pymatgen, pynxtools, pywavelets, pyxem, quippy-ase, radioactivedecay, rdkit, rosettasciio, scikit-image, scikit-learn, scipy, silx, sparse, spglib, tables, tifffile, transforms3d, xarray, xraydb, zarr, nomad-dos-fingerprints (dependencies/nomad-dos-fingerprints/pyproject.toml), nomad-lab (pyproject.toml)
 numpy-quaternion==2023.0.3  # via orix
 oauthenticator==15.1.0    # via nomad-lab (pyproject.toml)
 oauthlib==3.2.2           # via jupyterhub
-openpyxl==3.1.3           # via nomad-lab (pyproject.toml)
+openpyxl==3.1.4           # via nomad-lab (pyproject.toml)
 optimade==0.22.1          # via nomad-lab (pyproject.toml)
 orix==0.12.1.post0        # via diffsims, kikuchipy, pyxem
-orjson==3.10.3            # via h5grove, nomad-lab (pyproject.toml)
-packaging==24.0           # via dask, deprecation, f90wrap, gunicorn, hyperspy, ipykernel, jupyter-server, jupyterhub, jupyterlab, jupyterlab-server, matplotlib, mdanalysis, mongomock, nbconvert, pint, plotly, pooch, qtconsole, qtpy, scikit-image, silx, sphinx, tables, xarray, xraydb
+orjson==3.10.5            # via h5grove, nomad-lab (pyproject.toml)
+packaging==24.1           # via dask, deprecation, f90wrap, gunicorn, hyperspy, ipykernel, jupyter-server, jupyterhub, jupyterlab, jupyterlab-server, matplotlib, mdanalysis, mongomock, nbconvert, pint, plotly, pooch, qtconsole, qtpy, scikit-image, silx, sphinx, tables, xarray, xraydb
 palettable==3.3.3         # via pymatgen
 pamela==1.1.0             # via jupyterhub
 pandas==1.5.3             # via ifes-apt-tc-data-modeling, panedr, pybis, pymatgen, pynxtools, radioactivedecay, xarray, eelsdbconverter (dependencies/parsers/eelsdb/pyproject.toml), nomad-lab (pyproject.toml)
@@ -198,16 +199,16 @@ parmed==4.2.2             # via nomad-lab (pyproject.toml)
 parso==0.8.4              # via jedi
 partd==1.4.2              # via dask
 pexpect==4.9.0            # via ipython
-phonopy==2.23.1           # via asr
+phonopy==2.24.2.post1     # via asr
 pillow==10.3.0            # via fabio, imageio, matplotlib, nionswift, rdkit, scikit-image
 pint==0.17                # via hyperspy, pynxtools-xps, rosettasciio, nomad-lab (pyproject.toml)
 platformdirs==4.2.2       # via jupyter-core, pooch, xraydb
 plotly==5.22.0            # via asr, pymatgen
 ply==3.11                 # via pycifrw
-pooch==1.8.1              # via kikuchipy, orix
+pooch==1.8.2              # via kikuchipy, orix
 prettytable==3.10.0       # via hyperspy
 prometheus-client==0.20.0  # via jupyter-server, jupyterhub
-prompt-toolkit==3.0.46    # via click-repl, ipython, jupyter-console
+prompt-toolkit==3.0.47    # via click-repl, ipython, jupyter-console
 psutil==5.9.8             # via diffsims, ipykernel, ipyparallel, pyxem
 ptyprocess==0.7.0         # via pexpect, terminado
 pure-eval==0.2.2          # via stack-data
@@ -218,12 +219,12 @@ pybis @ git+https://github.com/FAIRmat-NFDI/fairmat-pybis.git@91039c2a1df364c88a
 pybtex==0.24.0            # via pymatgen
 pycifrw==4.4.6            # via diffpy-structure
 pycparser==2.22           # via cffi
-pydantic==1.10.15         # via fastapi, optimade, nomad-lab (pyproject.toml)
+pydantic==1.10.16         # via fastapi, optimade, nomad-lab (pyproject.toml)
 pyedr==0.8.0              # via panedr
 pyfai==2024.5.0           # via pyxem
 pygments==2.18.0          # via ipython, jupyter-console, nbconvert, qtconsole, sphinx
 pyjwt==2.6.0              # via nomad-lab (pyproject.toml)
-pymatgen==2024.5.31       # via asr, nomad-lab (pyproject.toml)
+pymatgen==2024.5.1        # via asr, nomad-lab (pyproject.toml)
 pymongo==4.6.3            # via mongoengine, optimade, nomad-lab (pyproject.toml)
 pynxtools==0.3.1          # via pynxtools-apm, pynxtools-ellips, pynxtools-em, pynxtools-mpes, pynxtools-stm, pynxtools-xps, pynxtools-xrd, nomad-lab (pyproject.toml)
 pynxtools-apm==0.2        # via pynxtools
@@ -240,7 +241,7 @@ python-box==6.1.0         # via rosettasciio
 python-dateutil==2.9.0.post0  # via arrow, celery, elasticsearch-dsl, hyperspy, ipyparallel, jupyter-client, jupyterhub, matplotlib, pandas, pybis, rfc3161ng, rosettasciio
 python-dotenv==1.0.1      # via uvicorn
 python-json-logger==2.0.2  # via jupyter-events, jupyter-telemetry, nomad-lab (pyproject.toml)
-python-keycloak==4.0.1    # via nomad-lab (pyproject.toml)
+python-keycloak==4.1.0    # via nomad-lab (pyproject.toml)
 python-logstash==0.4.6    # via nomad-lab (pyproject.toml)
 python-magic==0.4.24      # via nomad-lab (pyproject.toml)
 python-multipart==0.0.9   # via nomad-lab (pyproject.toml)
@@ -253,7 +254,7 @@ pyzmq==26.0.3             # via ipykernel, ipyparallel, jupyter-client, jupyter-
 qtconsole==5.5.2          # via jupyter
 qtpy==2.4.1               # via qtconsole
 quippy-ase==0.9.14        # via nomad-lab (pyproject.toml)
-radioactivedecay==0.5.0   # via ifes-apt-tc-data-modeling
+radioactivedecay==0.5.1   # via ifes-apt-tc-data-modeling
 rdflib==5.0.0             # via nomad-lab (pyproject.toml)
 rdkit==2023.9.5           # via nomad-lab (pyproject.toml)
 recommonmark==0.7.1       # via nomad-lab (pyproject.toml)
@@ -295,7 +296,7 @@ structlog==24.2.0         # via nomad-lab (pyproject.toml)
 sympy==1.12.1             # via findiff, hyperspy, pymatgen, radioactivedecay
 tables==3.9.2             # via ifes-apt-tc-data-modeling
 tabulate==0.8.9           # via pybis, pymatgen, nomad-lab (pyproject.toml)
-tenacity==8.3.0           # via plotly
+tenacity==8.4.1           # via plotly
 terminado==0.18.1         # via jupyter-server, jupyter-server-terminals
 texttable==1.7.0          # via pybis
 threadpoolctl==3.5.0      # via mdanalysis, scikit-learn
@@ -304,27 +305,27 @@ tinycss2==1.3.0           # via nbconvert
 tomli==2.0.1              # via jupyterlab, sphinx
 toolz==0.12.1             # via dask, hyperspy, partd
 toposort==1.10            # via nomad-lab (pyproject.toml)
-tornado==6.4              # via ipykernel, ipyparallel, jupyter-client, jupyter-server, jupyterhub, jupyterlab, notebook, terminado
+tornado==6.4.1            # via ipykernel, ipyparallel, jupyter-client, jupyter-server, jupyterhub, jupyterlab, notebook, terminado
 tqdm==4.66.4              # via diffsims, hyperspy, ipyparallel, kikuchipy, mdanalysis, orix, pyedr, pymatgen, pyxem
 traitlets==5.14.3         # via comm, ipykernel, ipyparallel, ipython, ipywidgets, jupyter-client, jupyter-console, jupyter-core, jupyter-events, jupyter-server, jupyter-telemetry, jupyterhub, jupyterlab, matplotlib-inline, nbclient, nbconvert, nbformat, qtconsole
 traits==6.4.3             # via hyperspy, pyxem
-transforms3d==0.4.1       # via diffsims, pyxem
+transforms3d==0.4.2       # via diffsims, pyxem
 types-python-dateutil==2.9.0.20240316  # via arrow
-typing-extensions==4.12.1  # via alembic, anyio, asgiref, async-lru, fastapi, ipython, jwcrypto, kombu, pydantic, sqlalchemy, starlette, uvicorn
+typing-extensions==4.12.2  # via alembic, anyio, asgiref, async-lru, fastapi, ipython, jwcrypto, kombu, pydantic, sqlalchemy, starlette, uvicorn
 typish==1.9.3             # via nptyping
 tzdata==2024.1            # via celery
 tzlocal==5.2              # via nionswift, pynxtools-em
-uncertainties==3.2.0      # via lmfit, pymatgen
+uncertainties==3.2.1      # via lmfit, pymatgen
 unidecode==1.3.2          # via nomad-lab (pyproject.toml)
 uri-template==1.3.0       # via jsonschema
-urllib3==1.26.18          # via docker, elasticsearch, pybis, requests
+urllib3==1.26.19          # via docker, elasticsearch, pybis, requests
 uvicorn==0.30.1           # via h5grove, nomad-lab (pyproject.toml)
 uvloop==0.19.0            # via uvicorn
 validators==0.18.2        # via nomad-lab (pyproject.toml)
 vine==5.1.0               # via amqp, celery, kombu
 watchfiles==0.22.0        # via uvicorn
 wcwidth==0.2.13           # via prettytable, prompt-toolkit
-webcolors==1.13           # via jsonschema
+webcolors==24.6.0         # via jsonschema
 webencodings==0.5.1       # via bleach, html5lib, tinycss2
 websocket-client==1.8.0   # via jupyter-server
 websockets==12.0          # via uvicorn