Plot results of Differential expression analysis for individual hypothalamic nuclei astrocytes evaluation dataset

Author

Evgenii O. Tretiakov

Published

September 26, 2023

Load data and setup parameters

Code
# Load tidyverse infrastructure packages
suppressPackageStartupMessages({
  library(future)
  library(here)
  library(tidyverse)
  library(magrittr)
  library(stringr)
  library(skimr)
  library(RColorBrewer)
  library(viridis)
})


# Load packages for scRNA-seq analysis and visualisation
suppressPackageStartupMessages({
  library(ggplot2)
  library(cowplot)
  library(patchwork)
  library(ggstatsplot)
  library(sceasy)
  library(Seurat)
  library(SeuratDisk)
  library(SeuratWrappers)
  library(schex)
  library(scCustomize)
})

Set paths

Code
src_dir <- here("code/")
data_dir <- here("data/")
output_dir <- here("output")
plots_dir <- here(output_dir, "figures/")
tables_dir <- here(output_dir, "tables/")

Load helper functions and gene-sets

Code
source(here(src_dir, "genes.R"))
source(here(src_dir, "functions.R"))

Set fixed variables

Code
# set seed
reseed <- 42
set.seed(seed = reseed)

# Parameters for parallel execution
n_cores <- 8
plan("multisession", workers = n_cores)
options(
  future.globals.maxSize = 1999999 * 1024^2,
  future.rng.onMisuse = "ignore"
)
plan()
multisession:
- args: function (..., workers = 8, envir = parent.frame())
- tweaked: TRUE
- call: plan("multisession", workers = n_cores)
Code
# ggplot2 theme
theme_set(ggmin::theme_powerpoint())
Code
bioproject <- "individual_hypothalamic_nuclei_astrocytes_evaluation_dataset"
cb_fpr <- 0.001
connectivity_model <- "min_tree"
k <- 10
metric <- "euclidean"
signature <- 100

Load predicted astrocytes data

Code
srt_path <- here(
  data_dir,
  sprintf("best_xgboost-subregional-astrocytes_dataset-msp_%s-metric_%s-k_%s-sign_%s-amb_%s.h5Seurat", connectivity_model, metric, k, signature, cb_fpr)
)
srt <- LoadH5Seurat(file = srt_path)

srt <-
  Store_Palette_Seurat(
    seurat_object = srt,
    palette = c(
      "#ffff00", "#fae200", "#f4c500", "#eeab00", "#e99500",
      "#e37f00", "#dd6b00", "#d75b00", "#d04c00", "#c93e00",
      "#c33300", "#bc2800", "#b42003", "#ad1941", "#a41281",
      "#9c0db7", "#9309dd", "#8906f7", "#7f04ff", "#7402f6",
      "#6701db", "#5900b0", "#49007e", "#32003e", "#000000"
    ),
    palette_name = "expr_Colour_Palette_gnuplot_rette_gnuplot_r")

srt <-
  Store_Palette_Seurat(
    seurat_object = srt,
    palette = rev(brewer.pal(n = 11, name = "Spectral")),
    palette_name = "div_Colour_Pal"
  )

colours_code <- c(
  "0" = "grey30",
  "1" = "blue",
  "2" = "skyblue",
  "3" = "forestgreen",
  "4" = "greenyellow",
  "5" = "yellow",
  "6" = "orangered",
  "7" = "grey70"
)

colours_region <- c(
  "ARC" = "grey30",
  "LHA" = "blue",
  "MnPO" = "skyblue",
  "POA" = "forestgreen",
  "PVN" = "greenyellow",
  "SCN" = "yellow",
  "VMH" = "orangered",
  "VPH" = "grey70"
)

print(srt)
An object of class Seurat 
27381 features across 35642 samples within 1 assay 
Active assay: RNA (27381 features, 0 variable features)
 2 dimensional reductions calculated: densmap_logit, densmap_xgboost
Code
invisible(gc())
Code
srt <- NormalizeData(srt)
srt <- FindVariableFeatures(srt, selection.method = "vst", nfeatures = 5000)
all.genes <- rownames(srt)
srt <- ScaleData(srt, features = all.genes)
Code
selected_genes <- c(
  "Grpr", "Tbx3"
)
Code
Plot_Density_Custom(seurat_object = srt, reduction = "densmap_xgboost", features = c("Grpr", "Tbx3"))

Code
Plot_Density_Joint_Only(seurat_object = srt, reduction = "densmap_xgboost", features = c("Grpr", "Tbx3"), custom_palette = srt@misc$div_Colour_Pal)

Code
Plot_Density_Joint_Only(seurat_object = srt, reduction = "densmap_xgboost", features = c("Rax", "Tbx3"), custom_palette = srt@misc$div_Colour_Pal)

Code
Plot_Density_Joint_Only(seurat_object = srt, reduction = "densmap_xgboost", features = c("Grpr", "Rax"), custom_palette = srt@misc$div_Colour_Pal)

Code
Plot_Density_Joint_Only(seurat_object = srt, reduction = "densmap_xgboost", features = c("Rax", "Vim"), custom_palette = srt@misc$div_Colour_Pal)

