Skip to content

Multiscale image visualization #352

@Mr-Milk

Description

@Mr-Milk

Hi! I was testing with visualization of multiscale images. However, I cannot make this simple example work. Any tips?

I'm using the latest 0.5.5 release version.

Example code:

import numpy as np
from spatialdata import SpatialData
from spatialdata.models import Image2DModel

# A sample multiscale image
img = np.random.randint(0, 255, size=(3,2000, 2000), dtype=np.uint8)
multiscale_image = Image2DModel.parse(img, dims=("c","y","x"), c_coords=("r", "g", "b"), scale_factors=[2,4], chunks=(3,256,256))
sdata = SpatialData(images={"img": multiscale_image})

from napari_spatialdata import Interactive
interactive = Interactive(sdata)
interactive.run()

The error will occur once I select the 'img' element in napari.

Traceback (most recent call last):
  File "/.venv/lib/python3.12/site-packages/napari_spatialdata/_sdata_widgets.py", line 145, in run
    layer = self.sdata_widget.viewer_model.get_sdata_image(
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/.venv/lib/python3.12/site-packages/napari_spatialdata/_viewer.py", line 468, in get_sdata_image
    rgb_image, rgb = _adjust_channels_order(element=sdata.images[original_name])
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/.venv/lib/python3.12/site-packages/napari_spatialdata/utils/_utils.py", line 262, in _adjust_channels_order
    new_raster = new_raster.msi.reindex_data_arrays({"c": ["r", "g", "b", "a"][: len(c_coords)]})
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/.venv/lib/python3.12/site-packages/multiscale_spatial_image/multiscale_spatial_image.py", line 188, in reindex_data_arrays
    return self._dt.map_over_datasets(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/.venv/lib/python3.12/site-packages/xarray/core/datatree.py", line 1462, in map_over_datasets
    return map_over_datasets(func, self, *args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/.venv/lib/python3.12/site-packages/xarray/core/datatree_mapping.py", line 103, in map_over_datasets
    results = func_with_error_context(*node_dataset_args)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/.venv/lib/python3.12/site-packages/xarray/core/datatree_mapping.py", line 133, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/.venv/lib/python3.12/site-packages/multiscale_spatial_image/utils.py", line 22, in _func
    return func(ds, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/.venv/lib/python3.12/site-packages/multiscale_spatial_image/operations/operations.py", line 18, in reindex_data_arrays
    return ds["image"].reindex(*args, **kwargs).to_dataset()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: DataArray.reindex() takes from 1 to 2 positional arguments but 6 were given
Raised whilst mapping function over node with path 'scale0'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions