Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/scverse/spatialdata-io into…
Browse files Browse the repository at this point in the history
… visium_hd
  • Loading branch information
ArneDefauw committed Dec 16, 2024
2 parents 137fce7 + e9b74c0 commit 156b827
Show file tree
Hide file tree
Showing 18 changed files with 1,145 additions and 250 deletions.
23 changes: 19 additions & 4 deletions .github/workflows/prepare_test_data.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,30 @@ jobs:
run: |
mkdir -p ./data
cd ./data
# 10x Genomics Xenium 2.0.0
curl -O https://cf.10xgenomics.com/samples/xenium/2.0.0/Xenium_V1_human_Breast_2fov/Xenium_V1_human_Breast_2fov_outs.zip
curl -O https://cf.10xgenomics.com/samples/xenium/2.0.0/Xenium_V1_human_Lung_2fov/Xenium_V1_human_Lung_2fov_outs.zip
# 10x Genomics Xenium 3.0.0 (5K) Mouse ileum, multimodal cell segmentation
# this file seems to be corrupted; skipping it for now
# curl -O https://cf.10xgenomics.com/samples/xenium/3.0.0/Xenium_Prime_MultiCellSeg_Mouse_Ileum_tiny/Xenium_Prime_MultiCellSeg_Mouse_Ileum_tiny.zip
# 10x Genomics Xenium 3.0.0 (5K) Mouse ileum, nuclear expansion
curl -O https://cf.10xgenomics.com/samples/xenium/3.0.0/Xenium_Prime_Mouse_Ileum_tiny/Xenium_Prime_Mouse_Ileum_tiny_outs.zip
# Spatial Genomics seqFISH v2
curl -O https://s3.embl.de/spatialdata/raw_data/seqfish-2-test-dataset.zip
- name: Unzip files
run: |
unzip ./data/Xenium_V1_human_Breast_2fov_outs.zip -d ./data/Xenium_V1_human_Breast_2fov_outs
unzip ./data/Xenium_V1_human_Lung_2fov_outs.zip -d ./data/Xenium_V1_human_Lung_2fov_outs
rm ./data/Xenium_V1_human_Breast_2fov_outs.zip
rm ./data/Xenium_V1_human_Lung_2fov_outs.zip
cd ./data
for file in *.zip; do
dir="${file%.zip}"
mkdir -p "$dir"
unzip "$file" -d "$dir"
rm "$file"
done
- name: Upload artifacts
uses: actions/upload-artifact@v3
Expand Down
100 changes: 53 additions & 47 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,135 +8,141 @@ and this project adheres to [Semantic Versioning][].
[keep a changelog]: https://keepachangelog.com/en/1.0.0/
[semantic versioning]: https://semver.org/spec/v2.0.0.html

## incoming release

- (Visium/Visium HD) lowres and hires images now mapped also to the 'global' coordinate system #230
- (Macsima) added support @berombau #224
- (seqFISH) support for v2 instrument #227

## [0.1.6] - 2024-11-26

- (MERSCOPE) added `feature_key` attribute for points (i.e., the `'gene'` column) #210
- (Visium HD) get transformation matrices even when only images are parsed #215
- Support for `xarray.DataTree` (which was moved from `datatree.DataTree`) #232
- (MERSCOPE) added `feature_key` attribute for points (i.e., the `'gene'` column) #210
- (Visium HD) get transformation matrices even when only images are parsed #215
- Support for `xarray.DataTree` (which was moved from `datatree.DataTree`) #232

## [0.1.5] - 2024-09-25

### Added

- (Xenium) added `dims` parameter for more control in `xenium_aligned_image()`
- (Xenium) added `dims` parameter for more control in `xenium_aligned_image()`

### Fixed

- Passing `rgb=None` to image model parser for both visium and visiumhd, leading to 3-4 channel images being
interpreted as RGB(A)
- Fix header bug Visium data #200
- (Visium HD) Fix path parsing when images are missing #204 #206
- Passing `rgb=None` to image model parser for both visium and visiumhd, leading to 3-4 channel images being
interpreted as RGB(A)
- Fix header bug Visium data #200
- (Visium HD) Fix path parsing when images are missing #204 #206

## [0.1.4] - 2024-08-07

### Changed

- (Xenium) changed default target of table to labels; radii of circles computed from cells, not nuclei #179
- (Visium HD) changed default geometry to squares from circles for the bins; added parameter to choose #183
- (CosMx) dropping points element with zero-length from the cosmx reader #191
- (Xenium) changed default target of table to labels; radii of circles computed from cells, not nuclei #179
- (Visium HD) changed default geometry to squares from circles for the bins; added parameter to choose #183
- (CosMx) dropping points element with zero-length from the cosmx reader #191

## [0.1.3] - 2024-07-03

### Added

