Read xenium data get TypeError: unhashable type: 'list'
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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