spatialdata
spatialdata copied to clipboard
Read xenium data get TypeError: unhashable type: 'list'
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'
Same error occurred,when using following code. Data download from https://s3.embl.de/spatialdata/spatialdata-sandbox/xenium_rep1_io.zip
import spatialdata as sd
import spatialdata_plot
import scanpy as sc
import matplotlib.pyplot as plt
import numpy as np
xenium_path = '/home/xenium_2.0.0_io/xenium_rep1_io/data.zarr'
sdata = sd.read_zarr(xenium_path)
print(sdata)
sdata.pl.render_images("morphology_focus").pl.show(title="Morphology image")
SpatialData object, with associated Zarr store: /home/xxx/xenium_2.0.0_io/xenium_rep1_io_aligned/data_aligned.zarr
├── Images
│ ├── 'morphology_focus': DataTree[cyx] (1, 25778, 35416), (1, 12889, 17708), (1, 6444, 8854), (1, 3222, 4427), (1, 1611, 2213)
│ └── 'morphology_mip': DataTree[cyx] (1, 25778, 35416), (1, 12889, 17708), (1, 6444, 8854), (1, 3222, 4427), (1, 1611, 2213)
├── Points
│ └── 'transcripts': DataFrame with shape: (<Delayed>, 8) (3D points)
├── Shapes
│ ├── 'cell_boundaries': GeoDataFrame shape: (167780, 1) (2D shapes)
│ ├── 'cell_circles': GeoDataFrame shape: (167780, 2) (2D shapes)
│ └── 'xenium_landmarks': GeoDataFrame shape: (3, 2) (2D shapes)
└── Tables
└── 'table': AnnData (167780, 313)
with coordinate systems:
▸ 'aligned', with elements:
morphology_focus (Images), morphology_mip (Images), transcripts (Points), cell_boundaries (Shapes), cell_circles (Shapes), xenium_landmarks (Shapes)
▸ 'global', with elements:
morphology_focus (Images), morphology_mip (Images), transcripts (Points), cell_boundaries (Shapes), cell_circles (Shapes), xenium_landmarks (Shapes)
data/_core/data_extent.py", line 95, in _get_extent_of_data_array
return _compute_extent_in_coordinate_system(
File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/spatialdata/_core/data_extent.py", line 360, in _compute_extent_in_coordinate_system
transformed_corners = pd.DataFrame(transform(points, to_coordinate_system=coordinate_system).compute())
File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/functools.py", line 877, in wrapper
return dispatch(args[0].__class__)(*args, **kw)
File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/spatialdata/_core/operations/transform.py", line 436, in _
arrays.append(data[ax].to_dask_array(lengths=True).reshape(-1, 1))
File "/home/xxx/miniconda3/envs/spatialdata/lib/python3.9/site-packages/dask/dataframe/core.py", line 2010, in to_dask_array
lengths = tuple(self.map_partitions(len, enforce_metadata=False).compute())
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'