The STarlight package is an R package designed for the exploratory analysis of cell or molecule coordinates obtained from Spatial omics experiments (e.g. Merscope, Xenium or CosMx). By employing a grid-based approach, STarlight enables to explore the datasets at multiple scales and resolution and to discover spatial patterns and relationships. STarlight also implements various function to perfors multi-sample comparisons and assess the dynamics over biological conditions.
We are going to use a subset (64 genes) of a 10x Genomics dataset taken from the Xenium Explorer Demo. The region corresponds to a fresh frozen mouse brain coronal section. The original dataset can be downloaded here.
## Create a temporary folder
tmpdir <- tempdir()
dir.create(tmpdir, showWarnings = FALSE)
remote_file <- "Xenium_Mouse_Brain_Coronal_tiny.csv.gz"
## Download and unzip the file
url_data <- paste0("https://zenodo.org/records/11371819/files/",
remote_file)
dest_file <- file.path(tmpdir, remote_file)
download.file(url_data, destfile = dest_file)The load_spatial() function is the entry point of the
STarlight package. It allows you to load molecule
coordinates and create a 2D binned grid (default size of 25µm) that will
be stored in an S4 object of class STGrid. Since we are working with a
csv flat file containing x/y molecular coordinates and gene names we do
not need to specify the argument method. If you have access
to the full Xenium directory, you can use the arguments
method="xenium" and path="path/to/directory"
to load the data.
st_obj <- load_spatial(path = dest_file,
method = "coordinates",
sep=",",
mapping = c(feature="feature_name",
x="x_location",
y="y_location"),
bin_size = 25,
control = "(NegControlProbe_)|(BLANK_)", verbose = FALSE)Using the argument control in the
load_spatial function allows users to identify
blank/control probes in their data. The probes can be removed using the
command below:
st_obj <- rm_controls(st_obj)The Spatial Transcriptomic Grid class (STGrid) is a structured framework for managing and analyzing data. It facilitates the exploration and interpretation of spatial gene expression patterns within tissue sections.
STarlight::set_verb_level(1)
st_obj
#> |-- INFO : An object of class STGrid
#> |-- INFO : Number of counts: 2151300
#> |-- INFO : Number of features: 61
#> |-- INFO : Bin size: 25
#> |-- INFO : Number of bins (x axis): 218
#> |-- INFO : Number of bins (y axis): 141
#> |-- INFO : x_min: 7.1552773
#> |-- INFO : x_max: 5447.244
#> |-- INFO : y_min: 12.103435
#> |-- INFO : y_max: 3534.868
#> |-- INFO : >>> Please, use show_st_methods() to show availables methods <<<Here are the slots contained in the object:
slotNames(st_obj)
#> [1] "coord" "bin_mat" "y_max"
#> [4] "y_min" "x_min" "x_max"
#> [7] "path" "method" "meta"
#> [10] "bin_size" "bin_x" "bin_y"
#> [13] "ripley_k_function" "control"Multiple methods are supported by the STGrid object:
STarlight::show_st_methods()
#> [1] "[" "[[" "[[<-"
#> [4] "$" "$<-" "as_matrix"
#> [7] "bin_mat" "bin_size" "bin_x"
#> [10] "bin_y" "cc_neighborhood" "check_features_exist"
#> [13] "col_names" "compute_k_ripley" "compute_module_score"
#> [16] "connected_components" "coord" "create_hull"
#> [19] "dim" "feat_names" "feature_contrast"
#> [22] "get_coord" "hc_tree" "meta_names"
#> [25] "meta" "multi_feat_contrast" "nb_feat"
#> [28] "nb_items" "nbin_x" "nbin_y"
#> [31] "order_feat_by_ripley" "plot_rip_k" "re_bin"
#> [34] "ripley_k_function" "rm_controls" "row_names"
#> [37] "show" "spatial_image" "spatial_plot"
#> [40] "summary" "tab" "table_st"
#> [43] "write_coord"We’ve made it easy for users to subset data in their STGrid object using the “[” operator. This is designed to facilitate the extraction of specific genes or regions for a more focused analysis.
We can explore the binning information stored within the STGrid
object using bin_x() and bin_y().
This command retrieves the first few entries of the bin_x vector (bins along the x-axis).
Similarly, this command retrieves the first few entries of the
bin_y vector (bins along the y-axis).
We can leverage the subsetting function to extract data corresponding to specific bins along the x-axis (i.e. bins from the 50th to the 100th entry of the bin_x vector). The following command extracts a subset of the data and saves it to a new STGrid object.
subset <- st_obj[bin_x(st_obj)[50:100], ]We can also extract data associated to specific genes. Here we extract data corresponding to the genes Chat and Cbln4:
st_obj[c("Chat", "Cbln4"), ]We can retrieve data based on the position of genes within the
feat_names() vector of the STGrid object. Let’s extract
data for the first 10 genes according to their position in the
feat_names() vector:
st_obj[feat_names(st_obj)[1:10], ]Users can also explore data for the 10th to 12th genes using numeric indices. We first start by determining the total number of genes in our STGrid object:
nb_feat(st_obj)We then retrieve data for genes positioned 10 through 12 in the
feat_names() vector.
st_obj[10:12, ]The spatial_image() function allows users to visualize
the spatial density of molecules across tissue sections. Users can do
the following if they want to visualize a single gene. The
grid=TRUE argument overlays a bin of a specified size,
which eases the selection of particular regions.
p <- spatial_image(
st_obj,
feat = "Ano1",
grid = 20,
logb = 10,
scale = TRUE,
saturation = 0.9
)Users can choose to zoom into specific regions. For
example, we can zoom into the region with a high Ano1 molecule
density (upper right corner of the image above). We use
rebin() to increase the binning resolution of the selected
region.
x_bins <- bin_x(st_obj)[181:nbin_x(st_obj)]
y_bins <- bin_y(st_obj)[101:nbin_y(st_obj)]
st_obj_r1 <- st_obj[x_bins, y_bins]
spatial_image(
re_bin(st_obj_r1[c("Ano1", "Chat"),], bin_size = 5, verbose = FALSE),
feat = c("Ano1", "Chat"),
logb = 10,
scale = TRUE,
saturation = 0.9
)
The spatial_plot() function can be used to create
scatter plots of molecular x/y coordinates. We can choose to highlight
other molecules potentially located in the vicinity of
Ano1.
spatial_plot(
st_obj[x_bins, y_bins],
feat_list = c("Ano1",
"Chat",
"Ebf3"),
colors = ggsci::pal_aaas()(3),
size = 0.6
)
This function can be used to compare the log2 ratio between two genes across x/y bins. Several genes pairs can be provided.
feature_contrast(
st_obj,
feat_list_1 = c("Nwd2",
"Kctd8",
"Chat"),
feat_list_2 = c("Igf1",
"Ebf3",
"Hat1"),
centered = TRUE,
trim_ratio = 0.025)
This function performs a contrast analysis between multiple features (genes) by binarizing gene expression based on a user-defined threshold across x/y bins. An STGrid object is used as input. For each bin, a binary vector is computed and encoded as a color (e.g 000, none of 3 genes are above the threshold; 100, gene 1 is the only one above the threshold; 110, gene 1 and 2 are both above the threshold…). The number of colors required increases rapidly (2^(length(feat_list))) as the number of genes increases. It is advised not to go beyond 4 features/genes.
multi_feat_contrast(
st_obj,
feat_list = c("Ebf3",
"Kctd8",
"Chat",
"Ano1"),
threshold = 2) 
Cell populations expressing a specific marker may be found more or less clustered in the tissue. The bins containing the corresponding molecules may appear as connected components that can be captured using the connected_components() function. The connected components are stored in the meta slot of the STGrid object and named with original feature name and a “_cpt” suffix. Here we will search for connected components displaying at least 1 count for Nwd2 filtering out those with surface lower than 9 bins. We will also add a hull around the connected components.
st_obj <- connected_components(st_obj, feat_list = "Nwd2",
threshold = 1, min_size = 9)
nb_cc <- length(unique(st_obj$Nwd2_cpt))
p1 <- spatial_image(st_obj, features = "Nwd2_cpt",
as_factor = TRUE,
colors = c("black", rainbow(nb_cc - 1)))
p2 <- p1 + create_hull(st_obj, feat = "Nwd2_cpt", color="grey")
p1 + p2
We can next extend the connected component with neighboring bins with the objective to more clearly highlight the component of interest.
st_obj <- cc_neighborhood(st_obj, feat = "Nwd2_cpt")
head(meta(st_obj), 3)
p1 + create_hull(st_obj, feat = "Nwd2_cpt_ngb")
And use this hull as a footprint of Nwd2 gene expression when analysing Cpne4.
spatial_image(st_obj, "Cpne4") + create_hull(st_obj,
feat = "Nwd2_cpt_ngb",
linewidth = .3, color="white") 
The hc_tree() function can used to organize genes into
subclusters (modules), revealing which genes tend to colocalize and
follow a similar spatial distribution across the tissue.
hc_st <- hc_tree(
st_obj,
method = "ward.D",
layout = "circular",
dist_method = "pearson",
class_nb = 20,
lab_fontsize = 2.5,
offset = 9
)
hc_st
# The first 3 modules
hc_st$tree_classes[1:3]
#> $MOD01
#> [1] "Acsbg1" "Aqp4"
#>
#> $MOD02
#> [1] "Acta2" "Pln"
#>
#> $MOD03
#> [1] "Acvrl1" "Adgrl4"Compute average module score.
st_obj <- compute_module_score(st_obj, modules = hc_st$tree_classes)
#> |-- INFO : Computing module score...
#> |-- INFO : Iterating over modules...
#> |-- INFO : Returning object...
meta_names(st_obj)
#> [1] "count_sum" "Nwd2_cpt" "Nwd2_cpt_ngb" "MOD01" "MOD02"
#> [6] "MOD03" "MOD04" "MOD05" "MOD06" "MOD07"
#> [11] "MOD08" "MOD09" "MOD10" "MOD11" "MOD12"
#> [16] "MOD13" "MOD14" "MOD15" "MOD16" "MOD17"
#> [21] "MOD18" "MOD19" "MOD20"We can map modules using the spatial_image()
function.
spatial_image(st_obj, features = meta_names(st_obj)[-c(1:3)], ncol = 4)
We can also plot the genes belonging to a specific module.
spatial_image(st_obj, features = hc_st$tree_classes[["MOD08"]], ncol = 3)
The STarlight package proposes the Ripley’s K function (from
spatstat.explore package) to assess if gene molecules tend to be more
concentrated or dispersed across the tissue. Users can use the
compute_k_ripley function to get a list of genes whose
molecules are spatially concentrated. For this tutorial, we chose to
compute Ripley’s K function for a few genes because this step is rather
time consuming as the molecule density increases.
plot_rip_k(compute_k_ripley(st_obj, rmax = 80, verbose = FALSE)) 
Mapping the above genes confirms they are spatially concentrated.
spatial_image(st_obj, features = c("Chat", "Spag16", "Tacr1", "Calb2"), ncol = 2)
Users can create an STCompR object from their STGrid object(s) using
the stcompr() function. This object can then be used to
easily compare multiple datasets. For illustrative purposes and to limit
the computation time required for this vignette, we will compare two
regions of the organ, which will be considered here as two conditions.
We have chosen to generate two replicates per region (representative of
two close regions).
## "Region 1 = Condition 1"
# "replicate 1"
x_bins <- bin_x(st_obj)[180:nbin_x(st_obj)]
y_bins <- bin_y(st_obj)[100:nbin_y(st_obj)]
st_obj_r1_1 <- st_obj[x_bins, y_bins]
# "replicate 2"
x_bins <- bin_x(st_obj)[170:200]
y_bins <- bin_y(st_obj)[90:130]
st_obj_r1_2 <- st_obj[x_bins, y_bins]
## "Region 2 = Condition 2"
# "replicate 1"
x_bins <- bin_x(st_obj)[60:100]
y_bins <- bin_y(st_obj)[100:nbin_y(st_obj)]
st_obj_r2_1 <- st_obj[x_bins, y_bins]
# "replicate 2"
x_bins <- bin_x(st_obj)[50:90]
y_bins <- bin_y(st_obj)[80:130]
st_obj_r2_2 <- st_obj[x_bins, y_bins]These are the datasets were are working with:
cmp_images(st_obj_r1_1,
st_obj_r1_2,
st_obj_r2_1,
st_obj_r2_2,
feat_list="count_sum",
names=c("region_1_1", "region_1_2", "region_2_1", "region_2_2"),
color_y_strip=c("#3FA0FF", "#ABF8FF", "#EF6C00", "#FFB74D"),
color_strip_text_y = "black",
color_x_strip="#333333",
colors = viridis::magma(10)
)
We can visualize the count distribution for each replicate:
dist_st(
st_obj_r1_1,
st_obj_r1_2,
st_obj_r2_1,
st_obj_r2_2,
transform = "log10",
fill_color = c("#3FA0FF", "#ABF8FF", "#EF6C00", "#FFB74D"),
names = c("region_1_1", "region_1_2", "region_2_1", "region_2_2")
)
Now we can create an STCompR object using the stcompr()
function.
We can visualize the normalized count distribution for each replicate:
cmp_boxplot(cmp,
transform = "log10",
normalized = TRUE) +
scale_fill_manual(
name = "Conditions",
labels = c("region_1_1", "region_1_2", "region_2_1", "region_2_2"),
values = c("#3FA0FF", "#ABF8FF", "#EF6C00", "#FFB74D")
) +
theme(axis.text.x = element_text(size = 8),
axis.text.y = element_text(size = 8))
#> Scale for fill is already present.
#> Adding another scale for fill, which will replace the existing scale.
As we can see below, the expression level of several genes differ between both regions.
cmp_volcano(
cmp,
text_y_lim = 20,
text_size = 2,
text_x_lim = 2.5,
title = "Comparison of region_1 vs. region_2"
)
Using the cmp_images() function, we map these genes to
see how they spatially differ across regions.
genes <- cmp@stat_test %>%
dplyr::filter(abs(log2_ratio) > 2.5) %>%
dplyr::arrange(log2_ratio) %>%
dplyr::filter(-log10(p_values) > 20) %>% rownames()
cmp_images(
st_obj_r1_1,
st_obj_r1_2,
st_obj_r2_1,
st_obj_r2_2,
feat_list = genes,
names = c("region_1_1", "region_1_2", "region_2_1", "region_2_2"),
color_y_strip = c("#3FA0FF", "#ABF8FF", "#EF6C00", "#FFB74D"),
color_strip_text_y = "black",
color_x_strip = c("#558B2F", "#558B2F", "#C5E1A5", "#C5E1A5", "#C5E1A5"),
color_strip_text_x = "black",
colors = viridis::magma(10)
)
sessioninfo::session_info()%>%
details::details(
summary = 'Current session info',
open = TRUE
)
[1m
[36m─ Session info ───────────────────────────────────────────────────────────────
[39m
[22m
[3m
[90msetting
[39m
[23m
[3m
[90mvalue
[39m
[23m
version R version 4.3.3 (2024-02-29)
os macOS Sonoma 14.3.1
system x86_64, darwin20
ui X11
language en
collate en_US.UTF-8
ctype en_US.UTF-8
tz Europe/Paris
date 2024-09-18
pandoc 3.1.11 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/x86_64/ (via rmarkdown)
[1m
[36m─ Packages ───────────────────────────────────────────────────────────────────
[39m
[22m
[3m
[90mpackage
[39m
[23m
[3m
[90m*
[39m
[23m
[3m
[90mversion
[39m
[23m
[3m
[90mdate (UTC)
[39m
[23m
[3m
[90mlib
[39m
[23m
[3m
[90msource
[39m
[23m
abind 1.4-5
[90m2016-07-21
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
ape 5.7-1
[90m2023-03-13
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
aplot 0.2.2
[90m2023-10-06
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
Biobase 2.62.0
[90m2023-10-24
[39m
[90m[2]
[39m
[90mBioconductor
[39m
BiocGenerics 0.48.1
[90m2023-11-01
[39m
[90m[2]
[39m
[90mBioconductor
[39m
BiocParallel 1.36.0
[90m2023-10-24
[39m
[90m[2]
[39m
[90mBioconductor
[39m
bit 4.0.5
[90m2022-11-15
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
bit64 4.0.5
[90m2020-08-30
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
bitops 1.0-7
[90m2021-04-24
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
bslib 0.6.1
[90m2023-11-28
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
cachem 1.0.8
[90m2023-05-01
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
cli 3.6.2
[90m2023-12-11
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
clipr 0.8.0
[90m2022-02-22
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
cluster 2.1.6
[90m2023-12-01
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.3)
[39m
codetools 0.2-19
[90m2023-02-01
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.3)
[39m
colorspace 2.1-0
[90m2023-01-23
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
colourpicker 1.3.0
[90m2023-08-21
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
cowplot 1.1.3
[90m2024-01-22
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
crayon 1.5.2
[90m2022-09-29
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
data.table 1.15.2
[90m2024-02-29
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
DBI 1.2.2
[90m2024-02-16
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
DelayedArray 0.28.0
[90m2023-10-24
[39m
[90m[2]
[39m
[90mBioconductor
[39m
deldir 2.0-4
[90m2024-02-28
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
desc 1.4.3
[90m2023-12-10
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
DESeq2 1.42.1
[90m2024-03-06
[39m
[90m[2]
[39m
[90mBioconductor 3.18 (R 4.3.3)
[39m
details 0.3.0
[90m2022-03-27
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
digest 0.6.35
[90m2024-03-11
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
dotCall64 1.1-1
[90m2023-11-28
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
dplyr * 1.1.4
[90m2023-11-17
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
ellipsis 0.3.2
[90m2021-04-29
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
envnames 0.4.1
[90m2020-12-08
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
evaluate 0.23
[90m2023-11-01
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
fansi 1.0.6
[90m2023-12-08
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
farver 2.1.1
[90m2022-07-06
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
fastDummies 1.7.3
[90m2023-07-06
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
fastmap 1.1.1
[90m2023-02-24
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
fitdistrplus 1.1-11
[90m2023-04-25
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
fs 1.6.3
[90m2023-07-20
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
future 1.33.1
[90m2023-12-22
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
future.apply 1.11.1
[90m2023-12-21
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
generics 0.1.3
[90m2022-07-05
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
GenomeInfoDb 1.38.8
[90m2024-03-15
[39m
[90m[2]
[39m
[90mBioconductor 3.18 (R 4.3.3)
[39m
GenomeInfoDbData 1.2.11
[90m2024-03-21
[39m
[90m[2]
[39m
[90mBioconductor
[39m
GenomicRanges 1.54.1
[90m2023-10-29
[39m
[90m[2]
[39m
[90mBioconductor
[39m
ggfun 0.1.4
[90m2024-01-19
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
ggh4x 0.2.8
[90m2024-01-23
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
ggnewscale 0.4.10
[90m2024-02-08
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
ggplot2 * 3.5.0
[90m2024-02-23
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
ggplotify 0.1.2
[90m2023-08-09
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
ggpol 0.0.7
[90m2020-11-08
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
ggrepel 0.9.5
[90m2024-01-10
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
ggridges 0.5.6
[90m2024-01-23
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
ggsci 3.0.1
[90m2024-03-02
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
ggtree 3.10.1
[90m2024-02-25
[39m
[90m[2]
[39m
[90mBioconductor 3.18 (R 4.3.3)
[39m
globals 0.16.3
[90m2024-03-08
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
glue 1.7.0
[90m2024-01-09
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
goftest 1.2-3
[90m2021-10-07
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
gridExtra 2.3
[90m2017-09-09
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
gridGraphics 0.5-1
[90m2020-12-13
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
gtable 0.3.4
[90m2023-08-21
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
highr 0.10
[90m2022-12-22
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
htmltools 0.5.7
[90m2023-11-03
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
htmlwidgets 1.6.4
[90m2023-12-06
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
httpuv 1.6.14
[90m2024-01-26
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
httr 1.4.7
[90m2023-08-15
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
ica 1.0-3
[90m2022-07-08
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
igraph 2.0.3
[90m2024-03-13
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
IRanges 2.36.0
[90m2023-10-24
[39m
[90m[2]
[39m
[90mBioconductor
[39m
irlba 2.3.5.1
[90m2022-10-03
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
jquerylib 0.1.4
[90m2021-04-26
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
jsonlite 1.8.8
[90m2023-12-04
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
KernSmooth 2.23-22
[90m2023-07-10
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.3)
[39m
knitr 1.45
[90m2023-10-30
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
labeling 0.4.3
[90m2023-08-29
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
later 1.3.2
[90m2023-12-06
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
lattice 0.22-5
[90m2023-10-24
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.3)
[39m
lazyeval 0.2.2
[90m2019-03-15
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
leiden 0.4.3.1
[90m2023-11-17
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
lifecycle 1.0.4
[90m2023-11-07
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
listenv 0.9.1
[90m2024-01-29
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
lmtest 0.9-40
[90m2022-03-21
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
locfit 1.5-9.9
[90m2024-03-01
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
magrittr * 2.0.3
[90m2022-03-30
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
MASS 7.3-60.0.1
[90m2024-01-13
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.3)
[39m
Matrix 1.6-5
[90m2024-01-11
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.3)
[39m
MatrixGenerics 1.14.0
[90m2023-10-24
[39m
[90m[2]
[39m
[90mBioconductor
[39m
matrixStats 1.2.0
[90m2023-12-11
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
memoise 2.0.1
[90m2021-11-26
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
mgc 2.0.2
[90m2020-06-23
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
mime 0.12
[90m2021-09-28
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
miniUI 0.1.1.1
[90m2018-05-18
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
munsell 0.5.0
[90m2018-06-12
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
nlme 3.1-164
[90m2023-11-27
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.3)
[39m
parallelly 1.37.1
[90m2024-02-29
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
patchwork * 1.2.0
[90m2024-01-08
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
pbapply 1.7-2
[90m2023-06-27
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
pillar 1.9.0
[90m2023-03-22
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
pkgconfig 2.0.3
[90m2019-09-22
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
pkgdown 2.0.9
[90m2024-04-18
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
plotly 4.10.4
[90m2024-01-13
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
plyr 1.8.9
[90m2023-10-02
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
png 0.1-8
[90m2022-11-29
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
polyclip 1.10-6
[90m2023-09-27
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
progressr 0.14.0
[90m2023-08-10
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
promises 1.2.1
[90m2023-08-10
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
purrr 1.0.2
[90m2023-08-10
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
R.methodsS3 1.8.2
[90m2022-06-13
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
R.oo 1.26.0
[90m2024-01-24
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
R.utils 2.12.3
[90m2023-11-18
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
R6 2.5.1
[90m2021-08-19
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
ragg 1.3.0
[90m2024-03-13
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
RANN 2.6.1
[90m2019-01-08
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
raster 3.6-26
[90m2023-10-14
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
RColorBrewer 1.1-3
[90m2022-04-03
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
Rcpp 1.0.12
[90m2024-01-09
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
RcppAnnoy 0.0.22
[90m2024-01-23
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
RcppHNSW 0.6.0
[90m2024-02-04
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
RCurl 1.98-1.14
[90m2024-01-09
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
reshape2 1.4.4
[90m2020-04-09
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
reticulate 1.35.0
[90m2024-01-31
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
rlang 1.1.3
[90m2024-01-10
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
rmarkdown 2.26
[90m2024-03-05
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
ROCR 1.0-11
[90m2020-05-02
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
RSpectra 0.16-1
[90m2022-04-24
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
Rtsne 0.17
[90m2023-12-07
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
S4Arrays 1.2.1
[90m2024-03-06
[39m
[90m[2]
[39m
[90mBioconductor 3.18 (R 4.3.3)
[39m
S4Vectors 0.40.2
[90m2023-11-23
[39m
[90m[2]
[39m
[90mBioconductor
[39m
sass 0.4.8
[90m2023-12-06
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
scales 1.3.0
[90m2023-11-28
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
scattermore 1.2
[90m2023-06-12
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
sctransform 0.4.1
[90m2023-10-19
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
sessioninfo 1.2.2
[90m2021-12-06
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
Seurat * 5.1.0
[90m2024-05-10
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.3)
[39m
SeuratObject * 5.0.2
[90m2024-05-08
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
shiny 1.8.0
[90m2023-11-17
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
shinydashboard 0.7.2
[90m2021-09-30
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
sp * 2.1-3
[90m2024-01-30
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
spam 2.10-0
[90m2023-10-23
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
SparseArray 1.2.4
[90m2024-02-11
[39m
[90m[2]
[39m
[90mBioconductor 3.18 (R 4.3.2)
[39m
spatstat.data 3.0-4
[90m2024-01-15
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
spatstat.explore 3.2-6
[90m2024-02-01
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
spatstat.geom 3.2-9
[90m2024-02-28
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
spatstat.random 3.2-3
[90m2024-02-29
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
spatstat.sparse 3.0-3
[90m2023-10-24
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
spatstat.utils 3.0-4
[90m2023-10-24
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
STarlight * 0.0.9
[90m2024-09-18
[39m
[90m[1]
[39m
[90mBioconductor
[39m
stringi 1.8.3
[90m2023-12-11
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
stringr 1.5.1
[90m2023-11-14
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
SummarizedExperiment 1.32.0
[90m2023-10-24
[39m
[90m[2]
[39m
[90mBioconductor
[39m
survival 3.5-8
[90m2024-02-14
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.3)
[39m
systemfonts 1.0.6
[90m2024-03-07
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
tensor 1.5
[90m2012-05-05
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
terra 1.7-71
[90m2024-01-31
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
textshaping 0.3.7
[90m2023-10-09
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
tibble 3.2.1
[90m2023-03-20
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
tidyr 1.3.1
[90m2024-01-24
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
tidyselect 1.2.1
[90m2024-03-11
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
tidytree 0.4.6
[90m2023-12-12
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.3)
[39m
treeio 1.26.0
[90m2023-10-24
[39m
[90m[2]
[39m
[90mBioconductor
[39m
utf8 1.2.4
[90m2023-10-22
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
uwot 0.1.16
[90m2023-06-29
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
vctrs 0.6.5
[90m2023-12-01
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
viridis 0.6.5
[90m2024-01-29
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
viridisLite 0.4.2
[90m2023-05-02
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
withr 3.0.0
[90m2024-01-16
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
xfun 0.42
[90m2024-02-08
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
xml2 1.3.6
[90m2023-12-04
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
xtable 1.8-4
[90m2019-04-21
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
XVector 0.42.0
[90m2023-10-24
[39m
[90m[2]
[39m
[90mBioconductor
[39m
yaml 2.3.8
[90m2023-12-11
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
yulab.utils 0.1.4
[90m2024-01-28
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.2)
[39m
zlibbioc 1.48.2
[90m2024-03-13
[39m
[90m[2]
[39m
[90mBioconductor 3.18 (R 4.3.3)
[39m
zoo 1.8-12
[90m2023-04-13
[39m
[90m[2]
[39m
[90mCRAN (R 4.3.0)
[39m
[90m [1] /private/var/folders/zy/wl3dj2_n76zfc8sdvny1q06c0000gn/T/Rtmpqvrydk/temp_libpath1001266f709b3
[39m
[90m [2] /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library
[39m
[1m
[36m──────────────────────────────────────────────────────────────────────────────
[39m
[22m