scverse / scverse/spatialdata

Read xenium data get TypeError: unhashable type: 'list'

Open
#937 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
394
Forks
95
Avg merge
4d 3h
Merged PRs (30d)
7

Description

I performed the installation using the following approach:

# Python==3.9.0
# spatialdata                   0.2.5.post0
# spatialdata-io                0.1.5
# spatialdata-plot              0.2.7

    pip install spatialdata
    pip install "spatialdata[extra]"

When running the following code, an error occurred. Data download from https://cf.10xgenomics.com/samples/xenium/3.0.0/Xenium_V1_Human_Lung_Cancer_FFPE/Xenium_V1_Human_Lung_Cancer_FFPE_outs.zip

import scanpy as sc
import spatialdata_plot
from spatialdata_io import xenium
from spatialdata_io.experimental import to_legacy_anndata
import matplotlib.pyplot as plt
from matplotlib.pyplot import rc_context

sdata = xenium(
    path='/home/test/Xenium_V1_humanLung_Cancer_FFPE_outs',
    cells_boundaries=True,
    nucleus_boundaries=True,
    cells_as_circles=True,
    aligned_images=True,
    n_jobs=8,
)
print(sdata)
INFO     reading                                                                       
         /home/xxx/test/Xenium_V1_humanLung_C
         ancer_FFPE_outs/cell_feature_matrix.h5                                        
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/spatialdata_io/readers/xenium.py", line 422, in _get_labels_and_indices_mapping
    labels = Labels2DModel.parse(
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/spatialdata/models/models.py", line 284, in parse
    return super().parse(*args, **kwargs)
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/spatialdata/models/models.py", line 214, in parse
    data = to_multiscale(
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/multiscale_spatial_image/to_multiscale/to_multiscale.py", line 167, in to_multiscale
    data_objects = _downsample_dask_image(
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/multiscale_spatial_image/to_multiscale/_dask_image.py", line 191, in _downsample_dask_image
    downscaled_array = dask_image.ndinterp.affine_transform(
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/dask/base.py", line 376, in compute
    (result,) = compute(self, traverse=False, **kwargs)
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/dask/base.py", line 649, in compute
    schedule = get_scheduler(
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/dask/base.py", line 1524, in get_scheduler
    from distributed import get_client
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/distributed/__init__.py", line 23, in <module>
    from distributed.actor import Actor, ActorFuture, BaseActorFuture
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/distributed/actor.py", line 13, in <module>
    from distributed.client import Future
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/distributed/client.py", line 132, in <module>
    from distributed.worker import get_client, get_worker, secede
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/distributed/worker.py", line 119, in <module>
    from distributed.worker_memory import (
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/distributed/worker_memory.py", line 56, in <module>
    WorkerDataParameter: TypeAlias = Union[
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/typing.py", line 243, in inner
    return func(*args, **kwds)
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/typing.py", line 316, in __getitem__
    return self._getitem(self, parameters)
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/typing.py", line 421, in Union
    parameters = _remove_dups_flatten(parameters)
  File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/typing.py", line 215, in _remove_dups_flatten
    all_params = set(params)
TypeError: unhashable type: 'list'

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the Xenium example with the reported Python and package versions, then trace the failure from spatialdata_io/readers/xenium.py at _get_labels_and_indices_mapping through the distributed import shown in the traceback. Determine the compatible dependency or project change needed so the Xenium read completes without the TypeError, and verify the same example succeeds.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.