- (Xenium) support reading multi-polygon selection files from the Xenium Explorer
- (ISS) An experimental loader to load elemental ISS data objects, e.g. raw.tif, label.tif and anndata.h5ad
- (Stereo-seq) Added reader @LLehner @timtreis @florianingelfinger #70
- (MERSCOPE) Optional rioxarray backend for MERSCOPE data (reads chunks)
- (MERSCOPE) Can choose which elements should be loaded
- (Xenium) support reading multi-polygon selection files from the Xenium Explorer
- (ISS) An experimental loader to load elemental ISS data objects, e.g. raw.tif, label.tif and anndata.h5ad
- (Stereo-seq) Added reader @LLehner @timtreis @florianingelfinger #70
- (MERSCOPE) Optional rioxarray backend for MERSCOPE data (reads chunks)
- (MERSCOPE) Can choose which elements should be loaded

### Fixed

- (Visium) Fixed issue with joining a SpatialElement with a table due to index values not being unique.
obs_names_make_unique is now called internally to enforce unique index values allowing for join operations.
- (Visium) Fixed issue with joining a SpatialElement with a table due to index values not being unique.
obs_names_make_unique is now called internally to enforce unique index values allowing for join operations.

### Changed

- (MERSCOPE) "global" coordinate system is used as a default instead of "microns"
- (MERSCOPE) "global" coordinate system is used as a default instead of "microns"

## [0.1.2] - 2024-03-30

### Added

- (Visium HD) added reader, coauthored by @LLehner
- (Visium HD) added reader, coauthored by @LLehner

### Fixed

- (Xenium) reader for 1.0.1 (paper data) and unknown versions
- (Xenium) fix in reading "minimalistic" Xenium datasets #132
- (Xenium) reader for 1.0.1 (paper data) and unknown versions
- (Xenium) fix in reading "minimalistic" Xenium datasets #132

## [0.1.1] - 2024-03-24

### Added

- (Xenium) support for post-xenium aligned images (IF, HE)
- (Xenium) reader for the selection coordinates file from the Xenium Explorer
- (Xenium) support for the new Xenium 2.0.0 (multimodal segmentation)
- (Xenium) reading multiscale labels from cells.zarr.zip
- (MCMICRO) support for TMAs (such as the data of exemplar-002)
- (DBiT-seq) reader
- converter functions `experimental.to_legacy_anndata()` and `experimental.from_legacy_anndata()`
- (Visium) support for raw reads (capture locations not under tissue)
- (Xenium) support for post-xenium aligned images (IF, HE)
- (Xenium) reader for the selection coordinates file from the Xenium Explorer
- (Xenium) support for the new Xenium 2.0.0 (multimodal segmentation)
- (Xenium) reading multiscale labels from cells.zarr.zip
- (MCMICRO) support for TMAs (such as the data of exemplar-002)
- (DBiT-seq) reader
- converter functions `experimental.to_legacy_anndata()` and `experimental.from_legacy_anndata()`
- (Visium) support for raw reads (capture locations not under tissue)

### Fixed

- (Xenium) fixed index (fail on write)
- (Xenium) renamed cells_as_shapes to cells_as_circles; set default to True
- (MERSCOPE) don't try to load unexisting elements #87
- (Visium) fixed axes ordering
- (Xenium) fixed index (fail on write)
- (Xenium) renamed cells_as_shapes to cells_as_circles; set default to True
- (MERSCOPE) don't try to load unexisting elements #87
- (Visium) fixed axes ordering

## [0.0.9] - 2023-11-06

### Fixed

- (Xenium) bug when converting feature_name #81, from @fbnrst
- (Visium) visium() supports file counts without dataset_id #91
- (Xenium) bug when converting feature_name #81, from @fbnrst
- (Visium) visium() supports file counts without dataset_id #91

## [0.0.8] - 2023-10-02

### Fixed

- (Xenium) coerce cell id to str #64
- (MERSCOPE) fix coordinate transformation #68
- (MERSCOPE) Improvements/fixes: merscope reader #73
- (Xenium) coerce cell id to str #64
- (MERSCOPE) fix coordinate transformation #68
- (MERSCOPE) Improvements/fixes: merscope reader #73

## [0.0.7] - 2023-07-23

### Fixed

- Bugs in Xenium and MERSCOPE
- Bugs in Xenium and MERSCOPE

## [0.0.5] - 2023-06-21

### Added

- MERFISH reader (from @quentinblampey)
- CODEX reader (from @LLehner)
- MERFISH reader (from @quentinblampey)
- CODEX reader (from @LLehner)

### Fixed

- Issues on Visium reader (thanks @ilia-kats) and Xenium reader
- Issues on Visium reader (thanks @ilia-kats) and Xenium reader

## [0.0.4] - 2023-05-23

### Added

- Curio reader
- Curio reader

## [0.0.3] - 2023-05-22

### Merged

- Merge pull request #40 from scverse/fix/categories
- Merge pull request #40 from scverse/fix/categories

## [0.0.2] - 2023-05-04

### Changed

