[ ]:
%matplotlib inline
Tutorial for fusion along illumination#
This tutorial shows how to apply Leonardo-Fuse to integrate light-sheet datasets with dual-sided illumination together.
The data used here is available in zenodo. We use volumes “D1_I0.tif” and “D1_I1.tif” for this tutorial. Here, “I0” and “I1” mean two opposite illumination lenses, while “D1” means the same detection lens.
Import packages & data#
[1]:
# in case Leonardo is not installed yet
!pip install leonardo_toolset
Collecting leonardo_toolset
Downloading leonardo_toolset-1.0.1-py3-none-any.whl.metadata (6.3 kB)
Requirement already satisfied: jax in /usr/local/lib/python3.11/dist-packages (from leonardo_toolset) (0.5.2)
Requirement already satisfied: scikit-image in /usr/local/lib/python3.11/dist-packages (from leonardo_toolset) (0.25.2)
Requirement already satisfied: torch in /usr/local/lib/python3.11/dist-packages (from leonardo_toolset) (2.6.0+cu124)
Requirement already satisfied: torchvision in /usr/local/lib/python3.11/dist-packages (from leonardo_toolset) (0.21.0+cu124)
Requirement already satisfied: tqdm in /usr/local/lib/python3.11/dist-packages (from leonardo_toolset) (4.67.1)
Requirement already satisfied: matplotlib in /usr/local/lib/python3.11/dist-packages (from leonardo_toolset) (3.10.0)
Collecting dm-haiku (from leonardo_toolset)
Downloading dm_haiku-0.0.14-py3-none-any.whl.metadata (19 kB)
Collecting SimpleITK (from leonardo_toolset)
Downloading simpleitk-2.5.2-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (7.2 kB)
Collecting jaxwt (from leonardo_toolset)
Downloading jaxwt-0.1.1-py3-none-any.whl.metadata (7.2 kB)
Collecting ptwt (from leonardo_toolset)
Downloading ptwt-1.0.0-py3-none-any.whl.metadata (9.1 kB)
Requirement already satisfied: PyWavelets in /usr/local/lib/python3.11/dist-packages (from leonardo_toolset) (1.8.0)
Collecting antspyx (from leonardo_toolset)
Downloading antspyx-0.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (7.1 kB)
Requirement already satisfied: opencv-python in /usr/local/lib/python3.11/dist-packages (from leonardo_toolset) (4.12.0.88)
Requirement already satisfied: colour in /usr/local/lib/python3.11/dist-packages (from leonardo_toolset) (0.1.5)
Collecting open3d (from leonardo_toolset)
Downloading open3d-0.19.0-cp311-cp311-manylinux_2_31_x86_64.whl.metadata (4.3 kB)
Requirement already satisfied: h5py in /usr/local/lib/python3.11/dist-packages (from leonardo_toolset) (3.14.0)
Collecting bioio<2 (from leonardo_toolset)
Downloading bioio-1.6.1-py3-none-any.whl.metadata (6.6 kB)
Collecting bioio-tifffile (from leonardo_toolset)
Downloading bioio_tifffile-1.3.0-py3-none-any.whl.metadata (3.6 kB)
Requirement already satisfied: jinja2 in /usr/local/lib/python3.11/dist-packages (from leonardo_toolset) (3.1.6)
Requirement already satisfied: pyyaml in /usr/local/lib/python3.11/dist-packages (from leonardo_toolset) (6.0.2)
Collecting bioio-ome-tiff<1.2 (from leonardo_toolset)
Downloading bioio_ome_tiff-1.1.0-py3-none-any.whl.metadata (3.6 kB)
Collecting bioio-base==1.0.7 (from bioio<2->leonardo_toolset)
Downloading bioio_base-1.0.7-py3-none-any.whl.metadata (3.3 kB)
Requirement already satisfied: dask>=2021.4.1 in /usr/local/lib/python3.11/dist-packages (from dask[array]>=2021.4.1->bioio<2->leonardo_toolset) (2025.5.0)
Requirement already satisfied: fsspec>=2022.8.0 in /usr/local/lib/python3.11/dist-packages (from bioio<2->leonardo_toolset) (2025.3.0)
Requirement already satisfied: imageio>=2.11.0 in /usr/local/lib/python3.11/dist-packages (from imageio[ffmpeg]>=2.11.0->bioio<2->leonardo_toolset) (2.37.0)
Requirement already satisfied: numpy>=1.21.0 in /usr/local/lib/python3.11/dist-packages (from bioio<2->leonardo_toolset) (2.0.2)
Collecting ome-types>=0.4.0 (from ome-types[lxml]>=0.4.0->bioio<2->leonardo_toolset)
Downloading ome_types-0.6.1-py3-none-any.whl.metadata (11 kB)
Collecting ome-zarr>=0.6.1 (from bioio<2->leonardo_toolset)
Downloading ome_zarr-0.11.1-py3-none-any.whl.metadata (2.9 kB)
Collecting ome-zarr-models>=0.1.1 (from bioio<2->leonardo_toolset)
Downloading ome_zarr_models-0.1.10-py3-none-any.whl.metadata (3.0 kB)
Collecting semver>=3.0.1 (from bioio<2->leonardo_toolset)
Downloading semver-3.0.4-py3-none-any.whl.metadata (6.8 kB)
Requirement already satisfied: tifffile>=2021.8.30 in /usr/local/lib/python3.11/dist-packages (from bioio<2->leonardo_toolset) (2025.6.11)
Collecting zarr>=2.6.0 (from bioio<2->leonardo_toolset)
Downloading zarr-3.1.1-py3-none-any.whl.metadata (10 kB)
Requirement already satisfied: xarray>=2022.6.0 in /usr/local/lib/python3.11/dist-packages (from bioio-base==1.0.7->bioio<2->leonardo_toolset) (2025.7.1)
Collecting imagecodecs>=2020.5.30 (from bioio-ome-tiff<1.2->leonardo_toolset)
Downloading imagecodecs-2025.8.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (20 kB)
Requirement already satisfied: pydantic>=1.10.0 in /usr/local/lib/python3.11/dist-packages (from bioio-ome-tiff<1.2->leonardo_toolset) (2.11.7)
Collecting xmlschema (from bioio-ome-tiff<1.2->leonardo_toolset)
Downloading xmlschema-4.1.0-py3-none-any.whl.metadata (8.0 kB)
Collecting zarr>=2.6.0 (from bioio<2->leonardo_toolset)
Downloading zarr-2.18.7-py3-none-any.whl.metadata (5.8 kB)
Requirement already satisfied: scipy>=1.11.4 in /usr/local/lib/python3.11/dist-packages (from scikit-image->leonardo_toolset) (1.16.0)
Requirement already satisfied: networkx>=3.0 in /usr/local/lib/python3.11/dist-packages (from scikit-image->leonardo_toolset) (3.5)
Requirement already satisfied: pillow>=10.1 in /usr/local/lib/python3.11/dist-packages (from scikit-image->leonardo_toolset) (11.3.0)
Requirement already satisfied: packaging>=21 in /usr/local/lib/python3.11/dist-packages (from scikit-image->leonardo_toolset) (25.0)
Requirement already satisfied: lazy-loader>=0.4 in /usr/local/lib/python3.11/dist-packages (from scikit-image->leonardo_toolset) (0.4)
Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (from antspyx->leonardo_toolset) (2.2.2)
Requirement already satisfied: statsmodels in /usr/local/lib/python3.11/dist-packages (from antspyx->leonardo_toolset) (0.14.5)
Requirement already satisfied: webcolors in /usr/local/lib/python3.11/dist-packages (from antspyx->leonardo_toolset) (24.11.1)
Requirement already satisfied: requests in /usr/local/lib/python3.11/dist-packages (from antspyx->leonardo_toolset) (2.32.3)
Requirement already satisfied: scikit-learn in /usr/local/lib/python3.11/dist-packages (from antspyx->leonardo_toolset) (1.6.1)
Collecting scipy>=1.11.4 (from scikit-image->leonardo_toolset)
Downloading scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (61 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.0/62.0 kB 3.1 MB/s eta 0:00:00
Requirement already satisfied: absl-py>=0.7.1 in /usr/local/lib/python3.11/dist-packages (from dm-haiku->leonardo_toolset) (1.4.0)
Collecting jmp>=0.0.2 (from dm-haiku->leonardo_toolset)
Downloading jmp-0.0.4-py3-none-any.whl.metadata (8.9 kB)
Requirement already satisfied: tabulate>=0.8.9 in /usr/local/lib/python3.11/dist-packages (from dm-haiku->leonardo_toolset) (0.9.0)
Requirement already satisfied: jaxlib<=0.5.2,>=0.5.1 in /usr/local/lib/python3.11/dist-packages (from jax->leonardo_toolset) (0.5.1)
Requirement already satisfied: ml_dtypes>=0.4.0 in /usr/local/lib/python3.11/dist-packages (from jax->leonardo_toolset) (0.4.1)
Requirement already satisfied: opt_einsum in /usr/local/lib/python3.11/dist-packages (from jax->leonardo_toolset) (3.4.0)
Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.11/dist-packages (from jinja2->leonardo_toolset) (3.0.2)
Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->leonardo_toolset) (1.3.2)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.11/dist-packages (from matplotlib->leonardo_toolset) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib->leonardo_toolset) (4.59.0)
Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->leonardo_toolset) (1.4.8)
Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib->leonardo_toolset) (3.2.3)
Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.11/dist-packages (from matplotlib->leonardo_toolset) (2.9.0.post0)
Collecting dash>=2.6.0 (from open3d->leonardo_toolset)
Downloading dash-3.2.0-py3-none-any.whl.metadata (10 kB)
Requirement already satisfied: werkzeug>=3.0.0 in /usr/local/lib/python3.11/dist-packages (from open3d->leonardo_toolset) (3.1.3)
Requirement already satisfied: flask>=3.0.0 in /usr/local/lib/python3.11/dist-packages (from open3d->leonardo_toolset) (3.1.1)
Requirement already satisfied: nbformat>=5.7.0 in /usr/local/lib/python3.11/dist-packages (from open3d->leonardo_toolset) (5.10.4)
Collecting configargparse (from open3d->leonardo_toolset)
Downloading configargparse-1.7.1-py3-none-any.whl.metadata (24 kB)
Collecting ipywidgets>=8.0.4 (from open3d->leonardo_toolset)
Downloading ipywidgets-8.1.7-py3-none-any.whl.metadata (2.4 kB)
Collecting addict (from open3d->leonardo_toolset)
Downloading addict-2.4.0-py3-none-any.whl.metadata (1.0 kB)
Collecting pyquaternion (from open3d->leonardo_toolset)
Downloading pyquaternion-0.9.9-py3-none-any.whl.metadata (1.4 kB)
Requirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from torch->leonardo_toolset) (3.18.0)
Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.11/dist-packages (from torch->leonardo_toolset) (4.14.1)
Collecting nvidia-cuda-nvrtc-cu12==12.4.127 (from torch->leonardo_toolset)
Downloading nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)
Collecting nvidia-cuda-runtime-cu12==12.4.127 (from torch->leonardo_toolset)
Downloading nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)
Collecting nvidia-cuda-cupti-cu12==12.4.127 (from torch->leonardo_toolset)
Downloading nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)
Collecting nvidia-cudnn-cu12==9.1.0.70 (from torch->leonardo_toolset)
Downloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)
Collecting nvidia-cublas-cu12==12.4.5.8 (from torch->leonardo_toolset)
Downloading nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)
Collecting nvidia-cufft-cu12==11.2.1.3 (from torch->leonardo_toolset)
Downloading nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)
Collecting nvidia-curand-cu12==10.3.5.147 (from torch->leonardo_toolset)
Downloading nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)
Collecting nvidia-cusolver-cu12==11.6.1.9 (from torch->leonardo_toolset)
Downloading nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)
Collecting nvidia-cusparse-cu12==12.3.1.170 (from torch->leonardo_toolset)
Downloading nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)
Requirement already satisfied: nvidia-cusparselt-cu12==0.6.2 in /usr/local/lib/python3.11/dist-packages (from torch->leonardo_toolset) (0.6.2)
Requirement already satisfied: nvidia-nccl-cu12==2.21.5 in /usr/local/lib/python3.11/dist-packages (from torch->leonardo_toolset) (2.21.5)
Requirement already satisfied: nvidia-nvtx-cu12==12.4.127 in /usr/local/lib/python3.11/dist-packages (from torch->leonardo_toolset) (12.4.127)
Collecting nvidia-nvjitlink-cu12==12.4.127 (from torch->leonardo_toolset)
Downloading nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)
Requirement already satisfied: triton==3.2.0 in /usr/local/lib/python3.11/dist-packages (from torch->leonardo_toolset) (3.2.0)
Requirement already satisfied: sympy==1.13.1 in /usr/local/lib/python3.11/dist-packages (from torch->leonardo_toolset) (1.13.1)
Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from sympy==1.13.1->torch->leonardo_toolset) (1.3.0)
Requirement already satisfied: plotly>=5.0.0 in /usr/local/lib/python3.11/dist-packages (from dash>=2.6.0->open3d->leonardo_toolset) (5.24.1)
Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.11/dist-packages (from dash>=2.6.0->open3d->leonardo_toolset) (8.7.0)
Collecting retrying (from dash>=2.6.0->open3d->leonardo_toolset)
Downloading retrying-1.4.2-py3-none-any.whl.metadata (5.5 kB)
Requirement already satisfied: nest-asyncio in /usr/local/lib/python3.11/dist-packages (from dash>=2.6.0->open3d->leonardo_toolset) (1.6.0)
Requirement already satisfied: setuptools in /usr/local/lib/python3.11/dist-packages (from dash>=2.6.0->open3d->leonardo_toolset) (75.2.0)
Requirement already satisfied: click>=8.1 in /usr/local/lib/python3.11/dist-packages (from dask>=2021.4.1->dask[array]>=2021.4.1->bioio<2->leonardo_toolset) (8.2.1)
Requirement already satisfied: cloudpickle>=3.0.0 in /usr/local/lib/python3.11/dist-packages (from dask>=2021.4.1->dask[array]>=2021.4.1->bioio<2->leonardo_toolset) (3.1.1)
Requirement already satisfied: partd>=1.4.0 in /usr/local/lib/python3.11/dist-packages (from dask>=2021.4.1->dask[array]>=2021.4.1->bioio<2->leonardo_toolset) (1.4.2)
Requirement already satisfied: toolz>=0.10.0 in /usr/local/lib/python3.11/dist-packages (from dask>=2021.4.1->dask[array]>=2021.4.1->bioio<2->leonardo_toolset) (0.12.1)
Requirement already satisfied: blinker>=1.9.0 in /usr/local/lib/python3.11/dist-packages (from flask>=3.0.0->open3d->leonardo_toolset) (1.9.0)
Requirement already satisfied: itsdangerous>=2.2.0 in /usr/local/lib/python3.11/dist-packages (from flask>=3.0.0->open3d->leonardo_toolset) (2.2.0)
Requirement already satisfied: imageio-ffmpeg in /usr/local/lib/python3.11/dist-packages (from imageio[ffmpeg]>=2.11.0->bioio<2->leonardo_toolset) (0.6.0)
Requirement already satisfied: psutil in /usr/local/lib/python3.11/dist-packages (from imageio[ffmpeg]>=2.11.0->bioio<2->leonardo_toolset) (5.9.5)
Collecting comm>=0.1.3 (from ipywidgets>=8.0.4->open3d->leonardo_toolset)
Downloading comm-0.2.3-py3-none-any.whl.metadata (3.7 kB)
Requirement already satisfied: ipython>=6.1.0 in /usr/local/lib/python3.11/dist-packages (from ipywidgets>=8.0.4->open3d->leonardo_toolset) (7.34.0)
Requirement already satisfied: traitlets>=4.3.1 in /usr/local/lib/python3.11/dist-packages (from ipywidgets>=8.0.4->open3d->leonardo_toolset) (5.7.1)
Collecting widgetsnbextension~=4.0.14 (from ipywidgets>=8.0.4->open3d->leonardo_toolset)
Downloading widgetsnbextension-4.0.14-py3-none-any.whl.metadata (1.6 kB)
Requirement already satisfied: jupyterlab_widgets~=3.0.15 in /usr/local/lib/python3.11/dist-packages (from ipywidgets>=8.0.4->open3d->leonardo_toolset) (3.0.15)
Requirement already satisfied: fastjsonschema>=2.15 in /usr/local/lib/python3.11/dist-packages (from nbformat>=5.7.0->open3d->leonardo_toolset) (2.21.1)
Requirement already satisfied: jsonschema>=2.6 in /usr/local/lib/python3.11/dist-packages (from nbformat>=5.7.0->open3d->leonardo_toolset) (4.25.0)
Requirement already satisfied: jupyter-core!=5.0.*,>=4.12 in /usr/local/lib/python3.11/dist-packages (from nbformat>=5.7.0->open3d->leonardo_toolset) (5.8.1)
Collecting pydantic-extra-types (from ome-types>=0.4.0->ome-types[lxml]>=0.4.0->bioio<2->leonardo_toolset)
Downloading pydantic_extra_types-2.10.5-py3-none-any.whl.metadata (3.9 kB)
Collecting xsdata<24.4,>=23.6 (from ome-types>=0.4.0->ome-types[lxml]>=0.4.0->bioio<2->leonardo_toolset)
Downloading xsdata-24.3.1-py3-none-any.whl.metadata (6.3 kB)
Requirement already satisfied: lxml>=4.8.0 in /usr/local/lib/python3.11/dist-packages (from ome-types[lxml]>=0.4.0->bioio<2->leonardo_toolset) (5.4.0)
Requirement already satisfied: aiohttp<4 in /usr/local/lib/python3.11/dist-packages (from ome-zarr>=0.6.1->bioio<2->leonardo_toolset) (3.12.14)
Collecting pydantic-zarr (from ome-zarr-models>=0.1.1->bioio<2->leonardo_toolset)
Downloading pydantic_zarr-0.8.0-py3-none-any.whl.metadata (3.2 kB)
Collecting pydantic>=1.10.0 (from bioio-ome-tiff<1.2->leonardo_toolset)
Downloading pydantic-2.11.4-py3-none-any.whl.metadata (66 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.6/66.6 kB 6.5 MB/s eta 0:00:00
Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas->antspyx->leonardo_toolset) (2025.2)
Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas->antspyx->leonardo_toolset) (2025.2)
Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.11/dist-packages (from pydantic>=1.10.0->bioio-ome-tiff<1.2->leonardo_toolset) (0.7.0)
Requirement already satisfied: pydantic-core==2.33.2 in /usr/local/lib/python3.11/dist-packages (from pydantic>=1.10.0->bioio-ome-tiff<1.2->leonardo_toolset) (2.33.2)
Requirement already satisfied: typing-inspection>=0.4.0 in /usr/local/lib/python3.11/dist-packages (from pydantic>=1.10.0->bioio-ome-tiff<1.2->leonardo_toolset) (0.4.1)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.7->matplotlib->leonardo_toolset) (1.17.0)
Requirement already satisfied: joblib>=1.2.0 in /usr/local/lib/python3.11/dist-packages (from scikit-learn->antspyx->leonardo_toolset) (1.5.1)
Requirement already satisfied: threadpoolctl>=3.1.0 in /usr/local/lib/python3.11/dist-packages (from scikit-learn->antspyx->leonardo_toolset) (3.6.0)
INFO: pip is looking at multiple versions of tifffile[zarr] to determine which version is compatible with other requirements. This could take a while.
Collecting tifffile[zarr]>=2023.7.10 (from bioio-tifffile->leonardo_toolset)
Downloading tifffile-2025.6.1-py3-none-any.whl.metadata (32 kB)
Downloading tifffile-2025.5.26-py3-none-any.whl.metadata (32 kB)
Downloading tifffile-2025.5.24-py3-none-any.whl.metadata (31 kB)
Downloading tifffile-2025.5.21-py3-none-any.whl.metadata (31 kB)
Downloading tifffile-2025.5.10-py3-none-any.whl.metadata (31 kB)
Collecting asciitree (from zarr>=2.6.0->bioio<2->leonardo_toolset)
Downloading asciitree-0.3.3.tar.gz (4.0 kB)
Preparing metadata (setup.py) ... done
Collecting fasteners (from zarr>=2.6.0->bioio<2->leonardo_toolset)
Downloading fasteners-0.19-py3-none-any.whl.metadata (4.9 kB)
Collecting numcodecs!=0.14.0,!=0.14.1,<0.16,>=0.10.0 (from zarr>=2.6.0->bioio<2->leonardo_toolset)
Downloading numcodecs-0.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.9 kB)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests->antspyx->leonardo_toolset) (3.4.2)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests->antspyx->leonardo_toolset) (3.10)
Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests->antspyx->leonardo_toolset) (2.5.0)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests->antspyx->leonardo_toolset) (2025.7.14)
Requirement already satisfied: patsy>=0.5.6 in /usr/local/lib/python3.11/dist-packages (from statsmodels->antspyx->leonardo_toolset) (1.0.1)
Collecting elementpath<6.0.0,>=5.0.1 (from xmlschema->bioio-ome-tiff<1.2->leonardo_toolset)
Downloading elementpath-5.0.3-py3-none-any.whl.metadata (7.0 kB)
Requirement already satisfied: aiohappyeyeballs>=2.5.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp<4->ome-zarr>=0.6.1->bioio<2->leonardo_toolset) (2.6.1)
Requirement already satisfied: aiosignal>=1.4.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp<4->ome-zarr>=0.6.1->bioio<2->leonardo_toolset) (1.4.0)
Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp<4->ome-zarr>=0.6.1->bioio<2->leonardo_toolset) (25.3.0)
Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.11/dist-packages (from aiohttp<4->ome-zarr>=0.6.1->bioio<2->leonardo_toolset) (1.7.0)
Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.11/dist-packages (from aiohttp<4->ome-zarr>=0.6.1->bioio<2->leonardo_toolset) (6.6.3)
Requirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp<4->ome-zarr>=0.6.1->bioio<2->leonardo_toolset) (0.3.2)
Requirement already satisfied: yarl<2.0,>=1.17.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp<4->ome-zarr>=0.6.1->bioio<2->leonardo_toolset) (1.20.1)
Requirement already satisfied: distributed==2025.5.0 in /usr/local/lib/python3.11/dist-packages (from dask[array,distributed]!=2022.5.1,>=2021.4.1->bioio-base==1.0.7->bioio<2->leonardo_toolset) (2025.5.0)
Requirement already satisfied: locket>=1.0.0 in /usr/local/lib/python3.11/dist-packages (from distributed==2025.5.0->dask[array,distributed]!=2022.5.1,>=2021.4.1->bioio-base==1.0.7->bioio<2->leonardo_toolset) (1.0.0)
Requirement already satisfied: msgpack>=1.0.2 in /usr/local/lib/python3.11/dist-packages (from distributed==2025.5.0->dask[array,distributed]!=2022.5.1,>=2021.4.1->bioio-base==1.0.7->bioio<2->leonardo_toolset) (1.1.1)
Requirement already satisfied: sortedcontainers>=2.0.5 in /usr/local/lib/python3.11/dist-packages (from distributed==2025.5.0->dask[array,distributed]!=2022.5.1,>=2021.4.1->bioio-base==1.0.7->bioio<2->leonardo_toolset) (2.4.0)
Requirement already satisfied: tblib>=1.6.0 in /usr/local/lib/python3.11/dist-packages (from distributed==2025.5.0->dask[array,distributed]!=2022.5.1,>=2021.4.1->bioio-base==1.0.7->bioio<2->leonardo_toolset) (3.1.0)
Requirement already satisfied: tornado>=6.2.0 in /usr/local/lib/python3.11/dist-packages (from distributed==2025.5.0->dask[array,distributed]!=2022.5.1,>=2021.4.1->bioio-base==1.0.7->bioio<2->leonardo_toolset) (6.4.2)
Requirement already satisfied: zict>=3.0.0 in /usr/local/lib/python3.11/dist-packages (from distributed==2025.5.0->dask[array,distributed]!=2022.5.1,>=2021.4.1->bioio-base==1.0.7->bioio<2->leonardo_toolset) (3.0.0)
Collecting s3fs (from fsspec[s3]!=2021.07.0,!=2023.9.0,>=0.8->ome-zarr>=0.6.1->bioio<2->leonardo_toolset)
Downloading s3fs-2025.7.0-py3-none-any.whl.metadata (1.4 kB)
Requirement already satisfied: zipp>=3.20 in /usr/local/lib/python3.11/dist-packages (from importlib-metadata->dash>=2.6.0->open3d->leonardo_toolset) (3.23.0)
Collecting jedi>=0.16 (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d->leonardo_toolset)
Downloading jedi-0.19.2-py2.py3-none-any.whl.metadata (22 kB)
Requirement already satisfied: decorator in /usr/local/lib/python3.11/dist-packages (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d->leonardo_toolset) (4.4.2)
Requirement already satisfied: pickleshare in /usr/local/lib/python3.11/dist-packages (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d->leonardo_toolset) (0.7.5)
Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.11/dist-packages (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d->leonardo_toolset) (3.0.51)
Requirement already satisfied: pygments in /usr/local/lib/python3.11/dist-packages (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d->leonardo_toolset) (2.19.2)
Requirement already satisfied: backcall in /usr/local/lib/python3.11/dist-packages (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d->leonardo_toolset) (0.2.0)
Requirement already satisfied: matplotlib-inline in /usr/local/lib/python3.11/dist-packages (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d->leonardo_toolset) (0.1.7)
Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.11/dist-packages (from ipython>=6.1.0->ipywidgets>=8.0.4->open3d->leonardo_toolset) (4.9.0)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.11/dist-packages (from jsonschema>=2.6->nbformat>=5.7.0->open3d->leonardo_toolset) (2025.4.1)
Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.11/dist-packages (from jsonschema>=2.6->nbformat>=5.7.0->open3d->leonardo_toolset) (0.36.2)
Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.11/dist-packages (from jsonschema>=2.6->nbformat>=5.7.0->open3d->leonardo_toolset) (0.26.0)
Requirement already satisfied: platformdirs>=2.5 in /usr/local/lib/python3.11/dist-packages (from jupyter-core!=5.0.*,>=4.12->nbformat>=5.7.0->open3d->leonardo_toolset) (4.3.8)
Collecting deprecated (from numcodecs!=0.14.0,!=0.14.1,<0.16,>=0.10.0->zarr>=2.6.0->bioio<2->leonardo_toolset)
Downloading Deprecated-1.2.18-py2.py3-none-any.whl.metadata (5.7 kB)
Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.11/dist-packages (from plotly>=5.0.0->dash>=2.6.0->open3d->leonardo_toolset) (8.5.0)
INFO: pip is looking at multiple versions of pydantic-zarr to determine which version is compatible with other requirements. This could take a while.
Collecting pydantic-zarr (from ome-zarr-models>=0.1.1->bioio<2->leonardo_toolset)
Downloading pydantic_zarr-0.7.0-py3-none-any.whl.metadata (2.6 kB)
Collecting eval-type-backport<0.2.0,>=0.1.3 (from pydantic-zarr->ome-zarr-models>=0.1.1->bioio<2->leonardo_toolset)
Downloading eval_type_backport-0.1.3-py3-none-any.whl.metadata (1.9 kB)
Requirement already satisfied: parso<0.9.0,>=0.8.4 in /usr/local/lib/python3.11/dist-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets>=8.0.4->open3d->leonardo_toolset) (0.8.4)
Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.11/dist-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets>=8.0.4->open3d->leonardo_toolset) (0.7.0)
Requirement already satisfied: wcwidth in /usr/local/lib/python3.11/dist-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython>=6.1.0->ipywidgets>=8.0.4->open3d->leonardo_toolset) (0.2.13)
Requirement already satisfied: wrapt<2,>=1.10 in /usr/local/lib/python3.11/dist-packages (from deprecated->numcodecs!=0.14.0,!=0.14.1,<0.16,>=0.10.0->zarr>=2.6.0->bioio<2->leonardo_toolset) (1.17.2)
Collecting aiobotocore<3.0.0,>=2.5.4 (from s3fs->fsspec[s3]!=2021.07.0,!=2023.9.0,>=0.8->ome-zarr>=0.6.1->bioio<2->leonardo_toolset)
Downloading aiobotocore-2.23.2-py3-none-any.whl.metadata (25 kB)
INFO: pip is looking at multiple versions of s3fs to determine which version is compatible with other requirements. This could take a while.
Collecting s3fs (from fsspec[s3]!=2021.07.0,!=2023.9.0,>=0.8->ome-zarr>=0.6.1->bioio<2->leonardo_toolset)
Downloading s3fs-2025.5.1-py3-none-any.whl.metadata (1.9 kB)
Downloading s3fs-2025.5.0-py3-none-any.whl.metadata (1.9 kB)
Downloading s3fs-2025.3.2-py3-none-any.whl.metadata (1.9 kB)
Downloading s3fs-2025.3.1-py3-none-any.whl.metadata (1.9 kB)
Downloading s3fs-2025.3.0-py3-none-any.whl.metadata (1.9 kB)
Collecting aioitertools<1.0.0,>=0.5.1 (from aiobotocore<3.0.0,>=2.5.4->s3fs->fsspec[s3]!=2021.07.0,!=2023.9.0,>=0.8->ome-zarr>=0.6.1->bioio<2->leonardo_toolset)
Downloading aioitertools-0.12.0-py3-none-any.whl.metadata (3.8 kB)
Collecting botocore<1.39.9,>=1.39.7 (from aiobotocore<3.0.0,>=2.5.4->s3fs->fsspec[s3]!=2021.07.0,!=2023.9.0,>=0.8->ome-zarr>=0.6.1->bioio<2->leonardo_toolset)
Downloading botocore-1.39.8-py3-none-any.whl.metadata (5.7 kB)
Collecting jmespath<2.0.0,>=0.7.1 (from aiobotocore<3.0.0,>=2.5.4->s3fs->fsspec[s3]!=2021.07.0,!=2023.9.0,>=0.8->ome-zarr>=0.6.1->bioio<2->leonardo_toolset)
Downloading jmespath-1.0.1-py3-none-any.whl.metadata (7.6 kB)
Downloading leonardo_toolset-1.0.1-py3-none-any.whl (96 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.8/96.8 kB 9.6 MB/s eta 0:00:00
Downloading bioio-1.6.1-py3-none-any.whl (87 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 87.8/87.8 kB 8.8 MB/s eta 0:00:00
Downloading bioio_base-1.0.7-py3-none-any.whl (33 kB)
Downloading bioio_ome_tiff-1.1.0-py3-none-any.whl (24 kB)
Downloading antspyx-0.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 22.4/22.4 MB 87.8 MB/s eta 0:00:00
Downloading bioio_tifffile-1.3.0-py3-none-any.whl (11 kB)
Downloading dm_haiku-0.0.14-py3-none-any.whl (373 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 373.8/373.8 kB 33.4 MB/s eta 0:00:00
Downloading jaxwt-0.1.1-py3-none-any.whl (26 kB)
Downloading open3d-0.19.0-cp311-cp311-manylinux_2_31_x86_64.whl (447.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 447.7/447.7 MB 3.8 MB/s eta 0:00:00
Downloading ptwt-1.0.0-py3-none-any.whl (67 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 67.2/67.2 kB 5.8 MB/s eta 0:00:00
Downloading simpleitk-2.5.2-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (52.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 52.6/52.6 MB 16.6 MB/s eta 0:00:00
Downloading nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl (363.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 363.4/363.4 MB 3.9 MB/s eta 0:00:00
Downloading nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (13.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.8/13.8 MB 68.4 MB/s eta 0:00:00
Downloading nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (24.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 24.6/24.6 MB 34.8 MB/s eta 0:00:00
Downloading nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (883 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 883.7/883.7 kB 46.2 MB/s eta 0:00:00
Downloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl (664.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 664.8/664.8 MB 1.3 MB/s eta 0:00:00
Downloading nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl (211.5 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 211.5/211.5 MB 6.5 MB/s eta 0:00:00
Downloading nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl (56.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.3/56.3 MB 12.7 MB/s eta 0:00:00
Downloading nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl (127.9 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 127.9/127.9 MB 7.4 MB/s eta 0:00:00
Downloading nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl (207.5 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 207.5/207.5 MB 5.2 MB/s eta 0:00:00
Downloading nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (21.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 21.1/21.1 MB 88.8 MB/s eta 0:00:00
Downloading dash-3.2.0-py3-none-any.whl (7.9 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.9/7.9 MB 117.7 MB/s eta 0:00:00
Downloading imagecodecs-2025.8.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (26.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 26.4/26.4 MB 53.1 MB/s eta 0:00:00
Downloading ipywidgets-8.1.7-py3-none-any.whl (139 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 139.8/139.8 kB 12.7 MB/s eta 0:00:00
Downloading jmp-0.0.4-py3-none-any.whl (18 kB)
Downloading ome_types-0.6.1-py3-none-any.whl (245 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 245.1/245.1 kB 23.0 MB/s eta 0:00:00
Downloading ome_zarr-0.11.1-py3-none-any.whl (40 kB)
Downloading ome_zarr_models-0.1.10-py3-none-any.whl (31 kB)
Downloading pydantic-2.11.4-py3-none-any.whl (443 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 443.9/443.9 kB 37.2 MB/s eta 0:00:00
Downloading scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (37.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 37.7/37.7 MB 16.5 MB/s eta 0:00:00
Downloading semver-3.0.4-py3-none-any.whl (17 kB)
Downloading tifffile-2025.5.10-py3-none-any.whl (226 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 226.5/226.5 kB 22.1 MB/s eta 0:00:00
Downloading zarr-2.18.7-py3-none-any.whl (211 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 211.3/211.3 kB 19.6 MB/s eta 0:00:00
Downloading addict-2.4.0-py3-none-any.whl (3.8 kB)
Downloading configargparse-1.7.1-py3-none-any.whl (25 kB)
Downloading pyquaternion-0.9.9-py3-none-any.whl (14 kB)
Downloading xmlschema-4.1.0-py3-none-any.whl (458 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 458.5/458.5 kB 36.3 MB/s eta 0:00:00
Downloading comm-0.2.3-py3-none-any.whl (7.3 kB)
Downloading elementpath-5.0.3-py3-none-any.whl (245 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 245.6/245.6 kB 22.8 MB/s eta 0:00:00
Downloading numcodecs-0.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.9 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.9/8.9 MB 127.4 MB/s eta 0:00:00
Downloading widgetsnbextension-4.0.14-py3-none-any.whl (2.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.2/2.2 MB 87.4 MB/s eta 0:00:00
Downloading xsdata-24.3.1-py3-none-any.whl (224 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 224.1/224.1 kB 20.9 MB/s eta 0:00:00
Downloading fasteners-0.19-py3-none-any.whl (18 kB)
Downloading pydantic_extra_types-2.10.5-py3-none-any.whl (38 kB)
Downloading pydantic_zarr-0.7.0-py3-none-any.whl (15 kB)
Downloading retrying-1.4.2-py3-none-any.whl (10 kB)
Downloading eval_type_backport-0.1.3-py3-none-any.whl (5.6 kB)
Downloading jedi-0.19.2-py2.py3-none-any.whl (1.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 72.5 MB/s eta 0:00:00
Downloading Deprecated-1.2.18-py2.py3-none-any.whl (10.0 kB)
Downloading s3fs-2025.3.0-py3-none-any.whl (30 kB)
Downloading aiobotocore-2.23.2-py3-none-any.whl (84 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 84.3/84.3 kB 8.2 MB/s eta 0:00:00
Downloading aioitertools-0.12.0-py3-none-any.whl (24 kB)
Downloading botocore-1.39.8-py3-none-any.whl (13.9 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.9/13.9 MB 101.3 MB/s eta 0:00:00
Downloading jmespath-1.0.1-py3-none-any.whl (20 kB)
Building wheels for collected packages: asciitree
Building wheel for asciitree (setup.py) ... done
Created wheel for asciitree: filename=asciitree-0.3.3-py3-none-any.whl size=5031 sha256=61b421d9c63ef2ebff1758de4faa28dbf8b8acbc6eb4f3c7d25190677149244e
Stored in directory: /root/.cache/pip/wheels/71/c1/da/23077eb3b87d24d6f3852ed1ed1a1ac2d3c885ad6ebd2b4a07
Successfully built asciitree
Installing collected packages: SimpleITK, asciitree, addict, xsdata, widgetsnbextension, tifffile, semver, scipy, retrying, pyquaternion, nvidia-nvjitlink-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cuda-runtime-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-cupti-cu12, nvidia-cublas-cu12, jmp, jmespath, jedi, imagecodecs, fasteners, eval-type-backport, elementpath, deprecated, configargparse, comm, aioitertools, xmlschema, pydantic, nvidia-cusparse-cu12, nvidia-cudnn-cu12, numcodecs, dm-haiku, botocore, zarr, pydantic-extra-types, nvidia-cusolver-cu12, ipywidgets, dash, aiobotocore, s3fs, pydantic-zarr, ome-types, jaxwt, antspyx, ptwt, open3d, ome-zarr-models, bioio-base, ome-zarr, bioio-tifffile, bioio-ome-tiff, bioio, leonardo_toolset
Attempting uninstall: widgetsnbextension
Found existing installation: widgetsnbextension 3.6.10
Uninstalling widgetsnbextension-3.6.10:
Successfully uninstalled widgetsnbextension-3.6.10
Attempting uninstall: tifffile
Found existing installation: tifffile 2025.6.11
Uninstalling tifffile-2025.6.11:
Successfully uninstalled tifffile-2025.6.11
Attempting uninstall: scipy
Found existing installation: scipy 1.16.0
Uninstalling scipy-1.16.0:
Successfully uninstalled scipy-1.16.0
Attempting uninstall: nvidia-nvjitlink-cu12
Found existing installation: nvidia-nvjitlink-cu12 12.5.82
Uninstalling nvidia-nvjitlink-cu12-12.5.82:
Successfully uninstalled nvidia-nvjitlink-cu12-12.5.82
Attempting uninstall: nvidia-curand-cu12
Found existing installation: nvidia-curand-cu12 10.3.6.82
Uninstalling nvidia-curand-cu12-10.3.6.82:
Successfully uninstalled nvidia-curand-cu12-10.3.6.82
Attempting uninstall: nvidia-cufft-cu12
Found existing installation: nvidia-cufft-cu12 11.2.3.61
Uninstalling nvidia-cufft-cu12-11.2.3.61:
Successfully uninstalled nvidia-cufft-cu12-11.2.3.61
Attempting uninstall: nvidia-cuda-runtime-cu12
Found existing installation: nvidia-cuda-runtime-cu12 12.5.82
Uninstalling nvidia-cuda-runtime-cu12-12.5.82:
Successfully uninstalled nvidia-cuda-runtime-cu12-12.5.82
Attempting uninstall: nvidia-cuda-nvrtc-cu12
Found existing installation: nvidia-cuda-nvrtc-cu12 12.5.82
Uninstalling nvidia-cuda-nvrtc-cu12-12.5.82:
Successfully uninstalled nvidia-cuda-nvrtc-cu12-12.5.82
Attempting uninstall: nvidia-cuda-cupti-cu12
Found existing installation: nvidia-cuda-cupti-cu12 12.5.82
Uninstalling nvidia-cuda-cupti-cu12-12.5.82:
Successfully uninstalled nvidia-cuda-cupti-cu12-12.5.82
Attempting uninstall: nvidia-cublas-cu12
Found existing installation: nvidia-cublas-cu12 12.5.3.2
Uninstalling nvidia-cublas-cu12-12.5.3.2:
Successfully uninstalled nvidia-cublas-cu12-12.5.3.2
Attempting uninstall: pydantic
Found existing installation: pydantic 2.11.7
Uninstalling pydantic-2.11.7:
Successfully uninstalled pydantic-2.11.7
Attempting uninstall: nvidia-cusparse-cu12
Found existing installation: nvidia-cusparse-cu12 12.5.1.3
Uninstalling nvidia-cusparse-cu12-12.5.1.3:
Successfully uninstalled nvidia-cusparse-cu12-12.5.1.3
Attempting uninstall: nvidia-cudnn-cu12
Found existing installation: nvidia-cudnn-cu12 9.3.0.75
Uninstalling nvidia-cudnn-cu12-9.3.0.75:
Successfully uninstalled nvidia-cudnn-cu12-9.3.0.75
Attempting uninstall: nvidia-cusolver-cu12
Found existing installation: nvidia-cusolver-cu12 11.6.3.83
Uninstalling nvidia-cusolver-cu12-11.6.3.83:
Successfully uninstalled nvidia-cusolver-cu12-11.6.3.83
Attempting uninstall: ipywidgets
Found existing installation: ipywidgets 7.7.1
Uninstalling ipywidgets-7.7.1:
Successfully uninstalled ipywidgets-7.7.1
Successfully installed SimpleITK-2.5.2 addict-2.4.0 aiobotocore-2.23.2 aioitertools-0.12.0 antspyx-0.6.1 asciitree-0.3.3 bioio-1.6.1 bioio-base-1.0.7 bioio-ome-tiff-1.1.0 bioio-tifffile-1.3.0 botocore-1.39.8 comm-0.2.3 configargparse-1.7.1 dash-3.2.0 deprecated-1.2.18 dm-haiku-0.0.14 elementpath-5.0.3 eval-type-backport-0.1.3 fasteners-0.19 imagecodecs-2025.8.2 ipywidgets-8.1.7 jaxwt-0.1.1 jedi-0.19.2 jmespath-1.0.1 jmp-0.0.4 leonardo_toolset-1.0.1 numcodecs-0.15.1 nvidia-cublas-cu12-12.4.5.8 nvidia-cuda-cupti-cu12-12.4.127 nvidia-cuda-nvrtc-cu12-12.4.127 nvidia-cuda-runtime-cu12-12.4.127 nvidia-cudnn-cu12-9.1.0.70 nvidia-cufft-cu12-11.2.1.3 nvidia-curand-cu12-10.3.5.147 nvidia-cusolver-cu12-11.6.1.9 nvidia-cusparse-cu12-12.3.1.170 nvidia-nvjitlink-cu12-12.4.127 ome-types-0.6.1 ome-zarr-0.11.1 ome-zarr-models-0.1.10 open3d-0.19.0 ptwt-1.0.0 pydantic-2.11.4 pydantic-extra-types-2.10.5 pydantic-zarr-0.7.0 pyquaternion-0.9.9 retrying-1.4.2 s3fs-2025.3.0 scipy-1.15.3 semver-3.0.4 tifffile-2025.5.10 widgetsnbextension-4.0.14 xmlschema-4.1.0 xsdata-24.3.1 zarr-2.18.7
[3]:
# load sample dataset
import pooch
from pathlib import Path
import tifffile
data_path = "./"
source_part1 = pooch.retrieve(
url="https://zenodo.org/records/14215090/files/D1_I0.tif",
known_hash="md5:ef10aa423ffc5175cd44284206794ec5",
fname="D1_I0.tif",
path=data_path / Path("download"),
)
source_part2 = pooch.retrieve(
url="https://zenodo.org/records/14215090/files/D1_I1.tif",
known_hash="md5:b3d68aea26ce0b1e26324f2f588207e0",
fname="D1_I1.tif",
path=data_path / Path("download"),
)
X0 = tifffile.imread(source_part1)
X1 = tifffile.imread(source_part2)
Start fusion#
First, let’s visualize the maximum intensity projection of the two datasets to figure out the orientation of the system:
[4]:
import matplotlib.pyplot as plt
fig, (ax1, ax2) = plt.subplots(1, 2, dpi=150)
ax1.imshow(X0.max(0))
ax1.set_title("MIP of X0", fontsize=8, pad=1)
ax1.axis("off")
ax2.imshow(X1.max(0))
ax2.set_title("MIP of X1", fontsize=8, pad=1)
ax2.axis("off")
plt.show()
We can observe that light sheet comes from top and bottom (in the image space) for volume X0 and X1, respectively. Next, we can initialize a FUSE_illu object. Here, we initilize FUSE_illu using default parameters. A more advanced list of available arguments can be found in section API reference
[5]:
from leonardo_toolset import FUSE_illu
model = FUSE_illu()
[Leonardo-Fuse] Backend: PyTorch | Device: cuda
Finally, we start fusion by calling train function. datasets X0 and X1 are fed as top_illu_data and bottom_illu_data, respectively, corresponding to their illumination orientation. The fusion result, together with a few intermidiate results, will be saved in folder save_folder under path save_path.
[6]:
# start fusion
save_path = "./"
save_folder = "fuse_illu_result"
out = model.train(top_illu_data = X0,
bottom_illu_data = X1,
save_path = save_path,
save_folder = save_folder,
)
Read in...
Localize sample...
startX endX startY endY maxv
top 0 1024 0 1024 3454.000244
bottom 0 1024 0 1024 2523.999512
in summary 0.0 1024.0 0.0 1024.0 3454.000244
Calculate volumetric measurements...
top/left view: minimum intensity = 57.0, maximum intensity = 2537.0, OTSU threshold = 149.0
bottom/right view: minimum intensity = 61.0, maximum intensity = 2049.0, OTSU threshold = 144.0
Extract features...
NSCT: 100%|██████████| 250/250 [00:10<00:00, 24.68it/s]
Segment sample...
watershed (125): 100%|██████████| 250/250 [00:10<00:00, 24.13it/s]
refine pair-wise segmentation result: 100%|██████████| 250/250 [00:05<00:00, 45.62it/s]
refine along z: 100%|██████████| 2704/2704 [00:02<00:00, 933.75it/s]
Dual-illumination fusion...
to GPU...
No.049 iteration EM: maximum changes = 1.0
Stitching...
fusion: 100%|██████████| 250/250 [00:13<00:00, 18.78it/s]
Save...
Note 1: inputs with file names provided#
In reality, to facilitate batch processing, users can also feed in data-to-be-fused without reading them into the memory. To do so, please save the data-to-be-fused in such structure:
data_path
├─ I0_D1.tif
├─ I1_D1.tif
and call the train function as follows:
out = model.train(data_path = data_path,
top_illu_data = "I0_D1.tif",
bottom_illu_data = "I1_D1.tif",
save_path = save_path,
save_folder = save_folder,
)
Note 2: fuse datasets with left/right illumination orientations#
Depends on the system, the illumination orientation in then image space can also from left or right. In this way, input datasets should be called by left_illu_data and right_illu_data, instead of top_illu_data and bottom_illu_data:
out = model.train(left_illu_data = X0, # suppose X0 is illuminated from the left
right_illu_data = X1, # suppose X0 is illuminated from the right
save_path = save_path,
save_folder = save_folder,
)