Contents

1 Introduction

The SpatialExperiment package provides classes and methods for single cell spatial data handling.

The VisiumExperiment class exteds the SpatialExperiment class by providing more specific attributes and methods for the 10x-Genomics Visium experiments data.

This vignettes shows how to create a VisiumExperiment class by loading a Mouse Coronal 10x-Genomics Visium spatial dataset.

Dataset downloaded from 10x-Genomics website .

2 Installation

if(!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("SpatialExperiment")

3 Loading required libraries

library("SpatialExperiment")
library("Matrix")
library("rjson")

4 Data Loading

Examples data files have been downloaded from the 10x site, Mouse adult brain

4.1 Features

Loading features and count matrix.

barcodesFile <- system.file(file.path("extdata", "10x_visium",
                            "barcodes.tsv"), package="SpatialExperiment")
barcodesEx <- read.csv(barcodesFile, sep="\t", 
                     header=FALSE, col.names=c("Cell_ID"))
featuresFile <- system.file(file.path("extdata", "10x_visium",
                            "features.tsv"), package="SpatialExperiment")
featuresEx <- read.csv(featuresFile, sep="\t", 
                     header=FALSE, col.names=c("Feature_ID", "Feature_name", 
                                               "Feature_type"))

countsFile <- system.file(file.path("extdata", "10x_visium",
                            "matrix.mtx"), package="SpatialExperiment")
countsEx <- readMM(file=countsFile)

4.2 Spatial Coordinates

Loading Spatial coordinates of the tissue section.

posFile <- system.file(file.path("extdata", "10x_visium",
                        "tissue_positions_list.tsv"), 
                        package="SpatialExperiment")
tissPosEx <- read.csv(posFile, 
                        sep="\t", header=FALSE, 
                        col.names=c("Cell_ID", "in_tissue", 
                                    "array_row", "array_col",
                                    "pxl_col_in_fullres", "pxl_row_in_fullres"))

4.3 Image paths

10x-Genomics Visium experiments comes out with images in different resolutions for tissue spots locations.

imageFilePath <- list.files(system.file(file.path("extdata", "10x_visium", 
                              "images"), package="SpatialExperiment"), 
                            full.names=TRUE)

4.4 Spatial Scale Factors

Scale factors for the given three 10x Visium image formats transformations.

scaleFile <- system.file(file.path("extdata", "10x_visium",
                        "scalefactors_json.json"), 
                        package="SpatialExperiment")

scalefactors <- fromJSON(file=scaleFile)

5 VisiumExperiment

5.1 Creation

Creating VisiumExperiment class within 10x Visium data.

ve <- VisiumExperiment(rowData=featuresEx, colData=barcodesEx, 
                            assays=c(counts=countsEx), 
                            spatialCoords=tissPosEx,
                            scaleFactors=scalefactors)
ve
## class: VisiumExperiment 
## dim: 50 50 
## metadata(0):
## assays(1): counts
## rownames: NULL
## rowData names(3): Feature_ID Feature_name Feature_type
## colnames: NULL
## colData names(1): Cell_ID
## reducedDimNames(0):
## altExpNames(0):
## spatialCoordinates(6): Cell_ID in_tissue ... pxl_col_in_fullres
##   pxl_row_in_fullres
## inTissue(1): 22
## imagePaths(0):

5.2 Methods

5.2.1 Retrieving Spatial Coordinates

The spatialCoords methods can be used to retrieve the spatial coordinates., It can be used also to update the values.

spatialCoords(ve)
## DataFrame with 50 rows and 6 columns
##                Cell_ID in_tissue array_row array_col pxl_col_in_fullres
##            <character> <integer> <integer> <integer>          <integer>
## 1   AAACAACGAATAGTTC-1         0         0        16               1252
## 2   AAACAAGTATCTCCCA-1         1        50       102               7237
## 3   AAACAATCTACTAGCA-1         1         3        43               1611
## 4   AAACACCAATAACTGC-1         1        59        19               8315
## 5   AAACAGAGCGACTCCT-1         1        14        94               2927
## ...                ...       ...       ...       ...                ...
## 46  AAAGGTCAACGACATG-1         0         0       112               1251
## 47  AAAGTAGCATTGCTCA-1         1        51        27               7357
## 48  AAAGTCACTGATGTAA-1         1        10        52               2449
## 49  AAAGTCGACCCTCAGT-1         1        37        15               5681
## 50  AAAGTGCCATCAATTA-1         0        63       125               8793
##     pxl_row_in_fullres
##              <integer>
## 1                 2312
## 2                 8230
## 3                 4170
## 4                 2519
## 5                 7679
## ...                ...
## 46                8917
## 47                3069
## 48                4789
## 49                2244
## 50                9812

5.2.2 Image get/set

Image paths can be handled with the VisiumExperiment class by aid of the imagePaths methods.

imagePaths(ve) <- imageFilePath
imagePaths(ve)
## [1] "/tmp/RtmpzHSW63/Rinst2d1f10c5d97a/SpatialExperiment/extdata/10x_visium/images/tissue_lowres_image.png"

5.2.3 Scale Factors

Scale Factors stored during VisiumExperiment class creation can be get/set with scaleFactors method.

scaleFactors(ve)
## $spot_diameter_fullres
## [1] 89.44476
## 
## $tissue_hires_scalef
## [1] 0.1701114
## 
## $fiducial_diameter_fullres
## [1] 144.4877
## 
## $tissue_lowres_scalef
## [1] 0.05103343

5.2.4 Number of array barcoded-spots covered by tissue

The isInTissue method can be used to know which and how many spots are covered by the tissue.

sum(isInTissue(ve))
## [1] 22
ve[isInTissue(ve)]
## class: VisiumExperiment 
## dim: 22 50 
## metadata(0):
## assays(1): counts
## rownames: NULL
## rowData names(3): Feature_ID Feature_name Feature_type
## colnames: NULL
## colData names(1): Cell_ID
## reducedDimNames(0):
## altExpNames(0):
## spatialCoordinates(6): Cell_ID in_tissue ... pxl_col_in_fullres
##   pxl_row_in_fullres
## inTissue(1): 22
## imagePaths(1):
##   /tmp/RtmpzHSW63/Rinst2d1f10c5d97a/SpatialExperiment/extdata/10x_visium/images/tissue_lowres_image.png

6 Session Info

sessionInfo()
## R version 4.0.3 (2020-10-10)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.5 LTS
## 
## Matrix products: default
## BLAS:   /home/biocbuild/bbs-3.12-bioc/R/lib/libRblas.so
## LAPACK: /home/biocbuild/bbs-3.12-bioc/R/lib/libRlapack.so
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        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       
## 
## attached base packages:
## [1] parallel  stats4    stats     graphics  grDevices utils     datasets 
## [8] methods   base     
## 
## other attached packages:
##  [1] rjson_0.2.20                Matrix_1.2-18              
##  [3] SpatialExperiment_1.0.0     SingleCellExperiment_1.12.0
##  [5] SummarizedExperiment_1.20.0 Biobase_2.50.0             
##  [7] GenomicRanges_1.42.0        GenomeInfoDb_1.26.0        
##  [9] IRanges_2.24.0              S4Vectors_0.28.0           
## [11] BiocGenerics_0.36.0         MatrixGenerics_1.2.0       
## [13] matrixStats_0.57.0          BiocStyle_2.18.0           
## 
## loaded via a namespace (and not attached):
##  [1] knitr_1.30             XVector_0.30.0         magrittr_1.5          
##  [4] zlibbioc_1.36.0        lattice_0.20-41        rlang_0.4.8           
##  [7] stringr_1.4.0          tools_4.0.3            grid_4.0.3            
## [10] xfun_0.18              htmltools_0.5.0        yaml_2.2.1            
## [13] digest_0.6.27          bookdown_0.21          GenomeInfoDbData_1.2.4
## [16] BiocManager_1.30.10    bitops_1.0-6           RCurl_1.98-1.2        
## [19] evaluate_0.14          rmarkdown_2.5          DelayedArray_0.16.0   
## [22] stringi_1.5.3          compiler_4.0.3