Closed ckmah closed 3 weeks ago
This is an error I get in bento.io.prep
with old version data (Xenium 1.0/single-channel segmentation). I can't share the data, unfortunately, but I'll try to give as much context as possible to reproduce (environment listed in last section).
In a future comment, I'll share what happens with our multi-modal segmentation data.
Calls to Error
bento.io.prep()
(inbento/io/_io.py
) >
_sjoin_points()
(inbento/io/_index.py
) >
set_points_metadata()
(inbento/io/_utils.py
) >
points.loc[:, columns] = metadata
(line 256; inset_points_metadata()
) >
ValueError: Must have equal len keys and value when setting with an iterable
I did a lazy man's debugging with a statement printing some of the objects involved in the error.
columns
= ['cell_boundaries']
Here's a print-out of part of the metadata
variable (which appear to be cell IDs):
['eofgbmjc-1' 'enmongjp-1' 'enmolhlp-1' ... '' '' '']
And here are the first two rows of the points
dataframe:
x y z feature_name cell_id \
0 37.685432 10092.416016 11.131549 IRF2BP2 UNASSIGNED
1 147.899933 10138.629883 11.069950 SLC26A6 UNASSIGNED
transcript_id fov_name nucleus_distance qv \
0 282170761412612 Q3 392.351013 40.000000
1 282170761412639 Q3 283.523773 40.000000
overlaps_nucleus
0 0
1 0
It looks to me like the code is trying to store cell IDs in the transcripts dataframe, which leads to incompatible dimensions?
%load_ext autoreload
%autoreload 2
import os
import matplotlib.pyplot
import seaborn as sns
import scanpy as sc
import bento as bt
import spatialdata_io as sdio
import spatialdata as sd
import pandas as pd
import numpy as np
sdata = sdio.xenium(directory_path)
kwargs = dict(points_key="transcripts", feature_key="feature_name",
instance_key="cell_boundaries",
shape_keys=["cell_boundaries", "nucleus_boundaries"])
sdata_p = bt.io.prep(sdata, **kwargs) # for Bento compatibility
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[5], [line 4](vscode-notebook-cell:?execution_count=5&line=4)
[1](vscode-notebook-cell:?execution_count=5&line=1) kwargs = dict(points_key="transcripts", feature_key="feature_name",
[2](vscode-notebook-cell:?execution_count=5&line=2) instance_key="cell_boundaries",
[3](vscode-notebook-cell:?execution_count=5&line=3) shape_keys=["cell_boundaries", "nucleus_boundaries"])
----> [4](vscode-notebook-cell:?execution_count=5&line=4) sdata = bt.io.prep(sdata, **kwargs) # for Bento compatibility
[5](vscode-notebook-cell:?execution_count=5&line=5) sdata
File ~/bento-tools/bento/io/_io.py:75, in prep(sdata, points_key, feature_key, instance_key, shape_keys)
[73](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/io/_io.py:73) if len(point_sjoin) > 0:
[74](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/io/_io.py:74) pbar.set_description("Mapping points")
---> [75](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/io/_io.py:75) sdata = _sjoin_points(
[76](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/io/_io.py:76) sdata=sdata,
[77](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/io/_io.py:77) points_key=points_key,
[78](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/io/_io.py:78) shape_keys=point_sjoin,
[79](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/io/_io.py:79) )
[81](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/io/_io.py:81) pbar.update()
[83](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/io/_io.py:83) if len(shape_sjoin) > 0:
File ~/bento-tools/bento/io/_index.py:57, in _sjoin_points(sdata, points_key, shape_keys)
[54](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/io/_index.py:54) points["index_right"].fillna("", inplace=True)
[55](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/io/_index.py:55) points.rename(columns={"index_right": shape_key}, inplace=True)
---> [57](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/io/_index.py:57) set_points_metadata(sdata, points_key, points[shape_key], columns=shape_key)
[59](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/io/_index.py:59) return sdata
File ~/bento-tools/bento/_utils.py:251, in set_points_metadata(sdata, points_key, metadata, columns)
[249](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/_utils.py:249) transform = sdata.points[points_key].attrs
[250](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/_utils.py:250) points = sdata.points[points_key].compute()
--> [251](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/_utils.py:251) points.loc[:, columns] = metadata
[252](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/_utils.py:252) points = PointsModel.parse(
[253](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/_utils.py:253) dd.from_pandas(points, npartitions=1), coordinates={"x": "x", "y": "y"}
[254](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/_utils.py:254) )
[255](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/bento-tools/bento/_utils.py:255) points.attrs = transform
File ~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:818, in _LocationIndexer.__setitem__(self, key, value)
[815](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:815) self._has_valid_setitem_indexer(key)
[817](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:817) iloc = self if self.name == "iloc" else self.obj.iloc
--> [818](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:818) iloc._setitem_with_indexer(indexer, value, self.name)
File ~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1795, in _iLocIndexer._setitem_with_indexer(self, indexer, value, name)
[1792](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1792) # align and set the values
[1793](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1793) if take_split_path:
[1794](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1794) # We have to operate column-wise
-> [1795](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1795) self._setitem_with_indexer_split_path(indexer, value, name)
[1796](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1796) else:
[1797](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1797) self._setitem_single_block(indexer, value, name)
File ~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1850, in _iLocIndexer._setitem_with_indexer_split_path(self, indexer, value, name)
[1845](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1845) if len(value) == 1 and not is_integer(info_axis):
[1846](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1846) # This is a case like df.iloc[:3, [1]] = [0]
[1847](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1847) # where we treat as df.iloc[:3, 1] = 0
[1848](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1848) return self._setitem_with_indexer((pi, info_axis[0]), value[0])
-> [1850](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1850) raise ValueError(
[1851](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1851) "Must have equal len keys and value "
[1852](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1852) "when setting with an iterable"
[1853](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1853) )
[1855](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1855) elif lplane_indexer == 0 and len(value) == len(self.obj.index):
[1856](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1856) # We get here in one case via .loc with a all-False mask
[1857](https://vscode-remote+ssh-002dremote-002bspark-002echobiolab-002eorg.vscode-resource.vscode-cdn.net/home/elizabeth/elizabeth/corescpy/examples/~/miniconda3/envs/bento/lib/python3.10/site-packages/pandas/core/indexing.py:1857) pass
ValueError: Must have equal len keys and value when setting with an iterable
# Name Version Build Channel
_libgcc_mutex 0.1 conda_forge conda-forge
_openmp_mutex 4.5 2_gnu conda-forge
adjusttext 1.1.1 pypi_0 pypi
affine 2.4.0 pypi_0 pypi
aiobotocore 2.5.4 pypi_0 pypi
aiohttp 3.9.5 pypi_0 pypi
aioitertools 0.11.0 pypi_0 pypi
aiosignal 1.3.1 pypi_0 pypi
anndata 0.10.7 pypi_0 pypi
array-api-compat 1.7.1 pypi_0 pypi
asciitree 0.3.3 pypi_0 pypi
astropy 6.1.0 pypi_0 pypi
astropy-iers-data 0.2024.6.10.0.30.47 pypi_0 pypi
asttokens 2.4.1 pyhd8ed1ab_0 conda-forge
async-timeout 4.0.3 pypi_0 pypi
attrs 23.2.0 pypi_0 pypi
bento-tools 2.1.2 pypi_0 pypi
botocore 1.31.17 pypi_0 pypi
bzip2 1.0.8 hd590300_5 conda-forge
ca-certificates 2024.6.2 hbcca054_0 conda-forge
certifi 2024.6.2 pypi_0 pypi
charset-normalizer 3.3.2 pypi_0 pypi
click 8.1.7 pypi_0 pypi
click-plugins 1.1.1 pypi_0 pypi
cligj 0.7.2 pypi_0 pypi
cloudpickle 3.0.0 pypi_0 pypi
colorcet 3.1.0 pypi_0 pypi
comm 0.2.2 pyhd8ed1ab_0 conda-forge
contourpy 1.2.1 pypi_0 pypi
cycler 0.12.1 pypi_0 pypi
dask 2024.2.1 pypi_0 pypi
dask-image 2023.3.0 pypi_0 pypi
datashader 0.16.2 pypi_0 pypi
debugpy 1.8.1 py310hc6cd4ac_0 conda-forge
decorator 5.1.1 pyhd8ed1ab_0 conda-forge
decoupler 1.4.0 pypi_0 pypi
distributed 2024.2.1 pypi_0 pypi
emoji 2.12.1 pypi_0 pypi
exceptiongroup 1.2.1 pypi_0 pypi
executing 2.0.1 pyhd8ed1ab_0 conda-forge
fasteners 0.19 pypi_0 pypi
fcsparser 0.2.8 pypi_0 pypi
fiona 1.9.6 pypi_0 pypi
fonttools 4.53.0 pypi_0 pypi
frozenlist 1.4.1 pypi_0 pypi
fsspec 2023.6.0 pypi_0 pypi
geopandas 0.14.4 pypi_0 pypi
h5py 3.11.0 pypi_0 pypi
idna 3.7 pypi_0 pypi
imagecodecs 2024.6.1 pypi_0 pypi
imageio 2.34.1 pypi_0 pypi
importlib-metadata 7.1.0 pyha770c72_0 conda-forge
importlib_metadata 7.1.0 hd8ed1ab_0 conda-forge
ipykernel 6.29.4 pyh3099207_0 conda-forge
ipython 8.25.0 pyh707e725_0 conda-forge
jedi 0.19.1 pyhd8ed1ab_0 conda-forge
jinja2 3.1.4 pypi_0 pypi
jmespath 1.0.1 pypi_0 pypi
joblib 1.4.2 pypi_0 pypi
jupyter_client 8.6.2 pyhd8ed1ab_0 conda-forge
jupyter_core 5.7.2 py310hff52083_0 conda-forge
keyutils 1.6.1 h166bdaf_0 conda-forge
kiwisolver 1.4.5 pypi_0 pypi
kneed 0.8.5 pypi_0 pypi
krb5 1.21.2 h659d440_0 conda-forge
lamin-utils 0.13.2 pypi_0 pypi
lazy-loader 0.4 pypi_0 pypi
ld_impl_linux-64 2.40 hf3520f5_3 conda-forge
legacy-api-wrap 1.4 pypi_0 pypi
libedit 3.1.20191231 he28a2e2_2 conda-forge
libffi 3.4.2 h7f98852_5 conda-forge
libgcc-ng 13.2.0 h77fa898_7 conda-forge
libgomp 13.2.0 h77fa898_7 conda-forge
libnsl 2.0.1 hd590300_0 conda-forge
libsodium 1.0.18 h36c2ea0_1 conda-forge
libsqlite 3.46.0 hde9e2c9_0 conda-forge
libstdcxx-ng 13.2.0 hc0a3c3a_7 conda-forge
libuuid 2.38.1 h0b41bf4_0 conda-forge
libzlib 1.3.1 h4ab18f5_1 conda-forge
llvmlite 0.42.0 pypi_0 pypi
locket 1.0.0 pypi_0 pypi
markdown-it-py 3.0.0 pypi_0 pypi
markupsafe 2.1.5 pypi_0 pypi
matplotlib 3.9.0 pypi_0 pypi
matplotlib-inline 0.1.7 pyhd8ed1ab_0 conda-forge
matplotlib-scalebar 0.8.1 pypi_0 pypi
mdurl 0.1.2 pypi_0 pypi
minisom 2.3.2 pypi_0 pypi
msgpack 1.0.8 pypi_0 pypi
multidict 6.0.5 pypi_0 pypi
multipledispatch 1.0.0 pypi_0 pypi
multiscale-spatial-image 0.11.2 pypi_0 pypi
natsort 8.4.0 pypi_0 pypi
ncurses 6.5 h59595ed_0 conda-forge
nest-asyncio 1.6.0 pyhd8ed1ab_0 conda-forge
networkx 3.3 pypi_0 pypi
numba 0.59.1 pypi_0 pypi
numcodecs 0.12.1 pypi_0 pypi
numpy 1.26.4 pypi_0 pypi
ome-zarr 0.9.0 pypi_0 pypi
openssl 3.3.1 h4ab18f5_0 conda-forge
packaging 24.1 pyhd8ed1ab_0 conda-forge
pandas 1.5.3 pypi_0 pypi
param 2.1.0 pypi_0 pypi
parso 0.8.4 pyhd8ed1ab_0 conda-forge
partd 1.4.2 pypi_0 pypi
patsy 0.5.6 pypi_0 pypi
pexpect 4.9.0 pyhd8ed1ab_0 conda-forge
pickleshare 0.7.5 py_1003 conda-forge
pillow 10.3.0 pypi_0 pypi
pims 0.7 pypi_0 pypi
pip 24.0 pyhd8ed1ab_0 conda-forge
platformdirs 4.2.2 pyhd8ed1ab_0 conda-forge
pooch 1.8.2 pypi_0 pypi
prompt-toolkit 3.0.47 pyha770c72_0 conda-forge
psutil 5.9.8 py310h2372a71_0 conda-forge
ptyprocess 0.7.0 pyhd3deb0d_0 conda-forge
pure_eval 0.2.2 pyhd8ed1ab_0 conda-forge
pyarrow 16.1.0 pypi_0 pypi
pyct 0.5.0 pypi_0 pypi
pyerfa 2.0.1.4 pypi_0 pypi
pygeos 0.14 pypi_0 pypi
pygments 2.18.0 pyhd8ed1ab_0 conda-forge
pynndescent 0.5.12 pypi_0 pypi
pyparsing 3.1.2 pypi_0 pypi
pyproj 3.6.1 pypi_0 pypi
python 3.10.4 h2660328_0_cpython conda-forge
python-dateutil 2.9.0.post0 pypi_0 pypi
python_abi 3.10 4_cp310 conda-forge
pytz 2024.1 pypi_0 pypi
pyyaml 6.0.1 pypi_0 pypi
pyzmq 26.0.3 py310h6883aea_0 conda-forge
rasterio 1.3.10 pypi_0 pypi
readfcs 1.1.8 pypi_0 pypi
readline 8.2 h8228510_1 conda-forge
requests 2.32.3 pypi_0 pypi
rich 13.7.1 pypi_0 pypi
rtree 1.2.0 pypi_0 pypi
s3fs 2023.6.0 pypi_0 pypi
scanpy 1.10.1 pypi_0 pypi
scikit-image 0.23.2 pypi_0 pypi
scikit-learn 1.5.0 pypi_0 pypi
scipy 1.10.1 pypi_0 pypi
seaborn 0.13.2 pypi_0 pypi
session-info 1.0.0 pypi_0 pypi
setuptools 70.0.0 pyhd8ed1ab_0 conda-forge
shapely 2.0.4 pypi_0 pypi
six 1.16.0 pyh6c4a22f_0 conda-forge
slicerator 1.1.0 pypi_0 pypi
snuggs 1.4.7 pypi_0 pypi
sortedcontainers 2.4.0 pypi_0 pypi
sparse 0.15.4 pypi_0 pypi
spatial-image 0.3.0 pypi_0 pypi
spatialdata 0.1.2 pypi_0 pypi
spatialdata-io 0.1.2 pypi_0 pypi
sqlite 3.46.0 h6d4b2fc_0 conda-forge
stack_data 0.6.2 pyhd8ed1ab_0 conda-forge
statsmodels 0.14.2 pypi_0 pypi
stdlib-list 0.10.0 pypi_0 pypi
tblib 3.0.0 pypi_0 pypi
tensorly 0.8.1 pypi_0 pypi
threadpoolctl 3.5.0 pypi_0 pypi
tifffile 2024.5.22 pypi_0 pypi
tk 8.6.13 noxft_h4845f30_101 conda-forge
toolz 0.12.1 pypi_0 pypi
tornado 6.4.1 py310hc51659f_0 conda-forge
tqdm 4.66.4 pypi_0 pypi
traitlets 5.14.3 pyhd8ed1ab_0 conda-forge
typing_extensions 4.12.2 pyha770c72_0 conda-forge
tzdata 2024a h0c530f3_0 conda-forge
umap-learn 0.5.6 pypi_0 pypi
upsetplot 0.9.0 pypi_0 pypi
urllib3 1.26.18 pypi_0 pypi
wcwidth 0.2.13 pyhd8ed1ab_0 conda-forge
wheel 0.43.0 pyhd8ed1ab_1 conda-forge
wrapt 1.16.0 pypi_0 pypi
xarray 2023.12.0 pypi_0 pypi
xarray-dataclasses 1.7.0 pypi_0 pypi
xarray-datatree 0.0.14 pypi_0 pypi
xarray-schema 0.0.3 pypi_0 pypi
xarray-spatial 0.4.0 pypi_0 pypi
xgboost 2.0.3 pypi_0 pypi
xz 5.2.6 h166bdaf_0 conda-forge
yarl 1.9.4 pypi_0 pypi
zarr 2.18.2 pypi_0 pypi
zeromq 4.3.5 h75354e8_4 conda-forge
zict 3.0.0 pypi_0 pypi
zipp 3.19.2 pyhd8ed1ab_0 conda-forge
Originally posted by @easlinger in https://github.com/ckmah/bento-tools/issues/137#issuecomment-2176500276
Ideally, most datasets from common platforms will be ingested with the
spatialdata-io
library. We should add compatibility and regression checks to ensure our custom formatting on top of vanillaspatialdata
doesn't break as formatting evolves and new platforms are added to the mix i.e. Xenium multimodal-segmentation.