SpatialExperiment
Dependencies & Environment
Package-intrinsic requirements from the Bioconductor landing page — reproduce in any R environment.
- Version: 1.22.0 · Bioconductor: 3.23 · R: ≥ 4.6
- Depends: SingleCellExperiment
- Imports: rjson, magick, S4Vectors, SummarizedExperiment, BiocGenerics, BiocFileCache
- Install:
BiocManager::install("SpatialExperiment")
When to Use
- Spot-Based Spatial Transcriptomics: Representing and manipulating data from spot-based spatial transcriptomics platforms (e.g., 10x Genomics Visium) containing gene expression, spatial coordinates, and histology images using
SpatialExperiment() and imgData().
- Molecule-Resolved Spatial Data: Storing and querying molecule-resolved spatial data (e.g., seqFISH) where exact X-Y coordinates of individual transcripts are recorded, using
splitAsBumpyMatrix() and the molecules() accessor.
- Image Transformations: Applying basic image transformations like rotation and mirroring to spatial images using
rotateImg() and mirrorImg().
When NOT to Use
- For standard single-cell RNA-seq data lacking spatial coordinates, use
SingleCellExperiment instead because the spatial-specific slots like spatialCoords and imgData will remain empty and add unnecessary overhead.
- For pure image processing without transcriptomics, use other imaging tools because
SpatialExperiment is designed to link assays (like counts) with spatial metadata.
Data Requirements
- Assays: A count matrix (e.g.,
counts) representing gene expression across spatial locations.
- Spatial Coordinates: A numeric matrix or
DataFrame of coordinates (e.g., x and y) for each spot or cell.
- Image Data (Optional): Images stored as
SpatialImage objects within an imgData DataFrame.
Key Parameters
- assays (required): A list of matrices containing expression data (e.g.,
counts).
- spatialCoords (optional): A numeric matrix containing spatial coordinates.
- spatialCoordsNames (optional): A character vector specifying which
colData fields correspond to spatial coordinates.
- imgData (optional): A
DataFrame containing image metadata and SpatialImage objects.
- colData (optional): A
DataFrame containing spot- or cell-level metadata.
- sample_id (default
"sample_01"): A character string specifying the sample identifier.
Best Practices
- Use
spatialCoords() and imgData() accessor functions instead of directly manipulating internal slots to maintain object integrity.
- For 10x Genomics Visium data, use
TENxVisiumList() and import() from the VisiumIO package to automatically load outputs from Space Ranger.
- Make sample identifiers unique prior to combining objects with
cbind() to avoid automatic index appending.
Common Pitfalls
- Duplicated sample IDs during replacement: Attempting to replace
sample_ids with non-unique values returns an error; fix this by ensuring replacement IDs map uniquely to existing ones.
- Loss of sample IDs: Attempting to remove
sample_id by setting it to NULL fails because it is a protected field; fix this by retaining the sample_id or replacing it with valid unique strings.
- Conflicting spatial coordinates: Supplying both
spatialCoords and spatialCoordsNames causes spatialCoordsNames to be ignored; fix this by setting either to NULL to suppress the warning message.
Alternatives
- SingleCellExperiment: The parent class, which can store coordinates in
colData but lacks dedicated spatialCoords and imgData slots.
- Seurat: Another framework for single-cell and spatial data analysis.
- Giotto: An independent R package for spatial transcriptomics.
Citations
- Righelli, D., et al. (2022). SpatialExperiment: infrastructure for spatially resolved transcriptomics data in Bioconductor. Bioinformatics, 38(11), 3128-3130.
References
Run this on BioMate
This skill is the knowledge layer — when, why, and how to use spatialexperiment. To run this analysis on your own data with managed compute, automated QC, and reproducible outputs, use BioMate — free to start.
▶ Open spatialexperiment on BioMate →
1---2name: bioconductor-spatialexperiment3description: Defines an S4 class for storing data from spatial -omics experiments. The class extends SingleCellExperiment to support storage and retrieval of additional information from spot-based and molecule-based platforms, including spatial coordina4---56# SpatialExperiment78## Dependencies & Environment910> Package-intrinsic requirements from the Bioconductor landing page — reproduce in any R environment.1112- **Version:** 1.22.0 · **Bioconductor:** 3.23 · **R:** ≥ 4.613- **Depends:** SingleCellExperiment14- **Imports:** rjson, magick, S4Vectors, SummarizedExperiment, BiocGenerics, BiocFileCache15- **Install:** `BiocManager::install("SpatialExperiment")`1617## When to Use18- **Spot-Based Spatial Transcriptomics**: Representing and manipulating data from spot-based spatial transcriptomics platforms (e.g., 10x Genomics Visium) containing gene expression, spatial coordinates, and histology images using `SpatialExperiment()` and `imgData()`.19- **Molecule-Resolved Spatial Data**: Storing and querying molecule-resolved spatial data (e.g., seqFISH) where exact X-Y coordinates of individual transcripts are recorded, using `splitAsBumpyMatrix()` and the `molecules()` accessor.20- **Image Transformations**: Applying basic image transformations like rotation and mirroring to spatial images using `rotateImg()` and `mirrorImg()`.2122## When NOT to Use23- For **standard single-cell RNA-seq data** lacking spatial coordinates, use `SingleCellExperiment` instead because the spatial-specific slots like `spatialCoords` and `imgData` will remain empty and add unnecessary overhead.24- For **pure image processing** without transcriptomics, use other imaging tools because `SpatialExperiment` is designed to link `assays` (like `counts`) with spatial metadata.2526## Data Requirements27- **Assays**: A count matrix (e.g., `counts`) representing gene expression across spatial locations.28- **Spatial Coordinates**: A numeric matrix or `DataFrame` of coordinates (e.g., `x` and `y`) for each spot or cell.29- **Image Data (Optional)**: Images stored as `SpatialImage` objects within an `imgData` `DataFrame`.3031## Key Parameters32- **assays** (required): A list of matrices containing expression data (e.g., `counts`).33- **spatialCoords** (optional): A numeric matrix containing spatial coordinates.34- **spatialCoordsNames** (optional): A character vector specifying which `colData` fields correspond to spatial coordinates.35- **imgData** (optional): A `DataFrame` containing image metadata and `SpatialImage` objects.36- **colData** (optional): A `DataFrame` containing spot- or cell-level metadata.37- **sample_id** (default `"sample_01"`): A character string specifying the sample identifier.3839## Best Practices40- Use `spatialCoords()` and `imgData()` accessor functions instead of directly manipulating internal slots to maintain object integrity.41- For 10x Genomics Visium data, use `TENxVisiumList()` and `import()` from the `VisiumIO` package to automatically load outputs from Space Ranger.42- Make sample identifiers unique prior to combining objects with `cbind()` to avoid automatic index appending.4344## Common Pitfalls45- **Duplicated sample IDs during replacement**: Attempting to replace `sample_id`s with non-unique values returns an error; fix this by ensuring replacement IDs map uniquely to existing ones.46- **Loss of sample IDs**: Attempting to remove `sample_id` by setting it to `NULL` fails because it is a protected field; fix this by retaining the `sample_id` or replacing it with valid unique strings.47- **Conflicting spatial coordinates**: Supplying both `spatialCoords` and `spatialCoordsNames` causes `spatialCoordsNames` to be ignored; fix this by setting either to `NULL` to suppress the warning message.4849## Alternatives50- **SingleCellExperiment**: The parent class, which can store coordinates in `colData` but lacks dedicated `spatialCoords` and `imgData` slots.51- **Seurat**: Another framework for single-cell and spatial data analysis.52- **Giotto**: An independent R package for spatial transcriptomics.5354## Citations55- Righelli, D., et al. (2022). SpatialExperiment: infrastructure for spatially resolved transcriptomics data in Bioconductor. *Bioinformatics*, 38(11), 3128-3130.5657## References58- Homepage: bioconductor.org/packages/SpatialExperiment59- Vignette: https://bioconductor.org/packages/release/bioc/vignettes/SpatialExperiment/inst/doc/SpatialExperiment.html6061<!-- biomate-cta -->62---6364## Run this on BioMate6566This skill is the **knowledge layer** — when, why, and how to use `spatialexperiment`. To **run this analysis on your own data** with managed compute, automated QC, and reproducible outputs, use **[BioMate](https://www.biomate.ai?ref=kb&pkg=spatialexperiment)** — free to start.6768▶ **[Open `spatialexperiment` on BioMate →](https://www.biomate.ai?ref=kb&pkg=spatialexperiment)**