Code
Plot_Density_Joint_Only(seurat_object = srt, reduction = "densmap_xgboost", features = c("Rax", "Col25a1"), custom_palette = srt@misc$div_Colour_Pal)

Code
Plot_Density_Joint_Only(seurat_object = srt, reduction = "densmap_xgboost", features = c("Rax", "Adm"), custom_palette = srt@misc$div_Colour_Pal)

Code
Plot_Density_Joint_Only(seurat_object = srt, reduction = "densmap_xgboost", features = c("Tbx3", "Vim"), custom_palette = srt@misc$div_Colour_Pal)

Code
sbs_mtx <- GetAssayData(object = srt, slot = "count", assay = "RNA") %>%
  as.data.frame() %>%
  t() %>%
  as.data.frame() %>%
  select(Grpr, Tbx3, Rax, Vim, Nes, Adm, Col25a1) %>%
  dplyr::bind_cols(srt@meta.data) %>%
  select(region, bioproject, project, Grpr, Tbx3, Rax, Vim, Nes, Adm, Col25a1) %>%
  mutate(Grpr_pos = Grpr > 0,
         Tbx3_pos  = Tbx3  > 0,
         Rax_pos = Rax > 0,
         Nes_pos = Nes > 0,
         Vim_pos  = Vim  > 0)

sbs_mtx %>% skimr::skim()
Data summary
Name Piped data
Number of rows 35642
Number of columns 15
_______________________
Column type frequency:
factor 3
logical 5
numeric 7
________________________
Group variables None

Variable type: factor

skim_variable n_missing complete_rate ordered n_unique top_counts
region 0 1 FALSE 8 VMH: 24305, SCN: 5507, VPH: 1951, POA: 1706
bioproject 0 1 FALSE 11 PRJ: 20451, PRJ: 5119, PRJ: 3854, PRJ: 1951
project 0 1 FALSE 11 liu: 20451, wen: 5119, aff: 3854, mic: 1951

Variable type: logical

skim_variable n_missing complete_rate mean count
Grpr_pos 0 1 0.01 FAL: 35449, TRU: 193
Tbx3_pos 0 1 0.01 FAL: 35292, TRU: 350
Rax_pos 0 1 0.06 FAL: 33623, TRU: 2019
Nes_pos 0 1 0.01 FAL: 35436, TRU: 206
Vim_pos 0 1 0.04 FAL: 34132, TRU: 1510

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
Grpr 0 1 0.01 0.12 0 0 0 0 6 ▇▁▁▁▁
Tbx3 0 1 0.01 0.12 0 0 0 0 5 ▇▁▁▁▁
Rax 0 1 0.07 0.36 0 0 0 0 16 ▇▁▁▁▁
Vim 0 1 0.20 2.29 0 0 0 0 124 ▇▁▁▁▁
Nes 0 1 0.01 0.08 0 0 0 0 3 ▇▁▁▁▁
Adm 0 1 0.00 0.07 0 0 0 0 3 ▇▁▁▁▁
Col25a1 0 1 0.31 3.39 0 0 0 0 128 ▇▁▁▁▁
Code
# plot
grouped_ggpiestats(
  # arguments relevant for `ggpiestats()`
  data = sbs_mtx,
  x = Grpr_pos,
  y = Tbx3_pos,
  grouping.var = region,
  perc.k = 1,
  package = "ggsci",
  palette = "category10_d3",
  # arguments relevant for `combine_plots()`
  title.text = "Grpr specification of Tbx3-positive hypothalamic astrocytic lineages",
  caption.text = "Asterisks denote results from proportion tests; \n***: p < 0.001, ns: non-significant",
  plotgrid.args = list(nrow = 8)
)

Code
grouped_ggpiestats(
  # arguments relevant for `ggpiestats()`
  data = sbs_mtx,
  x = Grpr_pos,
  y = Tbx3_pos,
  grouping.var = project,
  perc.k = 1,
  package = "ggsci",
  palette = "category10_d3",
  # arguments relevant for `combine_plots()`
  title.text = "Grpr specification of Tbx3-positive hypothalamic astrocytic lineages",
  caption.text = "Asterisks denote results from proportion tests; \n***: p < 0.001, ns: non-significant",
  plotgrid.args = list(nrow = 8)
)

Code
# plot
grouped_ggpiestats(
  # arguments relevant for `ggpiestats()`
  data = sbs_mtx,
  x = Grpr_pos,
  y = Rax_pos,
  grouping.var = project,
  perc.k = 1,
  package = "ggsci",
  palette = "category10_d3",
  # arguments relevant for `combine_plots()`
  title.text = "Grpr specification of Rax_positive hypothalamic astrocytic lineages",
  caption.text = "Asterisks denote results from proportion tests; \n***: p < 0.001, ns: non-significant",
  plotgrid.args = list(nrow = 8)
)

Code
grouped_ggpiestats(
  # arguments relevant for `ggpiestats()`
  data = sbs_mtx,
  x = Tbx3_pos,
  y = Rax_pos,
  grouping.var = project,
  perc.k = 1,
  package = "ggsci",
  palette = "category10_d3",
  # arguments relevant for `combine_plots()`
  title.text = "Tbx3 specification of Rax_positive hypothalamic astrocytic lineages",
  caption.text = "Asterisks denote results from proportion tests; \n***: p < 0.001, ns: non-significant",
  plotgrid.args = list(nrow = 8)
)

