1 Available datasets

The TENxVisiumData package provides an R/Bioconductor resource for Visium spatial gene expression datasets by 10X Genomics. The package currently includes 13 datasets from 23 samples across two organisms (human and mouse) and 13 tissues:

A list of currently available datasets can be obtained using the ExperimentHub interface:

library(ExperimentHub)
eh <- ExperimentHub()
(q <- query(eh, "TENxVisium"))
## ExperimentHub with 26 records
## # snapshotDate(): 2024-10-24
## # $dataprovider: 10X Genomics
## # $species: Homo sapiens, Mus musculus
## # $rdataclass: SpatialExperiment
## # additional mcols(): taxonomyid, genome, description,
## #   coordinate_1_based, maintainer, rdatadateadded, preparerclass, tags,
## #   rdatapath, sourceurl, sourcetype 
## # retrieve records with, e.g., 'object[["EH6695"]]' 
## 
##            title                            
##   EH6695 | HumanBreastCancerIDC             
##   EH6696 | HumanBreastCancerILC             
##   EH6697 | HumanCerebellum                  
##   EH6698 | HumanColorectalCancer            
##   EH6699 | HumanGlioblastoma                
##   ...      ...                              
##   EH6739 | HumanSpinalCord_v3.13            
##   EH6740 | MouseBrainCoronal_v3.13          
##   EH6741 | MouseBrainSagittalPosterior_v3.13
##   EH6742 | MouseBrainSagittalAnterior_v3.13 
##   EH6743 | MouseKidneyCoronal_v3.13

2 Loading the data

To retrieve a dataset, we can use a dataset’s corresponding named function <id>(), where <id> should correspond to one a valid dataset identifier (see ?TENxVisiumData). E.g.:

library(TENxVisiumData)
spe <- HumanHeart()

Alternatively, data can loaded directly from Bioconductor’s ExerimentHub as follows. First, we initialize a hub instance and store the complete list of records in a variable eh. Using query(), we then identify any records made available by the TENxVisiumData package, as well as their accession IDs (EH1234). Finally, we can load the data into R via eh[[id]], where id corresponds to the data entry’s identifier we’d like to load. E.g.:

library(ExperimentHub)
eh <- ExperimentHub()        # initialize hub instance
q <- query(eh, "TENxVisium") # retrieve 'TENxVisiumData' records
id <- q$ah_id[1]             # specify dataset ID to load
spe <- eh[[id]]              # load specified dataset

3 Data representation

Each dataset is provided as a SpatialExperiment (SPE), which extends the SingleCellExperiment (SCE) class with features specific to spatially resolved data:

spe
## class: SpatialExperiment 
## dim: 36601 7785 
## metadata(0):
## assays(1): counts
## rownames(36601): ENSG00000243485 ENSG00000237613 ... ENSG00000278817
##   ENSG00000277196
## rowData names(1): symbol
## colnames(7785): AAACAAGTATCTCCCA-1 AAACACCAATAACTGC-1 ...
##   TTGTTTGTATTACACG-1 TTGTTTGTGTAAATTC-1
## colData names(1): sample_id
## reducedDimNames(0):
## mainExpName: NULL
## altExpNames(0):
## spatialCoords names(2) : pxl_col_in_fullres pxl_row_in_fullres
## imgData names(4): sample_id image_id data scaleFactor

For details on the SPE class, we refer to the package’s vignette. Briefly, the SPE harbors the following data in addition to that stored in a SCE:

spatialCoords; a numeric matrix of spatial coordinates, stored inside the object’s int_colData:

head(spatialCoords(spe))
##                    pxl_col_in_fullres pxl_row_in_fullres
## AAACAAGTATCTCCCA-1              15937              17428
## AAACACCAATAACTGC-1              18054               6092
## AAACAGAGCGACTCCT-1               7383              16351
## AAACAGGGTCTATATT-1              15202               5278
## AAACAGTGTTCCTGGG-1              21386               9363
## AAACATTTCCCGGATT-1              18549              16740

spatialData; a DFrame of spatially-related sample metadata, stored as part of the object’s colData. This colData subset is in turn determined by the int_metadata field spatialDataNames:

head(spatialData(spe))
## DataFrame with 6 rows and 0 columns

