if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("SingleCellMultiModal")
library(MultiAssayExperiment)
library(SpatialExperiment)
library(SingleCellMultiModal)
The dataset consists of two data types, seq-FISH data was provided by Zhu et al. (2018), while scRNA-seq data was provided by Tasic et al. (2016).
Data have been retrievedas part of the Hackathon in the Mathematical Frameworks for Integrative Analysis of Emerging Biological DataTypes workshop.
The user can see the available dataset by using the default options
seqFISH(
DataType="mouse_visual_cortex", modes="*", dry.run=TRUE, version="2.0.0"
)
## snapshotDate(): 2022-10-31
## ah_id mode file_size rdataclass rdatadateadded
## 1 EH3785 scRNA_Counts 0.2 Mb matrix 2020-09-14
## 2 EH3786 scRNA_Labels 0 Mb data.frame 2020-09-14
## 3 EH3787 seqFISH_Coordinates 0 Mb data.frame 2020-09-14
## 4 EH3788 seqFISH_Counts 0.2 Mb matrix 2020-09-14
## 5 EH3789 seqFISH_Labels 0 Mb data.frame 2020-09-14
## rdatadateremoved
## 1 <NA>
## 2 <NA>
## 3 <NA>
## 4 <NA>
## 5 <NA>
Or simply by running:
seqfish <- seqFISH(
DataType="mouse_visual_cortex", modes="*", dry.run=FALSE, version="2.0.0"
)
## snapshotDate(): 2022-10-31
## Working on: scRNA_Counts
## Working on: scRNA_Labels
## Working on: seqFISH_Coordinates
## Working on: seqFISH_Counts
## Working on: seqFISH_Labels
## see ?SingleCellMultiModal and browseVignettes('SingleCellMultiModal') for documentation
## loading from cache
## see ?SingleCellMultiModal and browseVignettes('SingleCellMultiModal') for documentation
## loading from cache
## see ?SingleCellMultiModal and browseVignettes('SingleCellMultiModal') for documentation
## loading from cache
## see ?SingleCellMultiModal and browseVignettes('SingleCellMultiModal') for documentation
## loading from cache
## see ?SingleCellMultiModal and browseVignettes('SingleCellMultiModal') for documentation
## loading from cache
## Warning: 'ExperimentList' contains 'data.frame' or 'DataFrame',
## potential for errors with mixed data types
## Warning: 'ExperimentList' contains 'data.frame' or 'DataFrame',
## potential for errors with mixed data types
## Warning: 'ExperimentList' contains 'data.frame' or 'DataFrame',
## potential for errors with mixed data types
## Note: spatialData and spatialDataNames have been deprecated; all columns should be stored in colData and spatialCoords
seqfish
## A MultiAssayExperiment object of 2 listed
## experiments with user-defined names and respective classes.
## Containing an ExperimentList class object of length 2:
## [1] seqFISH: SpatialExperiment with 113 rows and 1597 columns
## [2] scRNAseq: SingleCellExperiment with 113 rows and 1722 columns
## Functionality:
## experiments() - obtain the ExperimentList instance
## colData() - the primary/phenotype DataFrame
## sampleMap() - the sample coordination DataFrame
## `$`, `[`, `[[` - extract colData columns, subset, or experiment
## *Format() - convert into a long or wide DataFrame
## assays() - convert ExperimentList to a SimpleList of matrices
## exportClass() - save data to flat files
Extract the list of experiments without the associated colData.
experiments(seqfish)
## ExperimentList class object of length 2:
## [1] seqFISH: SpatialExperiment with 113 rows and 1597 columns
## [2] scRNAseq: SingleCellExperiment with 113 rows and 1722 columns
Check row annotations for all experiments:
rownames(seqfish)
## CharacterList of length 2
## [["seqFISH"]] abca15 abca9 acta2 adcy4 aldh3b2 ... wrn zfp182 zfp715 zfp90
## [["scRNAseq"]] abca15 abca9 acta2 adcy4 aldh3b2 ... wrn zfp182 zfp715 zfp90
Take a peek at the sampleMap
(graph representation of assays, cells, and
barcodes):
sampleMap(seqfish)
## DataFrame with 3319 rows and 3 columns
## assay primary colname
## <factor> <character> <character>
## 1 seqFISH V2 V2
## 2 seqFISH V3 V3
## 3 seqFISH V4 V4
## 4 seqFISH V5 V5
## 5 seqFISH V6 V6
## ... ... ... ...
## 3315 scRNAseq V1719 V1719
## 3316 scRNAseq V1720 V1720
## 3317 scRNAseq V1721 V1721
## 3318 scRNAseq V1722 V1722
## 3319 scRNAseq V1723 V1723
upsetSamples(seqfish)
This shows that about 1597 cells match across both modalities / assays.
The scRNA-seq data are accessible with $scRNAseq
, which returns a
SingleCellExperiment class object, with all its associated methods.
seqfish[["scRNAseq"]]
## class: SingleCellExperiment
## dim: 113 1722
## metadata(0):
## assays(1): counts
## rownames(113): abca15 abca9 ... zfp715 zfp90
## rowData names(0):
## colnames(1722): V2 V3 ... V1722 V1723
## colData names(3): broad_type sample_name dissection
## reducedDimNames(0):
## mainExpName: NULL
## altExpNames(0):
Otherwhise the assay
function can be used to access the scRNAseq assay
stored in the seqfish
MultiAssayExperiment object.
head(assay(seqfish, "scRNAseq"))[,1:4]
## V2 V3 V4 V5
## abca15 11 42 17 42
## abca9 22 46 22 46
## acta2 15 47 15 42
## adcy4 12 45 12 45
## aldh3b2 27 49 27 49
## amigo2 23 43 101 43
The seq-FISH data are accessible with $seqFISH
, which returns a
SpatialExperiment class object.
seqfish[["seqFISH"]]
## class: SpatialExperiment
## dim: 113 1597
## metadata(0):
## assays(1): counts
## rownames(113): abca15 abca9 ... zfp715 zfp90
## rowData names(1): X
## colnames(1597): V2 V3 ... V1597 V1598
## colData names(7): Cell_ID cluster ... Prob sample_id
## reducedDimNames(0):
## mainExpName: NULL
## altExpNames(0):
## spatialCoords names(2) : x y
## imgData names(0):
Otherwhise the assay
function can be used to access the seqFISH assay
stored in the seqfish
MultiAssayExperiment object.
head(assay(seqfish, "seqFISH"))[,1:4]
## V2 V3 V4 V5
## abca15 68 49 50 39
## abca9 41 42 38 36
## acta2 25 23 16 21
## adcy4 39 54 37 18
## aldh3b2 101 47 41 52
## amigo2 93 64 93 93
Spatial data can be retrieved with spatialData
function on the
SpatialExperiment object.
(sd <- spatialData(seqfish[["seqFISH"]]))
## Note: spatialData and spatialDataNames have been deprecated; all columns should be stored in colData and spatialCoords
## DataFrame with 1597 rows and 2 columns
## Cell_ID Irrelevant
## <integer> <integer>
## V2 1 100
## V3 2 100
## V4 3 100
## V5 4 100
## V6 5 100
## ... ... ...
## V1594 1593 100
## V1595 1594 100
## V1596 1595 100
## V1597 1596 100
## V1598 1597 100
Spatial coordinates within the spatial data can be retrieved in matrix form
with spatialCoords
function on the SpatialExperiment object.
head(sc <- spatialCoords(seqfish[["seqFISH"]]))
## x y
## [1,] 265.76 -231.14
## [2,] 290.48 -261.52
## [3,] 257.12 -133.35
## [4,] 753.46 -261.14
## [5,] 700.01 -169.05
## [6,] 415.63 -252.45
Direct access to the colnames of the spacial coordinates with
spatialCoordsNames
function.
spatialCoordsNames(seqfish[["seqFISH"]])
## [1] "x" "y"
The provided seqFISH dataset comes out in two different versions:
The full scRNA-seq data matrix is 24057 rows x 1809 columns.
To access the v1.0.0 simply run
seqFISH(
DataType="mouse_visual_cortex", modes="*", dry.run=FALSE, version="1.0.0"
)
## snapshotDate(): 2022-10-31
## Working on: scRNA_Full_Counts
## Working on: scRNA_Full_Labels
## Working on: seqFISH_Coordinates
## Working on: seqFISH_Counts
## Working on: seqFISH_Labels
## see ?SingleCellMultiModal and browseVignettes('SingleCellMultiModal') for documentation
## loading from cache
## see ?SingleCellMultiModal and browseVignettes('SingleCellMultiModal') for documentation
## loading from cache
## see ?SingleCellMultiModal and browseVignettes('SingleCellMultiModal') for documentation
## loading from cache
## see ?SingleCellMultiModal and browseVignettes('SingleCellMultiModal') for documentation
## loading from cache
## see ?SingleCellMultiModal and browseVignettes('SingleCellMultiModal') for documentation
## loading from cache
## Warning: 'ExperimentList' contains 'data.frame' or 'DataFrame',
## potential for errors with mixed data types
## Warning: 'ExperimentList' contains 'data.frame' or 'DataFrame',
## potential for errors with mixed data types
## Warning: 'ExperimentList' contains 'data.frame' or 'DataFrame',
## potential for errors with mixed data types
## Note: spatialData and spatialDataNames have been deprecated; all columns should be stored in colData and spatialCoords
## A MultiAssayExperiment object of 2 listed
## experiments with user-defined names and respective classes.
## Containing an ExperimentList class object of length 2:
## [1] seqFISH: SpatialExperiment with 113 rows and 1597 columns
## [2] scRNAseq: SingleCellExperiment with 24057 rows and 1809 columns
## Functionality:
## experiments() - obtain the ExperimentList instance
## colData() - the primary/phenotype DataFrame
## sampleMap() - the sample coordination DataFrame
## `$`, `[`, `[[` - extract colData columns, subset, or experiment
## *Format() - convert into a long or wide DataFrame
## assays() - convert ExperimentList to a SimpleList of matrices
## exportClass() - save data to flat files
sessionInfo()
## R version 4.2.3 (2023-03-15)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 20.04.6 LTS
##
## Matrix products: default
## BLAS: /home/biocbuild/bbs-3.16-bioc/R/lib/libRblas.so
## LAPACK: /home/biocbuild/bbs-3.16-bioc/R/lib/libRlapack.so
##
## 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
##
## attached base packages:
## [1] stats4 stats graphics grDevices utils datasets methods
## [8] base
##
## other attached packages:
## [1] SpatialExperiment_1.8.1 scater_1.26.1
## [3] ggplot2_3.4.2 scran_1.26.2
## [5] scuttle_1.8.4 rhdf5_2.42.1
## [7] SingleCellExperiment_1.20.1 RaggedExperiment_1.22.0
## [9] SingleCellMultiModal_1.10.1 MultiAssayExperiment_1.24.0
## [11] SummarizedExperiment_1.28.0 Biobase_2.58.0
## [13] GenomicRanges_1.50.2 GenomeInfoDb_1.34.9
## [15] IRanges_2.32.0 S4Vectors_0.36.2
## [17] BiocGenerics_0.44.0 MatrixGenerics_1.10.0
## [19] matrixStats_0.63.0 BiocStyle_2.26.0
##
## loaded via a namespace (and not attached):
## [1] AnnotationHub_3.6.0 BiocBaseUtils_1.0.0
## [3] BiocFileCache_2.6.1 plyr_1.8.8
## [5] igraph_1.4.2 BiocParallel_1.32.6
## [7] digest_0.6.31 htmltools_0.5.5
## [9] viridis_0.6.2 magick_2.7.4
## [11] fansi_1.0.4 magrittr_2.0.3
## [13] memoise_2.0.1 ScaledMatrix_1.6.0
## [15] cluster_2.1.4 limma_3.54.2
## [17] Biostrings_2.66.0 R.utils_2.12.2
## [19] colorspace_2.1-0 blob_1.2.4
## [21] rappdirs_0.3.3 ggrepel_0.9.3
## [23] xfun_0.38 dplyr_1.1.1
## [25] crayon_1.5.2 RCurl_1.98-1.12
## [27] jsonlite_1.8.4 glue_1.6.2
## [29] gtable_0.3.3 zlibbioc_1.44.0
## [31] XVector_0.38.0 UpSetR_1.4.0
## [33] DelayedArray_0.24.0 BiocSingular_1.14.0
## [35] DropletUtils_1.18.1 Rhdf5lib_1.20.0
## [37] HDF5Array_1.26.0 scales_1.2.1
## [39] DBI_1.1.3 edgeR_3.40.2
## [41] Rcpp_1.0.10 viridisLite_0.4.1
## [43] xtable_1.8-4 dqrng_0.3.0
## [45] bit_4.0.5 rsvd_1.0.5
## [47] metapod_1.6.0 httr_1.4.5
## [49] ellipsis_0.3.2 pkgconfig_2.0.3
## [51] R.methodsS3_1.8.2 farver_2.1.1
## [53] uwot_0.1.14 sass_0.4.5
## [55] dbplyr_2.3.2 locfit_1.5-9.7
## [57] utf8_1.2.3 tidyselect_1.2.0
## [59] labeling_0.4.2 rlang_1.1.0
## [61] later_1.3.0 AnnotationDbi_1.60.2
## [63] munsell_0.5.0 BiocVersion_3.16.0
## [65] tools_4.2.3 cachem_1.0.7
## [67] cli_3.6.1 generics_0.1.3
## [69] RSQLite_2.3.1 ExperimentHub_2.6.0
## [71] evaluate_0.20 fastmap_1.1.1
## [73] yaml_2.3.7 knitr_1.42
## [75] bit64_4.0.5 purrr_1.0.1
## [77] KEGGREST_1.38.0 sparseMatrixStats_1.10.0
## [79] mime_0.12 formatR_1.14
## [81] R.oo_1.25.0 compiler_4.2.3
## [83] beeswarm_0.4.0 filelock_1.0.2
## [85] curl_5.0.0 png_0.1-8
## [87] interactiveDisplayBase_1.36.0 tibble_3.2.1
## [89] statmod_1.5.0 bslib_0.4.2
## [91] highr_0.10 lattice_0.21-8
## [93] bluster_1.8.0 Matrix_1.5-4
## [95] vctrs_0.6.1 pillar_1.9.0
## [97] lifecycle_1.0.3 rhdf5filters_1.10.1
## [99] BiocManager_1.30.20 jquerylib_0.1.4
## [101] RcppAnnoy_0.0.20 BiocNeighbors_1.16.0
## [103] cowplot_1.1.1 bitops_1.0-7
## [105] irlba_2.3.5.1 httpuv_1.6.9
## [107] R6_2.5.1 bookdown_0.33
## [109] promises_1.2.0.1 gridExtra_2.3
## [111] vipor_0.4.5 codetools_0.2-19
## [113] rjson_0.2.21 withr_2.5.0
## [115] GenomeInfoDbData_1.2.9 parallel_4.2.3
## [117] grid_4.2.3 beachmat_2.14.2
## [119] rmarkdown_2.21 DelayedMatrixStats_1.20.0
## [121] shiny_1.7.4 ggbeeswarm_0.7.1
Tasic, Bosiljka, Vilas Menon, Thuc Nghi Nguyen, Tae Kyung Kim, Tim Jarsky, Zizhen Yao, Boaz Levi, et al. 2016. “Adult Mouse Cortical Cell Taxonomy Revealed by Single Cell Transcriptomics.” Nature Neuroscience 19 (2): 335.
Zhu, Qian, Sheel Shah, Ruben Dries, Long Cai, and Guo-Cheng Yuan. 2018. “Identification of Spatially Associated Subpopulations by Combining scRNAseq and Sequential Fluorescence in Situ Hybridization Data.” Nature Biotechnology 36 (12): 1183.