Code
# plot
grouped_ggpiestats(
  # arguments relevant for `ggpiestats()`
  data = sbs_mtx,
  x = Grpr_pos,
  y = Vim_pos,
  grouping.var = project,
  perc.k = 1,
  package = "ggsci",
  palette = "category10_d3",
  # arguments relevant for `combine_plots()`
  title.text = "Grpr specification of Vim_positive hypothalamic astrocytic lineages",
  caption.text = "Asterisks denote results from proportion tests; \n***: p < 0.001, ns: non-significant",
  plotgrid.args = list(nrow = 8)
)

Code
grouped_ggpiestats(
  # arguments relevant for `ggpiestats()`
  data = sbs_mtx,
  x = Tbx3_pos,
  y = Vim_pos,
  grouping.var = project,
  perc.k = 1,
  package = "ggsci",
  palette = "category10_d3",
  # arguments relevant for `combine_plots()`
  title.text = "Tbx3 specification of Vim_positive hypothalamic astrocytic lineages",
  caption.text = "Asterisks denote results from proportion tests; \n***: p < 0.001, ns: non-significant",
  plotgrid.args = list(nrow = 8)
)

Code
# plot
grouped_ggpiestats(
  # arguments relevant for `ggpiestats()`
  data = sbs_mtx,
  x = Grpr_pos,
  y = Nes_pos,
  grouping.var = project,
  perc.k = 1,
  package = "ggsci",
  palette = "category10_d3",
  # arguments relevant for `combine_plots()`
  title.text = "Grpr specification of Nes_positive hypothalamic astrocytic lineages",
  caption.text = "Asterisks denote results from proportion tests; \n***: p < 0.001, ns: non-significant",
  plotgrid.args = list(nrow = 8)
)

Code
grouped_ggpiestats(
  # arguments relevant for `ggpiestats()`
  data = sbs_mtx,
  x = Tbx3_pos,
  y = Nes_pos,
  grouping.var = project,
  perc.k = 1,
  package = "ggsci",
  palette = "category10_d3",
  # arguments relevant for `combine_plots()`
  title.text = "Tbx3 specification of Nes_positive hypothalamic astrocytic lineages",
  caption.text = "Asterisks denote results from proportion tests; \n***: p < 0.001, ns: non-significant",
  plotgrid.args = list(nrow = 8)
)

Code
srt2 <- subset(srt, subset = Grpr > 1 | Tbx3 > 1)
FeaturePlot(srt2, c("Grpr", "Tbx3", "Rax", "Vim", "Nes", "Gfap"), reduction = "densmap_xgboost", ncol = 3, slot = "counts", order = TRUE)

Code
FeaturePlot_scCustom(srt2, c("Grpr", "Tbx3", "Rax", "Vim", "Nes", "Gfap"), reduction = "densmap_xgboost", num_columns = 3, slot = "data")

Code
FeaturePlot_scCustom(srt2, c("Grpr"), reduction = "densmap_xgboost", num_columns = 3, slot = "data", split.by = "project")

Code
FeaturePlot_scCustom(srt2, c("Tbx3"), reduction = "densmap_xgboost", num_columns = 3, slot = "data", split.by = "project")

Code
FeaturePlot_scCustom(srt2, c("Rax"), reduction = "densmap_xgboost", num_columns = 3, slot = "data", split.by = "project")

Code
FeaturePlot_scCustom(srt2, c("Vim"), reduction = "densmap_xgboost", num_columns = 3, slot = "data", split.by = "project")

Code
FeaturePlot_scCustom(srt2, c("Nes"), reduction = "densmap_xgboost", num_columns = 3, slot = "data", split.by = "project")

Code
FeaturePlot_scCustom(srt2, c("Grpr"), reduction = "densmap_xgboost", num_columns = 3, slot = "data", split.by = "region")

Code
FeaturePlot_scCustom(srt2, c("Tbx3"), reduction = "densmap_xgboost", num_columns = 3, slot = "data", split.by = "region")

Code
FeaturePlot_scCustom(srt2, c("Rax"), reduction = "densmap_xgboost", num_columns = 3, slot = "data", split.by = "region")

Code
FeaturePlot_scCustom(srt2, c("Vim"), reduction = "densmap_xgboost", num_columns = 3, slot = "data", split.by = "region")

Code
FeaturePlot_scCustom(srt2, c("Nes"), reduction = "densmap_xgboost", num_columns = 3, slot = "data", split.by = "region")

Code
FeatureScatter(srt2, "Grpr", "Tbx3")

Code
FeatureScatter(srt2, "Grpr", "Rax")

Code
FeatureScatter(srt2, "Rax", "Tbx3")

Code
FeatureScatter(srt2, "Grpr", "Vim")

Code
FeatureScatter(srt2, "Vim", "Tbx3")

Code
FeatureScatter(srt2, "Grpr", "Nes")

Code
FeatureScatter(srt2, "Nes", "Tbx3")

