The iSEEfier
User’s
Guide
This vignette describes how to use the iSEEfier
package to configure various initial states of iSEE instances, in order
to simplify the task of visualizing single-cell RNA-seq, bulk RNA-seq
data, or even your proteomics data in iSEE. In the
remainder of this vignette, we will illustrate the main features of
r BiocStyle::Biocpkg("iSEEfier")
on a publicly available
dataset from Baron et al. “A Single-Cell Transcriptomic Map of the Human
and Mouse Pancreas Reveals Inter- and Intra-cell Population Structure”,
published in Cell Systems in 2016. doi:10.1016/j.cels.2016.08.011.
The data is made available via the scRNAseq
Bioconductor package. We’ll simply use the mouse dataset, consisting of
islets isolated from five C57BL/6 and ICR mice. # Getting started
{#gettingstarted} To install iSEEfier
package, we start R and enter:
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("iSEEfier")
Once installed, the package can be loaded and attached to the current workspace as follows:
iSEEinit()
When we have all input elements ready, we can create an
iSEE
initial state by running:
iSEEinit(sce = sce_obj,
features = feature_list,
reddim.type = reduced_dim,
clusters = cluster,
groups = group,
add_markdown_panel = FALSE)
To configure the initial state of our iSEE
instance
using iSEEinit()
, we need five parameters:
sce
: A SingleCellExperiment
object. This
object stores information of different quantifications (counts,
log-expression…), dimensionality reduction coordinates (t-SNE, UMAP…),
as well as some metadata related to the samples and features. We’ll
start by loading the sce
object:library("scRNAseq")
sce <- BaronPancreasData('mouse')
sce
#> class: SingleCellExperiment
#> dim: 14878 1886
#> metadata(0):
#> assays(1): counts
#> rownames(14878): X0610007P14Rik X0610009B22Rik ... Zzz3 l7Rn6
#> rowData names(0):
#> colnames(1886): mouse1_lib1.final_cell_0001 mouse1_lib1.final_cell_0002
#> ... mouse2_lib3.final_cell_0394 mouse2_lib3.final_cell_0395
#> colData names(2): strain label
#> reducedDimNames(0):
#> mainExpName: NULL
#> altExpNames(0):
Let’s add the normalized counts
Now we can add different dimensionality reduction coordinates
Now our sce
is ready, we can move on to the next
argument.
features
: which is a vector or a dataframe containing
the genes/features of interest. Let’s say we would like to visualize the
expression of some genes that were identified as marker genes for
different cell population.reddim_type
: In this example we decided to plot our
data as a t-SNE plot.clusters
: Now we specify what
clusters/cell-types/states/samples we would like to color/split our data
withgroups
: Here we can add the
groups/conditions/cell-typesWe can choose to include in this initial step a
MarkdownBoard
by setting the arguments
add_markdown_panel
to TRUE
. At this point, all
the elements are ready to be transferred into
iSEEinit()
initial1 <- iSEEinit(sce = sce,
features = gene_list,
clusters = cluster,
groups = group,
add_markdown_panel = TRUE)
In case our features
parameter was a data.frame, we
could assign the name of the column containing the features to the
gene_id
parameter.
Now we are one step away from visualizing our list of genes of
interest. All that’s left to do is to run iSEE
with the
initial state created with iSEEinit()
This instance, generated with iSEEinit()
, returns a
combination of panels, linked to each other, with the goal of
visualizing the expression of certain marker genes in each cell
population/group:
ReducedDimensionPlot
, FeatureAssayPlot
and RowDataTable
for each single gene in
features
.ComplexHeatmapPlot
with all genes in
features
ColumnDataPlot
panelMarkdownBoard
paneliSEEnrich()
Sometimes it is interesting to look at some specific feature sets and
the associated genes. That’s when the utility of iSEEnrich
becomes apparent. We will need 4 elements to explore feature sets of
interest:
sce
: A SingleCellExperiment objectcollection
: A character vector specifying the gene set
collections of interest (it is possible to use GO or KEGG terms)gene_identifier
: A character string specifying the
identifier to use to extract gene IDs for the organism package. This can
be “ENS” for ENSEMBL ids, “SYMBOL” for
gene names…organism
: A character string of the
org.*.eg.db
package to use to extract mappings of gene sets
to gene IDs.reddim_type
: A string vector containing the
dimensionality reduction typeclusters
: A character string containing the name of the
clusters/cell-type/state…(as listed in the colData of the sce)groups
: A character string of the groups/conditions…(as
it appears in the colData of the sce)GO_collection <- "GO"
Mm_organism <- "org.Mm.eg.db"
gene_id <- "SYMBOL"
cluster <- "label"
group <- "strain"
reddim_type <- "PCA"
Now let’s create this initial setup for iSEE
using
iSEEnrich()
results <- iSEEnrich(sce = sce,
collection = GO_collection,
organism = Mm_organism,
gene_identifier = gene_id,
clusters = cluster,
groups = group,
reddim_type = reddim_type)
iSEEnrich
will specifically return a list with the
updated sce
object and its associated initial
configuration. To start the iSEE
instance we run:
iSEEmarker()
In many cases, we are interested in determining the identity of our
clusters, or further subset our cells types. That’s where
iSEEmarker()
comes in handy. Similar to
iSEEinit()
, we need the following parameters:
sce
: a SingleCellExperiment
objectclusters
: the name of the clusters/cell-type/stategroups
: the groups/conditionsselection_plot_format
: the class of the panel that we
will be using to select the clusters of interest.initial3 <- iSEEmarker(
sce = sce,
clusters = cluster,
groups = group,
selection_plot_format = "ColumnDataPlot")
This function returns a list of panels, with the goal of visualizing
the expression of marker genes selected from the
DynamicMarkerTable
in each cell cell type. Unlike
iSEEinit()
, which requires us to specify a list of genes,
iSEEmarker()
utilizes the DynamicMarkerTable
that performs statistical testing through the findMarkers()
function from the scran
package. To start exploring the marker genes of each cell type with
iSEE
, we run:
view_initial_tiles()
Previously, we successfully generated three distinct initial
configurations for iSEE. However, understanding the expected content of
our iSEE instances is not always straightforward. That’s when we can use
view_initial_tiles()
. We only need as an input the initial
configuration to obtain a graphical visualization of the expected the
corresponding iSEE
instance:
view_initial_network()
As some of these panels are linked to each other, we can visualize
these networks with view_initial_network()
. Similar to
iSEEconfigviewer()
, this function takes the initial setup
as input: This function always returns the igraph
object
underlying the visualizations that can be displayed as a side
effect.
library("igraph")
library("visNetwork")
g1 <- view_initial_network(initial1, plot_format = "igraph")
g1
#> IGRAPH bf881c9 DN-- 11 3 --
#> + attr: name (v/c), color (v/c)
#> + edges from bf881c9 (vertex names):
#> [1] ReducedDimensionPlot1->ColumnDataPlot1
#> [2] ReducedDimensionPlot2->ColumnDataPlot1
#> [3] ReducedDimensionPlot3->FeatureAssayPlot3
initial2 <- results$initial
g2 <- view_initial_network(initial2, plot_format = "visNetwork")
glue_initials()
Sometimes, it would be interesting to merge different
iSEE
initial configurations to visualize all different
panel in the same iSEE
instance.
We can then preview the content of this initial configuration
sessionInfo()
#> R version 4.4.2 (2024-10-31)
#> Platform: x86_64-pc-linux-gnu
#> Running under: Ubuntu 24.04.1 LTS
#>
#> Matrix products: default
#> BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
#> LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so; LAPACK version 3.12.0
#>
#> 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
#>
#> time zone: Etc/UTC
#> tzcode source: system (glibc)
#>
#> attached base packages:
#> [1] stats4 stats graphics grDevices utils datasets methods
#> [8] base
#>
#> other attached packages:
#> [1] visNetwork_2.1.2 igraph_2.1.1
#> [3] scater_1.35.0 ggplot2_3.5.1
#> [5] scuttle_1.17.0 scRNAseq_2.20.0
#> [7] SingleCellExperiment_1.29.1 SummarizedExperiment_1.37.0
#> [9] Biobase_2.67.0 GenomicRanges_1.59.1
#> [11] GenomeInfoDb_1.43.2 IRanges_2.41.1
#> [13] S4Vectors_0.45.2 BiocGenerics_0.53.3
#> [15] generics_0.1.3 MatrixGenerics_1.19.0
#> [17] matrixStats_1.4.1 iSEEfier_1.3.0
#> [19] BiocStyle_2.35.0
#>
#> loaded via a namespace (and not attached):
#> [1] splines_4.4.2 later_1.4.1 BiocIO_1.17.1
#> [4] bitops_1.0-9 filelock_1.0.3 tibble_3.2.1
#> [7] XML_3.99-0.17 lifecycle_1.0.4 httr2_1.0.7
#> [10] doParallel_1.0.17 lattice_0.22-6 ensembldb_2.31.0
#> [13] alabaster.base_1.7.2 magrittr_2.0.3 sass_0.4.9
#> [16] rmarkdown_2.29 jquerylib_0.1.4 yaml_2.3.10
#> [19] httpuv_1.6.15 DBI_1.2.3 buildtools_1.0.0
#> [22] RColorBrewer_1.1-3 abind_1.4-8 zlibbioc_1.52.0
#> [25] Rtsne_0.17 AnnotationFilter_1.31.0 RCurl_1.98-1.16
#> [28] rappdirs_0.3.3 circlize_0.4.16 GenomeInfoDbData_1.2.13
#> [31] ggrepel_0.9.6 irlba_2.3.5.1 alabaster.sce_1.7.0
#> [34] maketools_1.3.1 iSEEhex_1.9.0 codetools_0.2-20
#> [37] DelayedArray_0.33.2 DT_0.33 tidyselect_1.2.1
#> [40] shape_1.4.6.1 farver_2.1.2 UCSC.utils_1.3.0
#> [43] viridis_0.6.5 ScaledMatrix_1.15.0 shinyWidgets_0.8.7
#> [46] BiocFileCache_2.15.0 GenomicAlignments_1.43.0 jsonlite_1.8.9
#> [49] GetoptLong_1.0.5 BiocNeighbors_2.1.1 iterators_1.0.14
#> [52] foreach_1.5.2 tools_4.4.2 Rcpp_1.0.13-1
#> [55] glue_1.8.0 gridExtra_2.3 SparseArray_1.7.2
#> [58] BiocBaseUtils_1.9.0 xfun_0.49 mgcv_1.9-1
#> [61] dplyr_1.1.4 HDF5Array_1.35.2 gypsum_1.3.0
#> [64] shinydashboard_0.7.2 withr_3.0.2 BiocManager_1.30.25
#> [67] fastmap_1.2.0 rhdf5filters_1.19.0 fansi_1.0.6
#> [70] shinyjs_2.1.0 rsvd_1.0.5 digest_0.6.37
#> [73] R6_2.5.1 mime_0.12 colorspace_2.1-1
#> [76] listviewer_4.0.0 RSQLite_2.3.8 utf8_1.2.4
#> [79] hexbin_1.28.5 FNN_1.1.4.1 rtracklayer_1.67.0
#> [82] httr_1.4.7 htmlwidgets_1.6.4 S4Arrays_1.7.1
#> [85] org.Mm.eg.db_3.20.0 uwot_0.2.2 iSEE_2.19.0
#> [88] pkgconfig_2.0.3 gtable_0.3.6 blob_1.2.4
#> [91] ComplexHeatmap_2.23.0 XVector_0.47.0 sys_3.4.3
#> [94] htmltools_0.5.8.1 ProtGenerics_1.39.0 rintrojs_0.3.4
#> [97] clue_0.3-66 scales_1.3.0 alabaster.matrix_1.7.2
#> [100] png_0.1-8 knitr_1.49 rjson_0.2.23
#> [103] nlme_3.1-166 curl_6.0.1 shinyAce_0.4.3
#> [106] cachem_1.1.0 rhdf5_2.51.0 GlobalOptions_0.1.2
#> [109] BiocVersion_3.21.1 parallel_4.4.2 miniUI_0.1.1.1
#> [112] vipor_0.4.7 AnnotationDbi_1.69.0 restfulr_0.0.15
#> [115] pillar_1.9.0 grid_4.4.2 alabaster.schemas_1.7.0
#> [118] vctrs_0.6.5 promises_1.3.2 BiocSingular_1.23.0
#> [121] dbplyr_2.5.0 iSEEu_1.19.0 beachmat_2.23.2
#> [124] xtable_1.8-4 cluster_2.1.6 beeswarm_0.4.0
#> [127] evaluate_1.0.1 GenomicFeatures_1.59.1 cli_3.6.3
#> [130] compiler_4.4.2 Rsamtools_2.23.1 rlang_1.1.4
#> [133] crayon_1.5.3 ggbeeswarm_0.7.2 viridisLite_0.4.2
#> [136] alabaster.se_1.7.0 BiocParallel_1.41.0 munsell_0.5.1
#> [139] Biostrings_2.75.1 lazyeval_0.2.2 colourpicker_1.3.0
#> [142] Matrix_1.7-1 ExperimentHub_2.15.0 bit64_4.5.2
#> [145] Rhdf5lib_1.29.0 KEGGREST_1.47.0 shiny_1.9.1
#> [148] alabaster.ranges_1.7.0 AnnotationHub_3.15.0 memoise_2.0.1
#> [151] bslib_0.8.0 bit_4.5.0
iSEEinit()
iSEEnrich()
iSEEmarker()
view_initial_tiles()
view_initial_network()
glue_initials()