for class infrastructure, see
SpatialData
for visualization capabilites, see
SpatialData.plot
SpatialData.data makes scverse data examples available through Bioc's
NSF OSN bucket, and accessible from within R, using BiocFileCache.
Also, there is an interface to Python's 'spatialdata-io' for reading
and writing to .zarr, and to align data into a common (identity) space.
BiocManager::install("HelenaLC/SpatialData")
BiocManager::install("HelenaLC/SpatialData.data")
To interrogate our S3 bucket you will need paws installed; it is not necessary for retrievals.
Query Bioconductor's OSN bucket:
> Sys.setenv(AWS_REGION = "us-east-1")
> availableOSN() # as of May 19 2025
checking Bioconductor OSN bucket...
[1] "HuLungXenmulti.zip"
[2] "mcmicro_io.zip"
[3] "merfish.zarr.zip"
[4] "mibitof.zip"
[5] "steinbock_io.zip"
[6] "visium_associated_xenium_io_aligned.zip"
[7] "visium_hd_3.0.0_io.zip"
[8] "xenium_rep1_io_aligned.zip"
[9] "xenium_rep2_io_aligned.zip"
Bring a .zip archive into your local cache:
dir.create(tf <- tempfile())
pa = SpatialData.data:::.unzip_spd_demo(
zipname="mibitof.zip",
destination=tf,
source="biocOSN")
dir(pa, full.names=TRUE) # see the files
Import the SpatialData instance, and work with it:
(mibi <- readSpatialData(pa))
# or simply
# (mibi <- ColorectalCarcinomaMIBITOF())
> mibi
class: SpatialData
- images(3):
- point16_image (3,1024,1024)
- point23_image (3,1024,1024)
- point8_image (3,1024,1024)
- labels(3):
- point16_labels (1024,1024)
- point23_labels (1024,1024)
- point8_labels (1024,1024)
- points(0):
- shapes(0):
- tables(1):
- table (36,3309)
coordinate systems:
- point16(2): point16_image point16_labels
- point23(2): point23_image point23_labels
- point8(2): point8_image point8_labels
> table(mibi)
class: SingleCellExperiment
dim: 36 3309
metadata(1): spatialdata_attrs
assays(1): X
rownames(36): ASCT2 ATP5A ... XBP1 vimentin
rowData names(0):
colnames(3309): 9376-1 9377-1 ... 4273-0 4274-0
colData names(12): row_num point ... batch library_id
reducedDimNames(3): X_scanorama X_umap spatial
mainExpName: NULL
altExpNames(0):
TODO: build provenance for each example
make_spd_prov = function( outfile=tempfile(), zarr_url,
prose_tag,
pub_url,
date_uploaded) {
if (missing(date_uploaded)) stop("must supply upload date")
if (missing(pub_url)) stop("must supply pub_url")
if (missing(prose_tag)) stop("must supply upload prose_tag")
basic = list(
SpatialDataTag = prose_tag,
zarr_url = zarr_url,
pub_url = pub_url,
date_uploaded = date_uploaded)
jsonlite::write_json(jsonlite::toJSON(basic), outfile)
}
make_spd_prov(zarr_url = "https://s3.embl.de/spatialdata/spatialdata-sandbox/xenium_rep1_io_aligned.zip",
prose_tag = "spatialdata notebooks aligned rep1",
pub_url = "https://pubmed.ncbi.nlm.nih.gov/38114474/",
date_uploaded = "2024.11.10")