Code
FeatureScatter(srt2, "Vim", "Rax")

Code
FeatureScatter(srt2, "Rax", "Nes")

Code
FeatureScatter(srt2, "Vim", "Nes")

Code
mtx_export <- GetAssayData(object = srt, slot = "count", assay = "RNA") %>%
  as.data.frame() %>%
  t() %>%
  as.data.frame() %>%
  select(Grpr, Tbx3, Rax, Vim, Nes, Adm, Col25a1) %>%
  dplyr::bind_cols(srt@meta.data) %>%
  select(cell_name, region, bioproject, project,
         Grpr, Tbx3, Rax, Vim, Nes, Adm, Col25a1) %>%
  mutate(Grpr_pos = as.logical(Grpr),
         Tbx3_pos  = as.logical(Tbx3),
         Rax = as.logical(Rax),
         Vim = as.logical(Vim),
         Nes = as.logical(Nes),
         Adm = as.logical(Adm),
         Col25a1 = as.logical(Col25a1)) %>% 
  filter((Grpr_pos & (Rax | Vim | Nes | Adm | Col25a1 | Tbx3_pos)) |
           (Tbx3_pos & (Rax | Vim | Nes | Adm | Col25a1 | Grpr_pos)))
skim(mtx_export)
Data summary
Name mtx_export
Number of rows 277
Number of columns 13
_______________________
Column type frequency:
character 1
factor 3
logical 7
numeric 2
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
cell_name 0 1 29 30 0 277 0

Variable type: factor

skim_variable n_missing complete_rate ordered n_unique top_counts
region 0 1 FALSE 7 VMH: 234, ARC: 24, VPH: 11, SCN: 5
bioproject 0 1 FALSE 9 PRJ: 181, PRJ: 53, PRJ: 24, PRJ: 11
project 0 1 FALSE 9 aff: 181, liu: 53, lut: 24, mic: 11

Variable type: logical

skim_variable n_missing complete_rate mean count
Rax 0 1 0.38 FAL: 172, TRU: 105
Vim 0 1 0.31 FAL: 192, TRU: 85
Nes 0 1 0.08 FAL: 256, TRU: 21
Adm 0 1 0.07 FAL: 258, TRU: 19
Col25a1 0 1 0.70 TRU: 194, FAL: 83
Grpr_pos 0 1 0.44 FAL: 155, TRU: 122
Tbx3_pos 0 1 0.65 TRU: 181, FAL: 96

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
Grpr 0 1 0.65 0.95 0 0 0 1 6 ▇▁▁▁▁
Tbx3 0 1 0.78 0.75 0 0 1 1 5 ▇▁▁▁▁
Code
janitor::tabyl(mtx_export, region, Grpr_pos, Tbx3_pos)
$`FALSE`
 region FALSE TRUE
    ARC     0    9
    LHA     0    0
   MnPO     0    0
    POA     0    0
    PVN     0    0
    SCN     0    2
    VMH     0   84
    VPH     0    1

$`TRUE`
 region FALSE TRUE
    ARC    12    3
    LHA     1    0
   MnPO     0    0
    POA     1    0
    PVN     0    1
    SCN     3    0
    VMH   128   22
    VPH    10    0
Code
janitor::tabyl(mtx_export, region, Rax, Tbx3_pos)
$`FALSE`
 region FALSE TRUE
    ARC     8    1
    LHA     0    0
   MnPO     0    0
    POA     0    0
    PVN     0    0
    SCN     1    1
    VMH    43   41
    VPH     0    1

$`TRUE`
 region FALSE TRUE
    ARC    10    5
    LHA     1    0
   MnPO     0    0
    POA     1    0
    PVN     0    1
    SCN     3    0
    VMH   100   50
    VPH     5    5
Code
janitor::tabyl(mtx_export, region, Vim, Tbx3_pos)
$`FALSE`
 region FALSE TRUE
    ARC     2    7
    LHA     0    0
   MnPO     0    0
    POA     0    0
    PVN     0    0
    SCN     1    1
    VMH    57   27
    VPH     1    0

$`TRUE`
 region FALSE TRUE
    ARC    10    5
    LHA     0    1
   MnPO     0    0
    POA     0    1
    PVN     0    1
    SCN     0    3
    VMH   116   34
    VPH     5    5
Code
janitor::tabyl(mtx_export, region, Nes, Tbx3_pos)
$`FALSE`
 region FALSE TRUE
    ARC     8    1
    LHA     0    0
   MnPO     0    0
    POA     0    0
    PVN     0    0
    SCN     2    0
    VMH    78    6
    VPH     0    1

$`TRUE`
 region FALSE TRUE
    ARC    14    1
    LHA     1    0
   MnPO     0    0
    POA     1    0
    PVN     0    1
    SCN     3    0
    VMH   140   10
    VPH     9    1
Code
janitor::tabyl(mtx_export, region, Adm, Tbx3_pos)
$`FALSE`
 region FALSE TRUE
    ARC     9    0
    LHA     0    0
   MnPO     0    0
    POA     0    0
    PVN     0    0
    SCN     2    0
    VMH    83    1
    VPH     1    0