- Revert version regex (#37)
- Revert version regex (#37)

## [0.0.1] - 2023-05-04

### Tested

- Test installation from pypi
- Test installation from pypi
49 changes: 32 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,26 +12,41 @@

This package contains reader functions to load common spatial omics formats into SpatialData. Currently, we provide support for:

- 10x Genomics Visium®
- 10x Genomics Visium HD®
- 10x Genomics Xenium®
- Akoya PhenoCycler® (formerly CODEX®)
- Curio Seeker®
- DBiT-seq
- MCMICRO (output data)
- NanoString CosMx®
- Spatial Genomics GenePS® (seqFISH)
- Steinbock (output data)
- STOmics Stereo-seq®
- Vizgen MERSCOPE® (MERFISH)
- 10x Genomics Visium®
- 10x Genomics Visium HD®
- 10x Genomics Xenium®
- Akoya PhenoCycler® (formerly CODEX®)
- Curio Seeker®
- DBiT-seq
- MCMICRO (output data)
- NanoString CosMx®
- Spatial Genomics GenePS® (seqFISH)
- Steinbock (output data)
- STOmics Stereo-seq®
- Vizgen MERSCOPE® (MERFISH)
- MACSima® (MACS® iQ View output)

Note: all mentioned technologies are registered trademarks of their respective companies.

## Known limitations

Contributions for addressing the below limitations are very welcomed.

- Only Stereo-seq 7.x is supported, 8.x is not currently supported. https://github.com/scverse/spatialdata-io/issues/161

### How to Contribute

1. **Open a GitHub Issue**: Start by opening a new issue or commenting on an existing one in the repository. Clearly describe the problem and your proposed changes to avoid overlapping efforts with others.

2. **Submit a Pull Request (PR)**: Once the issue is discussed, submit a PR to the `spatialdata-io` repository. Ensure your PR includes information about a suitable dataset for testing the reader, ideally no larger than 10 GB. Include clear instructions for accessing the data, preferably with a `curl` or `wget` command for easy downloading.

3. **Optional Enhancements**: To facilitate reproducibility and ease of data access, consider adding a folder in the [spatialdata-sandbox](https://github.com/giovp/spatialdata-sandbox) repository. Include a `download.py` and `to_zarr.py` script (refer to examples in the repository) to enable others to reproduce your reader by simply running these scripts sequentially.

## Getting started

Please refer to the [documentation][link-docs]. In particular, the

- [API documentation][link-api].
- [API documentation][link-api].

## Installation

Expand Down Expand Up @@ -61,10 +76,10 @@ If you found a bug, please use the [issue tracker][issue-tracker].

Technologies that can be read into `SpatialData` objects using third-party libraries:

- METASPACE (MALDI, ...): [metaspace-converter](https://github.com/metaspace2020/metaspace-converter)
- PhenoCycler®: [SOPA](https://github.com/gustaveroussy/sopa)
- MACSima®: [SOPA](https://github.com/gustaveroussy/sopa)
- Hyperion® (Imaging Mass Cytometry): [SOPA](https://github.com/gustaveroussy/sopa)
- METASPACE (MALDI, ...): [metaspace-converter](https://github.com/metaspace2020/metaspace-converter)
- PhenoCycler®: [SOPA](https://github.com/gustaveroussy/sopa)
- MACSima®: [SOPA](https://github.com/gustaveroussy/sopa)
- Hyperion® (Imaging Mass Cytometry): [SOPA](https://github.com/gustaveroussy/sopa)

## Disclaimer

Expand Down
16 changes: 8 additions & 8 deletions docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,10 +138,10 @@ in the cookiecutter-scverse template.

Please write documentation for new or changed features and use-cases. This project uses [sphinx][] with the following features:

- the [myst][] extension allows to write documentation in markdown/Markedly Structured Text
- [Numpy-style docstrings][numpydoc] (through the [napoloen][numpydoc-napoleon] extension).
- Jupyter notebooks as tutorials through [myst-nb][] (See [Tutorials with myst-nb](#tutorials-with-myst-nb-and-jupyter-notebooks))
- [Sphinx autodoc typehints][], to automatically reference annotated input and output types
- the [myst][] extension allows to write documentation in markdown/Markedly Structured Text
- [Numpy-style docstrings][numpydoc] (through the [napoloen][numpydoc-napoleon] extension).
- Jupyter notebooks as tutorials through [myst-nb][] (See [Tutorials with myst-nb](#tutorials-with-myst-nb-and-jupyter-notebooks))
- [Sphinx autodoc typehints][], to automatically reference annotated input and output types

See the [scanpy developer docs](https://scanpy.readthedocs.io/en/latest/dev/documentation.html) for more information
on how to write documentation.
Expand All @@ -158,10 +158,10 @@ repository.

#### Hints

- If you refer to objects from other packages, please add an entry to `intersphinx_mapping` in `docs/conf.py`. Only
if you do so can sphinx automatically create a link to the external documentation.
- If building the documentation fails because of a missing link that is outside your control, you can add an entry to
the `nitpick_ignore` list in `docs/conf.py`
- If you refer to objects from other packages, please add an entry to `intersphinx_mapping` in `docs/conf.py`. Only
if you do so can sphinx automatically create a link to the external documentation.
- If building the documentation fails because of a missing link that is outside your control, you can add an entry to
the `nitpick_ignore` list in `docs/conf.py`

#### Building the docs locally

Expand Down
Loading

0 comments on commit 156b827

Please sign in to comment.