imgData; a DFrame containing image-related data, stored inside the int_metadata:

imgData(spe)
## DataFrame with 2 rows and 4 columns
##               sample_id    image_id   data scaleFactor
##             <character> <character> <list>   <numeric>
## 1 HumanBreastCancerIDC1      lowres   ####   0.0247525
## 2 HumanBreastCancerIDC2      lowres   ####   0.0247525

Datasets with multiple sections are consolidated into a single SPE with colData field sample_id indicating each spot’s sample of origin. E.g.:

spe <- MouseBrainSagittalAnterior()
table(spe$sample_id)
## 
## MouseBrainSagittalAnterior1 MouseBrainSagittalAnterior2 
##                        2695                        2825

Datasets of targeted analyses are provided as a nested SPE, with whole transcriptome measurements as primary data, and those obtained from targeted panels as altExps. E.g.:

spe <- HumanOvarianCancer()
altExpNames(spe)
## [1] "TargetedImmunology" "TargetedPanCancer"

Session information

sessionInfo()
## R version 4.4.1 (2024-06-14)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 24.04.1 LTS
## 
## Matrix products: default
## BLAS:   /home/biocbuild/bbs-3.20-bioc/R/lib/libRblas.so 
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_GB              LC_COLLATE=C              
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## time zone: America/New_York
## tzcode source: system (glibc)
## 
## attached base packages:
## [1] stats4    stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] TENxVisiumData_1.14.0       SpatialExperiment_1.16.0   
##  [3] SingleCellExperiment_1.28.0 SummarizedExperiment_1.36.0
##  [5] Biobase_2.66.0              GenomicRanges_1.58.0       
##  [7] GenomeInfoDb_1.42.0         IRanges_2.40.0             
##  [9] S4Vectors_0.44.0            MatrixGenerics_1.18.0      
## [11] matrixStats_1.4.1           ExperimentHub_2.14.0       
## [13] AnnotationHub_3.14.0        BiocFileCache_2.14.0       
## [15] dbplyr_2.5.0                BiocGenerics_0.52.0        
## [17] BiocStyle_2.34.0           
## 
## loaded via a namespace (and not attached):
##  [1] KEGGREST_1.46.0         rjson_0.2.23            xfun_0.48              
##  [4] bslib_0.8.0             lattice_0.22-6          vctrs_0.6.5            
##  [7] tools_4.4.1             generics_0.1.3          curl_5.2.3             
## [10] tibble_3.2.1            fansi_1.0.6             AnnotationDbi_1.68.0   
## [13] RSQLite_2.3.7           blob_1.2.4              pkgconfig_2.0.3        
## [16] Matrix_1.7-1            lifecycle_1.0.4         GenomeInfoDbData_1.2.13
## [19] compiler_4.4.1          Biostrings_2.74.0       htmltools_0.5.8.1      
## [22] sass_0.4.9              yaml_2.3.10             pillar_1.9.0           
## [25] crayon_1.5.3            jquerylib_0.1.4         DelayedArray_0.32.0    
## [28] cachem_1.1.0            magick_2.8.5            abind_1.4-8            
## [31] mime_0.12               tidyselect_1.2.1        digest_0.6.37          
## [34] dplyr_1.1.4             purrr_1.0.2             bookdown_0.41          
## [37] BiocVersion_3.20.0      grid_4.4.1              fastmap_1.2.0          
## [40] SparseArray_1.6.0       cli_3.6.3               magrittr_2.0.3         
## [43] S4Arrays_1.6.0          utf8_1.2.4              withr_3.0.2            
## [46] filelock_1.0.3          UCSC.utils_1.2.0        rappdirs_0.3.3         
## [49] bit64_4.5.2             rmarkdown_2.28          XVector_0.46.0         
## [52] httr_1.4.7              bit_4.5.0               png_0.1-8              
## [55] memoise_2.0.1           evaluate_1.0.1          knitr_1.48             
## [58] rlang_1.1.4             Rcpp_1.0.13             glue_1.8.0             
## [61] DBI_1.2.3               BiocManager_1.30.25     jsonlite_1.8.9         
## [64] R6_2.5.1                zlibbioc_1.52.0