-
Notifications
You must be signed in to change notification settings - Fork 93
Add downloadable cells dataset via scverse-misc #1149
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 12 commits
74deacc
c453909
49d0309
a48e66d
bd6a031
1e50d1f
5944eda
6db5d5c
de3d7ad
d62ede0
8fbefb1
b226ab9
9c4e6d5
88b90b2
1f0190c
5451a53
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| # Registry of downloadable example datasets for ``spatialdata.datasets``. | ||
| # | ||
| # Parsed by ``scverse_misc.datasets.parse_registry`` and fetched (downloaded, | ||
| # hash-verified, cached and loaded) via ``scverse_misc.datasets.fetch``. | ||
| # | ||
| # type: spatialdata -> a .zip that extracts to a single .zarr store | ||
| # | ||
| # Every dataset must list its ``license``; datasets under a license that requires | ||
| # attribution must also carry an ``attribution`` string crediting the original source. | ||
| base_url: https://exampledata.scverse.org/spatialdata/ | ||
| datasets: | ||
| cells: | ||
| type: spatialdata | ||
| doc_header: Cells dataset as a SpatialData object. | ||
| license: CC BY 4.0 | ||
| attribution: >- | ||
| Derived from the 10x Genomics Xenium Prime Cervical Cancer FFPE dataset | ||
| (https://www.10xgenomics.com/datasets/xenium-prime-ffpe-human-cervical-cancer), | ||
| subset to a small tissue region. Licensed under CC BY 4.0. | ||
| files: | ||
| - name: cells.zip | ||
| s3_key: cells.zip | ||
| sha256: dc9613cb9e16fd2cd8d83f3a9586eeda4af5ba8ba366f1066efb51305820c5fb |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,12 @@ | ||
| from __future__ import annotations | ||
|
|
||
| from spatialdata.datasets import blobs, raccoon | ||
| from pathlib import Path | ||
|
|
||
| import pooch | ||
| import pytest | ||
|
|
||
| from spatialdata import SpatialData | ||
| from spatialdata.datasets import _cache_dir, _shipped_registry, blobs, cells, raccoon | ||
|
|
||
|
|
||
| def test_datasets() -> None: | ||
|
|
@@ -26,3 +32,41 @@ def test_datasets() -> None: | |
| assert sdata_raccoon.images["raccoon"].shape == (3, 768, 1024) | ||
| assert sdata_raccoon.labels["segmentation"].shape == (768, 1024) | ||
| _ = str(sdata_raccoon) | ||
|
|
||
|
|
||
| def test_cells_registry() -> None: | ||
| # Network-free: the shipped registry parses and exposes the cells dataset. | ||
| base_url, datasets = _shipped_registry() | ||
|
|
||
| assert base_url == "https://exampledata.scverse.org/spatialdata/" | ||
| entry = datasets["cells"] | ||
| assert entry.type == "spatialdata" | ||
| file = entry.file(name="cells.zip") | ||
| assert file.sha256 == "dc9613cb9e16fd2cd8d83f3a9586eeda4af5ba8ba366f1066efb51305820c5fb" | ||
| assert file.resolve_url(base_url) == "https://exampledata.scverse.org/spatialdata/cells.zip" | ||
|
|
||
|
|
||
| def test_cache_dir() -> None: | ||
| # Network-free: both branches of the cache-directory resolution. | ||
| assert _cache_dir("/tmp/example") == Path("/tmp/example") | ||
| assert _cache_dir(None) == Path(pooch.os_cache("spatialdata")) | ||
|
|
||
|
|
||
| @pytest.mark.slow | ||
| def test_cells_download(tmp_path) -> None: | ||
| # Downloads ~3 MB from the scverse example data bucket; opt out with `-m "not slow"`. | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Rather than opt-out, I'll try turning this into opt-in and skip the test by default.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done, made opt-in and opting in in the GitHub CI. It's a small dataset here and not a big deal, but later when we test cloud support it's good that we differentiate between tests require a network and tests that do not. |
||
| sdata = cells(path=str(tmp_path)) | ||
| assert isinstance(sdata, SpatialData) | ||
|
LucaMarconato marked this conversation as resolved.
|
||
|
|
||
| assert set(sdata.images) == {"he_aligned", "he_image", "morphology_focus"} | ||
| assert sdata.images["he_aligned"]["scale0"]["image"].shape == (3, 430, 540) | ||
| assert sdata.images["he_image"]["scale0"]["image"].shape == (3, 423, 339) | ||
| assert sdata.images["morphology_focus"]["scale0"]["image"].shape == (4, 430, 540) | ||
|
|
||
| assert set(sdata.labels) == {"cell_labels", "nucleus_labels", "tissue_labels"} | ||
| assert sdata.labels["cell_labels"]["scale0"]["image"].shape == (430, 540) | ||
|
|
||
| assert len(sdata.shapes["cell_boundaries"]) == 94 | ||
| assert len(sdata.shapes["nucleus_boundaries"]) == 94 | ||
| assert len(sdata.points["transcripts"].compute()) == 19479 | ||
| assert sdata.tables["table"].shape == (94, 5101) | ||
Uh oh!
There was an error while loading. Please reload this page.