Starting from Version 1.2.0, escheR
package supports
additional two data structures as input, including SpatialExperiment
and data.frame
from base
R. In addition,
escheR
supports in-situ visualization of image-based
spatially resolved data, which will be the focus of future
development.
SingleCellExperiment
SpatialExperiment
inherits
SingleCellExperiment
Following the same syntax, one can also visualize dimensionality
reduced embeddings of a SpatialExperiment
object by
providing the argument dimred
with a non-null value. Hence,
the first 2 columns of the corresponding reducedDim(spe)
assay will be used as the x-y coordinate of the plot, replacing
spatialCoords(spe)
.
library(escheR)
library(STexampleData)
library(scater)
library(scran)
spe <- Visium_humanDLPFC() |>
logNormCounts()
top.gene <- getTopHVGs(spe, n=500)
set.seed(100) # See below.
spe <- runPCA(spe, subset_row = top.gene)
make_escheR(
spe,
dimred = "PCA"
) |>
add_fill(var = "ground_truth") +
theme_minimal()
SpatialExperiment
ObjectTo demonstrate the principle that escheR
can be used to
visualize image-based spatially-resolved data pending optimization, we
include two image-based spatially resolved transcriptomics data
generated via seqFish platform and Slide-seq V2 platform respectively.
The two datasets have been previously curated in the STexampleData
package
library(STexampleData)
library(escheR)
spe_seqFISH <- seqFISH_mouseEmbryo()
make_escheR(spe_seqFISH) |>
add_fill(var = "embryo")
NOTE: trimming down the
colData(spe)
before piping into make-escheR could reduce the computation time to make the plots, specifically whencolData(spe)
contains extremely large number of irrelavent features/columns.
We aim to provide accessibility to all users regardless of their
programming background and preferred single-cell analysis pipelines.
Nevertheless , with limited resource, our sustaining efforts will
prioritize towards the maintenance of the established functionality and
the optimization for image-based spatially resolved data. We regret we
are not be able to provide seamless interface to other R pipelines such
as Seurat
and Giotto
in foreseeable
future.
Instead, we provide a generic function that works with a
data.frame
object as input. For example, relevant features
in Suerat
can be easily exported as a
data.frame
object manually or via
tidyseurat
[https://github.com/stemangiola/tidyseurat]. The exported
data frame can be pipe into escheR
.
library(escheR)
library(Seurat)
pbmc_small <- SeuratObject::pbmc_small
pbmc_2pc <- pbmc_small@reductions$pca@cell.embeddings[,1:2]
pbmc_meta <- pbmc_small@meta.data
#> Call generic function for make_escheR.data.frame
make_escheR(
object = pbmc_meta,
.x = pbmc_2pc[,1],
.y = pbmc_2pc[,2]) |>
add_fill(var = "groups")
utils::sessionInfo()
#> R version 4.3.1 (2023-06-16)
#> Platform: aarch64-apple-darwin20 (64-bit)
#> Running under: macOS Ventura 13.6.1
#>
#> Matrix products: default
#> BLAS: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib
#> LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.11.0
#>
#> locale:
#> [1] C/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
#>
#> time zone: America/New_York
#> tzcode source: internal
#>
#> attached base packages:
#> [1] stats4 stats graphics grDevices utils datasets methods
#> [8] base
#>
#> other attached packages:
#> [1] BumpyMatrix_1.10.0 scran_1.30.0
#> [3] scater_1.30.0 scuttle_1.12.0
#> [5] ggpubr_0.6.0 Matrix_1.6-0
#> [7] STexampleData_1.9.0 SpatialExperiment_1.12.0
#> [9] SingleCellExperiment_1.24.0 SummarizedExperiment_1.32.0
#> [11] Biobase_2.62.0 GenomicRanges_1.54.0
#> [13] GenomeInfoDb_1.38.0 IRanges_2.36.0
#> [15] S4Vectors_0.40.1 MatrixGenerics_1.14.0
#> [17] matrixStats_1.0.0 ExperimentHub_2.10.0
#> [19] AnnotationHub_3.10.0 BiocFileCache_2.10.1
#> [21] dbplyr_2.3.3 BiocGenerics_0.48.0
#> [23] escheR_1.2.0 ggplot2_3.4.2
#> [25] BiocStyle_2.30.0
#>
#> loaded via a namespace (and not attached):
#> [1] RColorBrewer_1.1-3 jsonlite_1.8.7
#> [3] magrittr_2.0.3 ggbeeswarm_0.7.2
#> [5] magick_2.7.4 farver_2.1.1
#> [7] rmarkdown_2.23 zlibbioc_1.48.0
#> [9] vctrs_0.6.3 memoise_2.0.1
#> [11] DelayedMatrixStats_1.24.0 RCurl_1.98-1.12
#> [13] rstatix_0.7.2 htmltools_0.5.5
#> [15] S4Arrays_1.2.0 curl_5.0.1
#> [17] BiocNeighbors_1.20.0 broom_1.0.5
#> [19] SparseArray_1.2.0 sass_0.4.6
#> [21] bslib_0.5.0 cachem_1.0.8
#> [23] igraph_1.5.0 mime_0.12
#> [25] lifecycle_1.0.3 pkgconfig_2.0.3
#> [27] rsvd_1.0.5 R6_2.5.1
#> [29] fastmap_1.1.1 GenomeInfoDbData_1.2.10
#> [31] shiny_1.7.4.1 digest_0.6.33
#> [33] colorspace_2.1-0 AnnotationDbi_1.64.0
#> [35] dqrng_0.3.0 irlba_2.3.5.1
#> [37] RSQLite_2.3.1 beachmat_2.18.0
#> [39] filelock_1.0.2 labeling_0.4.2
#> [41] fansi_1.0.4 httr_1.4.6
#> [43] abind_1.4-5 compiler_4.3.1
#> [45] bit64_4.0.5 withr_2.5.0
#> [47] backports_1.4.1 BiocParallel_1.36.0
#> [49] carData_3.0-5 viridis_0.6.3
#> [51] DBI_1.1.3 highr_0.10
#> [53] ggsignif_0.6.4 rappdirs_0.3.3
#> [55] DelayedArray_0.28.0 rjson_0.2.21
#> [57] bluster_1.12.0 tools_4.3.1
#> [59] vipor_0.4.5 beeswarm_0.4.0
#> [61] interactiveDisplayBase_1.40.0 httpuv_1.6.11
#> [63] glue_1.6.2 promises_1.2.0.1
#> [65] grid_4.3.1 cluster_2.1.4
#> [67] generics_0.1.3 gtable_0.3.3
#> [69] tidyr_1.3.0 metapod_1.10.0
#> [71] BiocSingular_1.18.0 ScaledMatrix_1.10.0
#> [73] car_3.1-2 utf8_1.2.3
#> [75] XVector_0.42.0 ggrepel_0.9.3
#> [77] BiocVersion_3.18.0 pillar_1.9.0
#> [79] limma_3.58.0 later_1.3.1
#> [81] dplyr_1.1.2 lattice_0.21-8
#> [83] bit_4.0.5 tidyselect_1.2.0
#> [85] locfit_1.5-9.8 Biostrings_2.70.1
#> [87] knitr_1.43 gridExtra_2.3
#> [89] bookdown_0.34 edgeR_4.0.0
#> [91] xfun_0.39 statmod_1.5.0
#> [93] yaml_2.3.7 evaluate_0.21
#> [95] codetools_0.2-19 tibble_3.2.1
#> [97] BiocManager_1.30.22 cli_3.6.1
#> [99] xtable_1.8-4 munsell_0.5.0
#> [101] jquerylib_0.1.4 Rcpp_1.0.11
#> [103] png_0.1-8 parallel_4.3.1
#> [105] ellipsis_0.3.2 blob_1.2.4
#> [107] sparseMatrixStats_1.14.0 bitops_1.0-7
#> [109] viridisLite_0.4.2 scales_1.2.1
#> [111] purrr_1.0.1 crayon_1.5.2
#> [113] rlang_1.1.1 cowplot_1.1.1
#> [115] KEGGREST_1.42.0