$`TRUE`
 region FALSE TRUE
    ARC    12    3
    LHA     1    0
   MnPO     0    0
    POA     1    0
    PVN     1    0
    SCN     3    0
    VMH   135   15
    VPH    10    0
Code
janitor::tabyl(mtx_export, region, Col25a1, Tbx3_pos)
$`FALSE`
 region FALSE TRUE
    ARC     4    5
    LHA     0    0
   MnPO     0    0
    POA     0    0
    PVN     0    0
    SCN     1    1
    VMH    34   50
    VPH     1    0

$`TRUE`
 region FALSE TRUE
    ARC     4   11
    LHA     1    0
   MnPO     0    0
    POA     1    0
    PVN     1    0
    SCN     1    2
    VMH    27  123
    VPH     8    2
Code
sbs_mtx_export <- 
  mtx_export |> 
  filter(Grpr_pos & Tbx3_pos) |> 
  select(cell_name, region, bioproject, project)

write_tsv(mtx_export,
          file = here(data_dir, "data/PRJNA722418", "output/tables",
                      "PRJNA722418-Grpr-Tbx3-astrocytes_dataset.tsv"))

srt3 <- subset(srt, cells = sbs_mtx_export$cell_name)
Code
Idents(object = srt, cells = mtx_export$cell_name) <- "Tbx3|Grpr"
Idents(object = srt, cells = sbs_mtx_export$cell_name) <- "Tbx3&Grpr"

Cluster_Highlight_Plot(
  seurat_object = srt,
  reduction = "densmap_xgboost",
  cluster_name = c("Tbx3&Grpr", "Tbx3|Grpr"),
  highlight_color = c("firebrick", "forestgreen"))

Session information

Code
sI <- sessioninfo::session_info()
sI$loadedOnly <- NULL
print(sI, locale = FALSE)
─ Session info ───────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.3.1 (2023-06-16)
 os       Ubuntu 22.04.3 LTS
 system   x86_64, linux-gnu
 ui       X11
 language en_US:en
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       Etc/UTC
 date     2023-09-26
 pandoc   3.1.1 @ /usr/lib/rstudio-server/bin/quarto/bin/tools/ (via rmarkdown)

