scverse / spatialdata

An open and interoperable data framework for spatial omics data
https://spatialdata.scverse.org/
BSD 3-Clause "New" or "Revised" License
233 stars 43 forks source link

Error loading sample 10X Xenium dataset #730

Closed alexmascension closed 1 week ago

alexmascension commented 1 week ago

Describe the bug I'm loading this dataset from 10X Xenium repo: https://www.10xgenomics.com/datasets/human-skin-data-xenium-human-multi-tissue-and-cancer-panel-1-standard

I load it based on the tutorial:

import spatialdata as sd
from spatialdata_io import xenium

xenium_path = "data/Xenium_A1"
zarr_path = "data/XeniumA1.zarr"

sdata = xenium(xenium_path,
                        n_jobs=8,
                        cells_boundaries=True,
                        nucleus_boundaries=True,
                        morphology_focus=True,
                        cells_as_circles=True,
                    )

And I get the following error:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[13], [line 1](vscode-notebook-cell:?execution_count=13&line=1)
----> [1](vscode-notebook-cell:?execution_count=13&line=1) sdata = xenium(xenium_path,
      [2](vscode-notebook-cell:?execution_count=13&line=2)                         n_jobs=8,
      [3](vscode-notebook-cell:?execution_count=13&line=3)                         cell_boundaries=True,
      [4](vscode-notebook-cell:?execution_count=13&line=4)                         nucleus_boundaries=True,
      [5](vscode-notebook-cell:?execution_count=13&line=5)                         morphology_focus=True,
      [6](vscode-notebook-cell:?execution_count=13&line=6)                         cells_as_circles=True,
      [7](vscode-notebook-cell:?execution_count=13&line=7)                     )

File c:\Programs\miniconda3\envs\spatial\Lib\site-packages\spatialdata_io\_utils.py:46, in deprecation_alias.<locals>.deprecation_decorator.<locals>.wrapper(*args, **kwargs)
     [44](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/_utils.py:44) class_name = f.__qualname__
     [45](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/_utils.py:45) rename_kwargs(f.__name__, kwargs, aliases, class_name)
---> [46](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/_utils.py:46) return f(*args, **kwargs)

File c:\Programs\miniconda3\envs\spatial\Lib\site-packages\spatialdata_io\readers\xenium.py:274, in xenium(path, cells_boundaries, nucleus_boundaries, cells_as_circles, cells_labels, nucleus_labels, transcripts, morphology_mip, morphology_focus, aligned_images, cells_table, n_jobs, imread_kwargs, image_models_kwargs, labels_models_kwargs)
    [272](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:272) if version is None or version < packaging.version.parse("2.0.0"):
    [273](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:273)     if morphology_mip:
--> [274](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:274)         images["morphology_mip"] = _get_images(
    [275](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:275)             path,
    [276](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:276)             XeniumKeys.MORPHOLOGY_MIP_FILE,
    [277](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:277)             imread_kwargs,
    [278](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:278)             image_models_kwargs,
    [279](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:279)         )
    [280](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:280)     if morphology_focus:
    [281](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:281)         images["morphology_focus"] = _get_images(
    [282](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:282)             path,
    [283](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:283)             XeniumKeys.MORPHOLOGY_FOCUS_FILE,
    [284](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:284)             imread_kwargs,
    [285](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:285)             image_models_kwargs,
    [286](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:286)         )

File c:\Programs\miniconda3\envs\spatial\Lib\site-packages\spatialdata_io\readers\xenium.py:564, in _get_images(path, file, imread_kwargs, image_models_kwargs)
    [558](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:558) if "c_coords" in image_models_kwargs and "dummy" in image_models_kwargs["c_coords"]:
    [559](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:559)     # Napari currently interprets 4 channel images as RGB; a series of PRs to fix this is almost ready but they will
    [560](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:560)     # not be merged soon.
    [561](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:561)     # Here, since the new data from the xenium analyzer version 2.0.0 gives 4-channel images that are not RGBA,
    [562](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:562)     # let's add a dummy channel as a temporary workaround.
    [563](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:563)     image = da.concatenate([image, da.zeros_like(image[0:1])], axis=0)
--> [564](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:564) return Image2DModel.parse(
    [565](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:565)     image, transformations={"global": Identity()}, dims=("c", "y", "x"), rgb=None, **image_models_kwargs
    [566](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata_io/readers/xenium.py:566) )

File c:\Programs\miniconda3\envs\spatial\Lib\site-packages\spatialdata\models\models.py:189, in RasterSchema.parse(cls, data, dims, transformations, scale_factors, method, chunks, **kwargs)
    [183](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata/models/models.py:183)         raise ValueError(
    [184](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata/models/models.py:184)             f"Cannot transpose arrays to match `dims`: {dims}.",
    [185](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata/models/models.py:185)             "Try to reshape `data` or `dims`.",
    [186](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata/models/models.py:186)         ) from e
    [188](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata/models/models.py:188) # finally convert to spatial image
--> [189](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata/models/models.py:189) data = to_spatial_image(array_like=data, dims=cls.dims.dims, **kwargs)
    [190](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata/models/models.py:190) # parse transformations
    [191](file:///C:/Programs/miniconda3/envs/spatial/Lib/site-packages/spatialdata/models/models.py:191) _parse_transformations(data, transformations)

TypeError: to_spatial_image() got an unexpected keyword argument 'rgb'

Desktop (optional):

Installed modules

spatial-image             1.0.0              pyhd8ed1ab_0    conda-forge
spatialdata               0.2.3              pyhd8ed1ab_0    conda-forge
spatialdata-io            0.1.5              pyhd8ed1ab_0    conda-forge
spatialdata-plot          0.2.6              pyhd8ed1ab_0    conda-forge
scanpy                    1.10.3             pyhd8ed1ab_0    conda-forge
LucaMarconato commented 1 week ago

Hi, please update to spatial-image==1.1.0 and the bug will be solved. I now changed the min required version of spatial-image (for spatialdata), to 1.1.0, so at the next release this problem will not occur.

alexmascension commented 1 week ago

Perfect. Thanks!

asmitaL99 commented 1 week ago

Hi , I updated it to 1.1.0 but I still see the same error !