─ Packages ───────────────────────────────────────────────────────────────────
 package              * version     date (UTC) lib source
 abind                  1.4-5       2016-07-21 [2] RSPM (R 4.3.0)
 base64enc              0.1-3       2015-07-28 [2] RSPM (R 4.3.0)
 BayesFactor            0.9.12-4.4  2022-07-05 [2] RSPM (R 4.3.0)
 bayestestR             0.13.1      2023-04-07 [2] RSPM (R 4.3.0)
 beeswarm               0.4.0       2021-06-01 [2] RSPM (R 4.3.0)
 Biobase              * 2.60.0      2023-04-25 [2] RSPM (R 4.3.1)
 BiocGenerics         * 0.46.0      2023-04-25 [2] RSPM (R 4.3.1)
 BiocManager            1.30.22     2023-08-08 [2] RSPM (R 4.3.0)
 bit                    4.0.5       2022-11-15 [2] RSPM (R 4.3.0)
 bit64                  4.0.5       2020-08-30 [2] RSPM (R 4.3.0)
 bitops                 1.0-7       2021-04-24 [2] RSPM (R 4.3.0)
 circlize               0.4.16      2023-08-17 [2] Github (jokergoo/circlize@11ddb74)
 cli                    3.6.1       2023-03-23 [2] RSPM (R 4.3.0)
 cluster                2.1.4       2022-08-22 [2] RSPM (R 4.3.0)
 coda                   0.19-4      2020-09-30 [2] RSPM (R 4.3.0)
 codetools              0.2-19      2023-02-01 [2] RSPM (R 4.3.0)
 colorspace             2.1-0       2023-01-23 [2] RSPM (R 4.3.0)
 concaveman             1.1.0       2020-05-11 [2] RSPM (R 4.3.0)
 correlation            0.8.4       2023-04-06 [2] RSPM (R 4.3.0)
 cowplot              * 1.1.1       2020-12-30 [2] RSPM (R 4.3.0)
 crayon                 1.5.2       2022-09-29 [2] RSPM (R 4.3.0)
 data.table             1.14.8      2023-02-17 [2] RSPM (R 4.3.0)
 datawizard             0.8.0       2023-06-16 [2] RSPM (R 4.3.0)
 DelayedArray           0.26.7      2023-07-28 [2] RSPM (R 4.3.1)
 deldir                 1.0-9       2023-05-17 [2] RSPM (R 4.3.0)
 digest                 0.6.33      2023-07-07 [2] RSPM (R 4.3.0)
 dplyr                * 1.1.2       2023-04-20 [2] RSPM (R 4.3.0)
 effectsize             0.8.5       2023-08-09 [2] RSPM (R 4.3.0)
 ellipsis               0.3.2       2021-04-29 [2] RSPM (R 4.3.0)
 emmeans                1.8.7       2023-06-23 [2] RSPM (R 4.3.0)
 entropy                1.3.1       2021-10-02 [2] RSPM (R 4.3.0)
 estimability           1.4.1       2022-08-05 [2] RSPM (R 4.3.0)
 evaluate               0.21        2023-05-05 [2] RSPM (R 4.3.0)
 fansi                  1.0.4       2023-01-22 [2] RSPM (R 4.3.0)
 farver                 2.1.1       2022-07-06 [2] RSPM (R 4.3.0)
 fastmap                1.1.1       2023-02-24 [2] RSPM (R 4.3.0)
 fitdistrplus           1.1-11      2023-04-25 [2] RSPM (R 4.3.0)
 forcats              * 1.0.0       2023-01-29 [2] RSPM (R 4.3.0)
 future               * 1.33.0      2023-07-01 [2] RSPM (R 4.3.0)
 future.apply           1.11.0      2023-05-21 [2] RSPM (R 4.3.0)
 generics               0.1.3       2022-07-05 [2] RSPM (R 4.3.0)
 GenomeInfoDb         * 1.36.1      2023-06-21 [2] RSPM (R 4.3.1)
 GenomeInfoDbData       1.2.10      2023-08-17 [2] RSPM (R 4.3.1)
 GenomicRanges        * 1.52.0      2023-04-25 [2] RSPM (R 4.3.1)
 ggbeeswarm             0.7.2       2023-08-17 [2] Github (eclarke/ggbeeswarm@3cf58a9)
 ggforce                0.4.1.9000  2023-08-17 [2] Github (thomasp85/ggforce@9be635c)
 ggmin                  0.0.0.9000  2023-08-17 [2] Github (sjessa/ggmin@8ada274)
 ggplot2              * 3.4.3       2023-08-14 [2] RSPM (R 4.3.0)
 ggprism                1.0.4       2023-08-17 [2] Github (csdaw/ggprism@0e411f4)
 ggrastr                1.0.2       2023-08-17 [2] Github (VPetukhov/ggrastr@50ca3e0)
 ggrepel                0.9.3       2023-08-17 [2] Github (slowkow/ggrepel@4584949)
 ggridges               0.5.4       2022-09-26 [2] RSPM (R 4.3.0)
 ggstatsplot          * 0.12.0.9000 2023-08-17 [2] Github (IndrajeetPatil/ggstatsplot@4a29843)
 GlobalOptions          0.1.2       2020-06-10 [2] RSPM (R 4.3.0)
 globals                0.16.2      2022-11-21 [2] RSPM (R 4.3.0)
 glue                   1.6.2       2022-02-24 [2] RSPM (R 4.3.0)
 goftest                1.2-3       2021-10-07 [2] RSPM (R 4.3.0)
 gridExtra              2.3         2017-09-09 [2] RSPM (R 4.3.0)
 gtable                 0.3.3       2023-03-21 [2] RSPM (R 4.3.0)
 hdf5r                  1.3.8       2023-01-21 [2] RSPM (R 4.3.1)
 here                 * 1.0.1       2020-12-13 [2] RSPM (R 4.3.0)
 hexbin                 1.28.3      2023-03-21 [2] RSPM (R 4.3.0)
 hms                    1.1.3       2023-03-21 [2] RSPM (R 4.3.0)
 htmltools              0.5.6       2023-08-10 [2] RSPM (R 4.3.0)
 htmlwidgets            1.6.2       2023-03-17 [2] RSPM (R 4.3.0)
 httpuv                 1.6.11      2023-05-11 [2] RSPM (R 4.3.0)
 httr                   1.4.7       2023-08-15 [2] RSPM (R 4.3.0)
 ica                    1.0-3       2022-07-08 [2] RSPM (R 4.3.0)
 igraph                 1.5.1       2023-08-10 [2] RSPM (R 4.3.0)
 insight                0.19.3.2    2023-08-17 [2] https://easystats.r-universe.dev (R 4.3.1)
 IRanges              * 2.34.1      2023-06-22 [2] RSPM (R 4.3.1)
 irlba                  2.3.5.1     2022-10-03 [2] RSPM (R 4.3.0)
 janitor                2.2.0.9000  2023-08-17 [2] Github (sfirke/janitor@b2700cf)
 jsonlite               1.8.7       2023-06-29 [2] RSPM (R 4.3.0)
 KernSmooth             2.23-22     2023-07-10 [2] RSPM (R 4.3.0)
 knitr                  1.43        2023-05-25 [2] RSPM (R 4.3.0)
 ks                     1.14.1      2023-08-10 [2] RSPM (R 4.3.0)
 labeling               0.4.2       2020-10-20 [2] RSPM (R 4.3.0)
 later                  1.3.1       2023-05-02 [2] RSPM (R 4.3.0)
 lattice                0.21-8      2023-04-05 [2] RSPM (R 4.3.0)
 lazyeval               0.2.2       2019-03-15 [2] RSPM (R 4.3.0)
 leiden                 0.4.3       2022-09-10 [2] RSPM (R 4.3.0)
 lifecycle              1.0.3       2022-10-07 [2] RSPM (R 4.3.0)
 listenv                0.9.0       2022-12-16 [2] RSPM (R 4.3.0)
 lmtest                 0.9-40      2022-03-21 [2] RSPM (R 4.3.0)
 lubridate            * 1.9.2       2023-02-10 [2] RSPM (R 4.3.0)
 magrittr             * 2.0.3       2022-03-30 [2] RSPM (R 4.3.0)
 MASS                   7.3-60      2023-05-04 [2] CRAN (R 4.3.1)
 Matrix                 1.6-1       2023-08-14 [2] RSPM (R 4.3.0)
 MatrixGenerics       * 1.12.3      2023-07-30 [2] RSPM (R 4.3.1)
 MatrixModels           0.5-2       2023-07-10 [2] RSPM (R 4.3.0)
 matrixStats          * 1.0.0       2023-06-02 [2] RSPM (R 4.3.0)
 mclust                 6.0.0       2022-10-31 [2] RSPM (R 4.3.0)
 mime                   0.12        2021-09-28 [2] RSPM (R 4.3.0)
 miniUI                 0.1.1.1     2018-05-18 [2] RSPM (R 4.3.0)
 multcomp               1.4-25      2023-06-20 [2] RSPM (R 4.3.0)
 munsell                0.5.0       2018-06-12 [2] RSPM (R 4.3.0)
 mvtnorm                1.2-2       2023-06-08 [2] RSPM (R 4.3.0)
 Nebulosa               1.10.0      2023-04-25 [2] RSPM (R 4.3.1)
 nlme                   3.1-163     2023-08-09 [2] RSPM (R 4.3.0)
 paletteer              1.5.0       2022-10-19 [2] RSPM (R 4.3.0)
 parallelly             1.36.0      2023-05-26 [2] RSPM (R 4.3.0)
 parameters             0.21.1      2023-05-26 [2] RSPM (R 4.3.0)
 patchwork            * 1.1.3.9000  2023-08-17 [2] Github (thomasp85/patchwork@51a6eff)
 pbapply                1.7-2       2023-06-27 [2] RSPM (R 4.3.0)
 pillar                 1.9.0       2023-03-22 [2] RSPM (R 4.3.0)
 pkgconfig              2.0.3       2019-09-22 [2] RSPM (R 4.3.0)
 plotly                 4.10.2      2023-06-03 [2] RSPM (R 4.3.0)
 plyr                   1.8.8       2022-11-11 [2] RSPM (R 4.3.0)
 png                    0.1-8       2022-11-29 [2] RSPM (R 4.3.0)
 polyclip               1.10-4      2022-10-20 [2] RSPM (R 4.3.0)
 pracma                 2.4.2       2022-09-22 [2] RSPM (R 4.3.0)
 prismatic              1.1.1       2022-08-15 [2] RSPM (R 4.3.0)
 progressr              0.14.0      2023-08-10 [2] RSPM (R 4.3.0)
 promises               1.2.1       2023-08-10 [2] RSPM (R 4.3.0)
 purrr                * 1.0.2       2023-08-10 [2] RSPM (R 4.3.0)
 R.methodsS3            1.8.2       2022-06-13 [2] RSPM (R 4.3.0)
 R.oo                   1.25.0      2022-06-12 [2] RSPM (R 4.3.0)
 R.utils                2.12.2      2022-11-11 [2] RSPM (R 4.3.0)
 R6                     2.5.1       2021-08-19 [2] RSPM (R 4.3.0)
 RANN                   2.6.1       2019-01-08 [2] RSPM (R 4.3.0)
 RColorBrewer         * 1.1-3       2022-04-03 [2] RSPM (R 4.3.0)
 Rcpp                   1.0.11      2023-07-06 [2] RSPM (R 4.3.0)
 RcppAnnoy              0.0.21      2023-07-02 [2] RSPM (R 4.3.0)
 RCurl                  1.98-1.12   2023-03-27 [2] RSPM (R 4.3.0)
 readr                * 2.1.4       2023-02-10 [2] RSPM (R 4.3.0)
 rematch2               2.1.2       2020-05-01 [2] RSPM (R 4.3.0)
 remotes                2.4.2.1     2023-07-18 [2] RSPM (R 4.3.0)
 repr                   1.1.6       2023-01-26 [2] RSPM (R 4.3.0)
 reshape2               1.4.4       2020-04-09 [2] RSPM (R 4.3.0)
 reticulate           * 1.31        2023-08-10 [2] RSPM (R 4.3.0)
 rlang                  1.1.1       2023-04-28 [2] RSPM (R 4.3.0)
 rmarkdown              2.24        2023-08-14 [2] RSPM (R 4.3.0)
 ROCR                   1.0-11      2020-05-02 [2] RSPM (R 4.3.0)
 rprojroot              2.0.3       2022-04-02 [2] RSPM (R 4.3.0)
 rstudioapi             0.15.0      2023-07-07 [2] RSPM (R 4.3.0)
 rsvd                   1.0.5       2021-04-16 [2] RSPM (R 4.3.0)
 Rtsne                  0.16        2022-04-17 [2] RSPM (R 4.3.0)
 S4Arrays               1.0.5       2023-07-24 [2] RSPM (R 4.3.1)
 S4Vectors            * 0.38.1      2023-05-02 [2] RSPM (R 4.3.1)
 sandwich               3.0-2       2022-06-15 [2] RSPM (R 4.3.0)
 scales                 1.2.1       2022-08-20 [2] RSPM (R 4.3.0)
 scattermore            1.2         2023-06-12 [2] RSPM (R 4.3.0)
 scCustomize          * 1.1.3       2023-08-17 [2] Github (samuel-marsh/scCustomize@2bb2b13)
 sceasy               * 0.0.7       2023-08-17 [2] Github (cellgeni/sceasy@0cfc0e3)
 schex                * 1.14.0      2023-04-25 [2] RSPM (R 4.3.1)
 sctransform            0.3.5       2022-09-21 [2] RSPM (R 4.3.0)
 sessioninfo            1.2.2       2021-12-06 [2] RSPM (R 4.3.0)
 Seurat               * 4.3.0       2022-11-18 [2] RSPM (R 4.3.1)
 SeuratDisk           * 0.0.0.9020  2023-08-17 [2] Github (mojaveazure/seurat-disk@9b89970)
 SeuratObject         * 4.1.3       2022-11-07 [2] RSPM (R 4.3.0)
 SeuratWrappers       * 0.3.1       2023-08-17 [2] Github (satijalab/seurat-wrappers@d28512f)
 shape                  1.4.6       2021-05-19 [2] RSPM (R 4.3.0)
 shiny                * 1.7.5       2023-08-12 [2] RSPM (R 4.3.0)
 SingleCellExperiment * 1.22.0      2023-04-25 [2] RSPM (R 4.3.1)
 skimr                * 2.1.5       2023-08-17 [2] Github (ropensci/skimr@d5126aa)
 snakecase              0.11.0      2019-05-25 [2] RSPM (R 4.3.0)
 sp                     2.0-0       2023-06-22 [2] RSPM (R 4.3.0)
 spatstat.data          3.0-1       2023-03-12 [2] RSPM (R 4.3.0)
 spatstat.explore       3.2-1       2023-05-13 [2] RSPM (R 4.3.0)
 spatstat.geom          3.2-4       2023-07-20 [2] RSPM (R 4.3.0)
 spatstat.random        3.1-5       2023-05-11 [2] RSPM (R 4.3.0)
 spatstat.sparse        3.0-2       2023-06-25 [2] RSPM (R 4.3.0)
 spatstat.utils         3.0-3       2023-05-09 [2] RSPM (R 4.3.0)
 statsExpressions       1.5.1       2023-05-23 [2] RSPM (R 4.3.0)
 stringi                1.7.12      2023-01-11 [2] RSPM (R 4.3.0)
 stringr              * 1.5.0       2022-12-02 [2] RSPM (R 4.3.0)
 SummarizedExperiment * 1.30.2      2023-06-06 [2] RSPM (R 4.3.1)
 survival               3.5-7       2023-08-14 [2] RSPM (R 4.3.0)
 tensor                 1.5         2012-05-05 [2] RSPM (R 4.3.0)
 TH.data                1.1-2       2023-04-17 [2] RSPM (R 4.3.0)
 tibble               * 3.2.1       2023-03-20 [2] RSPM (R 4.3.0)
 tidyr                * 1.3.0       2023-01-24 [2] RSPM (R 4.3.0)
 tidyselect             1.2.0       2022-10-10 [2] RSPM (R 4.3.0)
 tidyverse            * 2.0.0.9000  2023-08-17 [2] Github (tidyverse/tidyverse@8ec2e1f)
 timechange             0.2.0       2023-01-11 [2] RSPM (R 4.3.0)
 tweenr                 2.0.2       2022-09-06 [2] RSPM (R 4.3.0)
 tzdb                   0.4.0       2023-05-12 [2] RSPM (R 4.3.0)
 utf8                   1.2.3       2023-01-31 [2] RSPM (R 4.3.0)
 uwot                   0.1.16      2023-06-29 [2] RSPM (R 4.3.0)
 vctrs                  0.6.3       2023-06-14 [2] RSPM (R 4.3.0)
 vipor                  0.4.5       2017-03-22 [2] RSPM (R 4.3.0)
 viridis              * 0.6.4       2023-07-22 [2] RSPM (R 4.3.0)
 viridisLite          * 0.4.2       2023-05-02 [2] RSPM (R 4.3.0)
 vroom                  1.6.3       2023-04-28 [2] RSPM (R 4.3.0)
 withr                  2.5.0       2022-03-03 [2] RSPM (R 4.3.0)
 xfun                   0.40        2023-08-09 [2] RSPM (R 4.3.0)
 xtable                 1.8-4       2019-04-21 [2] RSPM (R 4.3.0)
 XVector                0.40.0      2023-04-25 [2] RSPM (R 4.3.1)
 yaml                   2.3.7       2023-01-23 [2] RSPM (R 4.3.0)
 zeallot                0.1.0       2018-01-28 [2] RSPM (R 4.3.0)
 zlibbioc               1.46.0      2023-04-25 [2] RSPM (R 4.3.1)
 zoo                    1.8-12      2023-04-13 [2] RSPM (R 4.3.0)

 [1] /home/etretiakov/R/x86_64-pc-linux-gnu-library/4.3
 [2] /opt/R/4.3.1/lib/R/library

──────────────────────────────────────────────────────────────────────────────