Last updated: 2024-07-26
Checks: 7 0
Knit directory: Cinquina_2024/
This reproducible R Markdown analysis was created with workflowr (version 1.7.1). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.
Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.
Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.
The command set.seed(20240320)
was run prior to running
the code in the R Markdown file. Setting a seed ensures that any results
that rely on randomness, e.g. subsampling or permutations, are
reproducible.
Great job! Recording the operating system, R version, and package versions is critical for reproducibility.
Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.
Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.
Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.
The results in this page were generated with repository version 373fd42. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.
Note that you need to be careful to ensure that all relevant files for
the analysis have been committed to Git prior to generating the results
(you can use wflow_publish
or
wflow_git_commit
). workflowr only checks the R Markdown
file, but you know if there are other scripts or data files that it
depends on. Below is the status of the Git repository when the results
were generated:
Ignored files:
Ignored: .Rhistory
Ignored: .Rproj.user/
Ignored: data/SCP1290/
Ignored: data/azimuth_integrated.rds
Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.
These are the previous versions of the repository in which changes were
made to the R Markdown (analysis/cortex_visualisation.Rmd
)
and HTML (docs/cortex_visualisation.html
) files. If you’ve
configured a remote Git repository (see ?wflow_git_remote
),
click on the hyperlinks in the table below to view the files as they
were in that past version.
File | Version | Author | Date | Message |
---|---|---|---|---|
html | 1d9d8ea | Evgenii O. Tretiakov | 2024-07-26 | Build site. |
html | 7a9f863 | Evgenii O. Tretiakov | 2024-07-26 | Build site. |
Rmd | 5fe5043 | Evgenii O. Tretiakov | 2024-07-26 | fix typos |
html | 5fe5043 | Evgenii O. Tretiakov | 2024-07-26 | fix typos |
html | 756e082 | Evgenii O. Tretiakov | 2024-06-14 | Build site. |
Rmd | 707b18d | Evgenii O. Tretiakov | 2024-06-14 | add stacked violin plots |
html | 47e285e | Evgenii O. Tretiakov | 2024-06-14 | Build site. |
Rmd | 1ba6643 | Evgenii O. Tretiakov | 2024-06-14 | improve design and analysis of differentially expressed genes across astrocytic clusters |
html | fb34412 | Evgenii O. Tretiakov | 2024-06-09 | Build site. |
Rmd | 62900cf | Evgenii O. Tretiakov | 2024-06-09 | add header to fix vector output in pdf |
Rmd | fd0e9b9 | Evgenii O. Tretiakov | 2024-06-09 | add visualisation of cortical data analysis of CaCyBP and S100a6 |
html | fd0e9b9 | Evgenii O. Tretiakov | 2024-06-09 | add visualisation of cortical data analysis of CaCyBP and S100a6 |
# Create a vector with the stage of development for each object
stage_info <- c("E11.5", "E12.5", "E13.5", "E14.5", "E15.5", "E16", "E18.5", "E18", "P1", "P1", "E10", "E17.5", "P4")
merged_cortex_2 <- SeuratObject::LoadSeuratRds(here::here("data/azimuth_integrated.rds"))
merged_cortex_2$cell_name <- Cells(merged_cortex_2)
merged_cortex_2
An object of class Seurat
28186 features across 82415 samples within 5 assays
Active assay: RNA (27998 features, 2000 variable features)
25 layers present: data.E11.5, data.E12.5, data.E13.5, data.E14.5, data.E15.5, data.E16, data.E18.5, data.E18, data.P1, data.E10, data.E17.5, data.P4, scale.data, counts.E11.5, counts.E12.5, counts.E13.5, counts.E14.5, counts.E15.5, counts.E16, counts.E18.5, counts.E18, counts.P1, counts.E10, counts.E17.5, counts.P4
4 other assays present: prediction.score.class, prediction.score.cluster, prediction.score.subclass, prediction.score.cross_species_cluster
7 dimensional reductions calculated: pca, integrated_dr, ref.umap, integrated.cca, umap.cca, harmony, umap.harmony
orig_umap <- readr::read_tsv(
here("data/SCP1290/cluster/cluster_scDevSC.merged.umap.txt"),
skip = 2,
col_names = c("cell_name", "UMAP_1", "UMAP_2"),
col_types = list(col_character(), col_double(), col_double())
)
glimpse(orig_umap)
Rows: 98,047
Columns: 3
$ cell_name <chr> "E10_v1_AAACCTGAGGGTCTCC-1", "E10_v1_AAACCTGCACAACGCC-1", "E…
$ UMAP_1 <dbl> -3.0025911, -3.6729214, -3.8859395, -3.9020242, -2.9312939, …
$ UMAP_2 <dbl> -10.453364, -6.552985, -10.773631, -10.869657, -10.769403, -…
orig_umap %<>% tibble::column_to_rownames("cell_name")
orig_umap %<>% as.matrix()
orig_tsne <- readr::read_tsv(
here("data/SCP1290/cluster/cluster_scDevSC.merged.tsne.txt"),
skip = 2,
col_names = c("cell_name", "tSNE_1", "tSNE_2"),
col_types = list(col_character(), col_double(), col_double())
)
glimpse(orig_tsne)
Rows: 98,047
Columns: 3
$ cell_name <chr> "E10_v1_AAACCTGAGGGTCTCC-1", "E10_v1_AAACCTGCACAACGCC-1", "E…
$ tSNE_1 <dbl> 15.442958, 10.373660, 14.828413, 16.307658, 18.062250, 13.72…
$ tSNE_2 <dbl> -19.603245, -17.062466, -20.102599, -20.003542, -18.636268, …
orig_tsne %<>% tibble::column_to_rownames("cell_name")
orig_tsne %<>% as.matrix()
orig_metadata <- readr::read_tsv(here(
"data/SCP1290/metadata/metaData_scDevSC.txt"))
orig_metadata %<>% rename("cell_name" = "NAME")
orig_metadata_types <- orig_metadata[1,] |> purrr::simplify()
orig_metadata %<>% filter(!cell_name == "TYPE")
glimpse(orig_metadata)
Rows: 98,047
Columns: 28
$ cell_name <chr> "E10_v1_AAACCTGAGGGTCTCC-…
$ orig_ident <chr> "E10", "E10", "E10", "E10…
$ nCount_RNA <chr> "1544", "1157", "2081", "…
$ nFeature_RNA <chr> "1022", "783", "1200", "1…
$ percent_mito <chr> "0.02007772", "0.01469317…
$ n_hkgene <chr> "51", "39", "67", "71", "…
$ S_Score <chr> "0.356987282", "0.4538538…
$ G2M_Score <chr> "0.330795055", "0.2605599…
$ Phase <chr> "S", "S", "S", "G2M", "S"…
$ CC_Difference <chr> "0.026192226", "0.1932938…
$ seurat_clusters <chr> "34", "34", "34", "37", "…
$ RNA_snn_res_1 <chr> "20", "20", "20", "20", "…
$ scrublet_doublet <chr> "FALSE", "FALSE", "FALSE"…
$ RNA_snn_res_2 <chr> "34", "34", "34", "37", "…
$ Doublet_intersect <chr> NA, NA, NA, NA, NA, NA, N…
$ Gral_cellType <chr> NA, NA, NA, NA, NA, NA, N…
$ New_cellType <chr> "Apical progenitors", "In…
$ biosample_id <chr> "E10", "E10", "E10", "E10…
$ donor_id <chr> "mouse_E10", "mouse_E10",…
$ species <chr> "NCBITaxon_10090", "NCBIT…
$ disease <chr> "PATO_0000461", "PATO_000…
$ disease__ontology_label <chr> "normal", "normal", "norm…
$ organ <chr> "UBERON_0008930", "UBERON…
$ organ__ontology_label <chr> "somatosensory cortex", "…
$ library_preparation_protocol <chr> "EFO_0009899", "EFO_00098…
$ library_preparation_protocol__ontology_label <chr> "10X 3' v2 sequencing", "…
$ sex <chr> "mixed", "mixed", "mixed"…
$ species__ontology_label <chr> "Mus musculus", "Mus musc…
change_column_types <- function(df, types) {
for (col_name in names(types)) {
col_type <- types[col_name]
if (col_type == "character") {
df[[col_name]] <- as.character(df[[col_name]])
} else if (col_type == "numeric") {
df[[col_name]] <- as.numeric(df[[col_name]])
} else if (col_type == "integer") {
df[[col_name]] <- as.integer(df[[col_name]])
} else if (col_type == "logical") {
df[[col_name]] <- as.logical(df[[col_name]])
} else if (col_type == "factor") {
df[[col_name]] <- as.factor(df[[col_name]])
} else if (col_type == "group") {
df[[col_name]] <- as.factor(df[[col_name]])
} else {
warning(paste("Unknown type:", col_type, "for column", col_name))
}
}
return(df)
}
# Apply the function to the metadata
orig_metadata <- change_column_types(orig_metadata, orig_metadata_types)
# Print the modified metadata
glimpse(orig_metadata)
Rows: 98,047
Columns: 28
$ cell_name <chr> "E10_v1_AAACCTGAGGGTCTCC-…
$ orig_ident <fct> E10, E10, E10, E10, E10, …
$ nCount_RNA <dbl> 1544, 1157, 2081, 2490, 2…
$ nFeature_RNA <dbl> 1022, 783, 1200, 1430, 14…
$ percent_mito <dbl> 0.020077720, 0.014693172,…
$ n_hkgene <dbl> 51, 39, 67, 71, 70, 50, 4…
$ S_Score <dbl> 0.35698728, 0.45385381, 0…
$ G2M_Score <dbl> 0.33079506, 0.26055995, 0…
$ Phase <fct> S, S, S, G2M, S, S, S, S,…
$ CC_Difference <dbl> 0.026192226, 0.193293862,…
$ seurat_clusters <fct> 34, 34, 34, 37, 37, 34, 4…
$ RNA_snn_res_1 <fct> 20, 20, 20, 20, 20, 20, 3…
$ scrublet_doublet <fct> FALSE, FALSE, FALSE, FALS…
$ RNA_snn_res_2 <fct> 34, 34, 34, 37, 37, 34, 4…
$ Doublet_intersect <fct> NA, NA, NA, NA, NA, NA, N…
$ Gral_cellType <fct> NA, NA, NA, NA, NA, NA, N…
$ New_cellType <fct> Apical progenitors, Inter…
$ biosample_id <fct> E10, E10, E10, E10, E10, …
$ donor_id <fct> mouse_E10, mouse_E10, mou…
$ species <fct> NCBITaxon_10090, NCBITaxo…
$ disease <fct> PATO_0000461, PATO_000046…
$ disease__ontology_label <fct> normal, normal, normal, n…
$ organ <fct> UBERON_0008930, UBERON_00…
$ organ__ontology_label <fct> somatosensory cortex, som…
$ library_preparation_protocol <fct> EFO_0009899, EFO_0009899,…
$ library_preparation_protocol__ontology_label <fct> 10X 3' v2 sequencing, 10X…
$ sex <fct> mixed, mixed, mixed, mixe…
$ species__ontology_label <fct> Mus musculus, Mus musculu…
orig_srt <- Read10X(data.dir = here("data/SCP1290/expression/601ae2f4771a5b0d72588bfb"))
# Convert the log1p normalized matrix to a standard matrix if it's not already
normalized_matrix <- as.matrix(orig_srt)
# Reverse the log1p transformation to get the scaled count matrix
count_matrix <- expm1(normalized_matrix)
# Extract scaling factors
scaling_factors <- orig_metadata[orig_metadata$cell_name == colnames(count_matrix),]$nCount_RNA / 1e4
# Multiply each column by its scaling factor and round the results (it's not necessary but just to be sure)
scaled_count_matrix <- sweep(count_matrix, 2, scaling_factors, FUN = "*")
scaled_count_matrix <- round(scaled_count_matrix)
# Convert the count matrix to a sparse matrix format (dgCMatrix) as needed
count_matrix_sparse <- as(scaled_count_matrix, "dgCMatrix")
# Create a Seurat object using the recovered count matrix
merged_cortex <- CreateSeuratObject(counts = count_matrix_sparse, meta.data = orig_metadata)
merged_cortex[["umap"]] <- CreateDimReducObject(embeddings = orig_umap, key = "UMAP_", assay = DefaultAssay(merged_cortex))
merged_cortex[["tsne"]] <- CreateDimReducObject(embeddings = orig_tsne, key = "tSNE_", assay = DefaultAssay(merged_cortex))
merged_cortex$stage <- merged_cortex$orig.ident
table(merged_cortex$New_cellType)
Apical progenitors Astrocytes Cajal Retzius cells
18491 2976 532
CThPN Cycling glial cells DL CPN
4607 1004 3106
DL_CPN_1 DL_CPN_2 Doublet
422 146 1854
Endothelial cells Ependymocytes Immature neurons
291 35 3092
Intermediate progenitors Interneurons Layer 4
8490 10469 5317
Layer 6b Low quality cells Microglia
194 4545 263
Migrating neurons NP Oligodendrocytes
12332 424 1098
Pericytes Red blood cells SCPN
236 330 2987
UL CPN VLMC
14041 765
Idents(merged_cortex) <- "New_cellType"
merged_cortex <- subset(merged_cortex, idents = c("Doublet", "Low quality cells", "Red blood cells"), invert = TRUE)
merged_cortex <-
Store_Palette_Seurat(
seurat_object = merged_cortex,
palette = rev(brewer.pal(n = 11, name = "Spectral")),
palette_name = "expr_Colour_Pal"
)
merged_cortex <- Store_Palette_Seurat(
seurat_object = merged_cortex,
palette = ggsci::pal_ucscgb("default")(length(levels(merged_cortex$New_cellType))),
palette_name = "types_Colour_Pal",
overwrite = T
)
names(merged_cortex@misc$types_Colour_Pal) <- levels(merged_cortex$New_cellType)
merged_cortex <- Store_Palette_Seurat(
seurat_object = merged_cortex,
palette = ggsci::pal_gsea("default")(length(levels(merged_cortex$stage))),
palette_name = "stage_Colour_Pal",
overwrite = T
)
names(merged_cortex@misc$stage_Colour_Pal) <- levels(merged_cortex$stage)
# Get the list of S100 family genes
s100_genes <- grep("^S100", rownames(merged_cortex), value = TRUE)
genes.embed <- c(
"Abcd1",
"Abcd2",
"Abcd3",
"Acaa1",
"Acaa2",
"Acox1",
"Agrn",
"Agt",
"Alcam",
"Aldh1a1",
"Aldh1l1",
"Aldoc",
"Angpt1",
"Apoe",
"App",
"Aqp4",
"Arf1",
"Bmp7",
"Bsg",
"Cacybp",
"Caf4",
"Ccl25",
"Ckb",
"Cnr1",
"Cnr2",
"Col4a5",
"Cst3",
"Dagla",
"Daglb",
"Decr2",
"Dcc",
"Dnm1",
"Drp1",
"Ech1",
"Efna5",
"Egfr",
"Enho",
"Eno1",
"Faah",
"Fgf1",
"Fgfr3",
"Fis1",
"Fos",
"Fth1",
"Ftl1",
"Gfap",
"Gja1",
"Gli1",
"Glul",
"Gnai2",
"Gnas",
"H2-K1",
"Hacd2",
"Hadhb",
"Hbegf",
"Hepacam",
"Hif1",
"Htra1",
"Igsf1",
"Il18",
"Il1rapl1",
"Itgav",
"Jam2",
"Lama2",
"Lamb2",
"Lcat",
"Lgi1",
"Lgi4",
"Lpcat3",
"Lrpap1",
"Lrrc4b",
"Lxn",
"Mdk",
"Mdv1",
"Mfn1",
"Mfn2",
"Mgll",
"Mief1",
"Napepld",
"Ncam1",
"Ncan",
"Ndrg2",
"Nfasc",
"Nfia",
"Nlgn3",
"Nrxn1",
"Nrxn2",
"Ntn1",
"Ntrk3",
"Opa1",
"Otp",
"Pex1",
"Pex10",
"Pex12",
"Pex13",
"Pex14",
"Pex16",
"Pex2",
"Pex26",
"Pex3",
"Pex6",
"Pkm",
"Pla2g7",
"Plcb1",
"Psap",
"Ptn",
"Pygb",
"Ralyl",
"Rgma",
"Rtn4",
"S100a1",
"S100a6",
"S100b",
"Siah1a",
"Siah1b",
"Scd2",
"Sdc2",
"Sema6a",
"Sema6d",
"Sgcd",
"Sirpa",
"Slc1a2",
"Slc1a3",
"Slc38a1",
"Slc4a4",
"Slc6a11",
"Slc7a10",
"Slit1",
"Slit2",
"Slitrk2",
"Sorbs1",
"Sox9",
"Sparc",
"Spon1",
"Tafa1",
"Timp3",
"Tkt",
"Trpv1",
"Vcam1",
"Vegfa"
) %>% .[. %in% rownames(merged_cortex)]
merged_cortex <- FindVariableFeatures(merged_cortex, nfeatures = 5000, verbose = FALSE)
merged_cortex <- NormalizeData(
merged_cortex,
features = c(
VariableFeatures(merged_cortex),
s100_genes,
genes.embed),
verbose = FALSE)
# Scale data
merged_cortex <- ScaleData(
merged_cortex,
features = c(
VariableFeatures(merged_cortex),
s100_genes,
genes.embed),
verbose = FALSE)
# Create DimPlot
p1 <- DimPlot(
merged_cortex,
reduction = "umap",
group.by = c("stage", "New_cellType"),
combine = FALSE, label.size = 2,
alpha = 0.7,
cols = c(merged_cortex@misc$types_Colour_Pal, merged_cortex@misc$stage_Colour_Pal)
)
p2 <- DimPlot(
merged_cortex,
reduction = "tsne",
group.by = c("stage", "New_cellType"),
combine = FALSE, label.size = 2,
alpha = 0.7,
cols = c(merged_cortex@misc$types_Colour_Pal, merged_cortex@misc$stage_Colour_Pal)
)
wrap_plots(c(p1, p2), ncol = 2, byrow = F)
# Create a custom FeaturePlot for each S100 gene
plot_list <-
lapply(
c(s100_genes, "Cacybp", "Siah1a", "Siah1b"),
function(gene) {
FeaturePlot_scCustom(
seurat_object = merged_cortex,
features = gene,
colors_use = merged_cortex@misc$expr_Colour_Pal,
na_color = "lightgray",
layer = "data",
order = TRUE,
pt.size = 1,
reduction = "umap",
split.by = "stage",
split_collect = FALSE,
label = F,
label_feature_yaxis = TRUE,
combine = FALSE
)
})
# Combine the plots into a single grid
combined_plot <- patchwork::wrap_plots(plot_list, ncol = 1)
# Display the combined plot
print(combined_plot)
# Create a compact DotPlot
compact_plot <- DotPlot(
object = merged_cortex,
features = c(s100_genes,
"Cacybp",
"Siah1a",
"Siah1b"),
group.by = "stage",
cluster.idents = FALSE,
scale = TRUE,
dot.scale = 12
) + RotatedAxis()
# Display the compact plot
print(compact_plot)
table(merged_cortex$New_cellType)
Apical progenitors Astrocytes Cajal Retzius cells
18491 2976 532
CThPN Cycling glial cells DL CPN
4607 1004 3106
DL_CPN_1 DL_CPN_2 Doublet
422 146 0
Endothelial cells Ependymocytes Immature neurons
291 35 3092
Intermediate progenitors Interneurons Layer 4
8490 10469 5317
Layer 6b Low quality cells Microglia
194 0 263
Migrating neurons NP Oligodendrocytes
12332 424 1098
Pericytes Red blood cells SCPN
236 0 2987
UL CPN VLMC
14041 765
merged_cortex@meta.data |> janitor::tabyl(New_cellType, stage)
plot_gene_by_dev <- function(x) {
f_plot <- FeaturePlot(
merged_cortex,
cols = merged_cortex@misc$expr_Colour_Pal,
features = x,
max.cutoff = "q99",
pt.size = 1,
alpha = 0.6,
order = TRUE,
reduction = "umap",
split.by = "stage",
combine = T
)
# Combine the plots into a single grid
combined_plot <- patchwork::wrap_plots(f_plot, nrow = 1)
# Display the combined plot
print(combined_plot)
}
genes.embed |> purrr::walk(plot_gene_by_dev)
FeaturePlot(merged_cortex,
blend = TRUE,
features = c("S100a6", "Cacybp"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q50",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
VlnPlot(merged_cortex, features = c("S100a6", "Cacybp", "Siah1a", "Siah1b", "Ndrg2", "Aldoc", "Slc1a3", "Glul", "Apoe", "Aldh1l1", "Ntrk2", "Gfap", "Gja1", "Htra1", "Aqp4", "Ntsr2"), group.by = "New_cellType",
cols = merged_cortex@misc$types_Colour_Pal)
Stacked_VlnPlot(seurat_object = merged_cortex, features = c("S100a6", "Cacybp", "Siah1a", "Siah1b", "Ndrg2", "Aldoc", "Slc1a3", "Glul", "Apoe", "Aldh1l1", "Ntrk2", "Gfap", "Gja1", "Htra1", "Aqp4", "Ntsr2"), x_lab_rotate = TRUE,
colors_use = merged_cortex@misc$types_Colour_Pal, group.by = "stage", split.by = "New_cellType")
Stacked_VlnPlot(seurat_object = merged_cortex, features = c("S100a6", "Cacybp", "Siah1a", "Siah1b", "Ndrg2", "Aldoc", "Slc1a3", "Glul", "Apoe", "Aldh1l1", "Ntrk2", "Gfap", "Gja1", "Htra1", "Aqp4", "Ntsr2"), x_lab_rotate = TRUE,
colors_use = merged_cortex@misc$stage_Colour_Pal, group.by = "New_cellType", split.by = "stage")
astro <- subset(
x = merged_cortex,
subset = New_cellType == c("Apical progenitors",
"Cycling glial cells",
"Astrocytes"))
astro <- FindVariableFeatures(astro, nfeatures = 5000, verbose = FALSE)
# Scale data
astro <- ScaleData(
astro,
features = c(
VariableFeatures(astro),
s100_genes,
genes.embed),
verbose = FALSE)
# Run PCA
astro <- RunPCA(astro, verbose = FALSE)
# Find neighbors
astro <- FindNeighbors(astro, reduction = "pca", dims = 1:30)
# Find clusters
astro <- FindClusters(astro, resolution = 0.7, cluster.name = "astro_clusters", algorithm = 4, random.seed = 42)
# Create DimPlot
p1 <- DimPlot(
astro,
reduction = "umap",
group.by = c("stage", "New_cellType"),
alpha = 0.6,
combine = FALSE, label.size = 2,
cols = c(merged_cortex@misc$types_Colour_Pal, merged_cortex@misc$stage_Colour_Pal)
)
p2 <- DimPlot(
astro,
reduction = "tsne",
group.by = c("stage", "New_cellType"),
alpha = 0.6,
combine = FALSE, label.size = 2,
cols = c(merged_cortex@misc$types_Colour_Pal, merged_cortex@misc$stage_Colour_Pal)
)
wrap_plots(c(p1, p2), ncol = 2, byrow = F)
astro <- Store_Palette_Seurat(
seurat_object = astro,
palette = ggsci::pal_igv("default")(length(levels(astro$astro_clusters))),
palette_name = "clusters_Colour_Pal",
overwrite = T
)
names(astro@misc$clusters_Colour_Pal) <- levels(astro$astro_clusters)
DimPlot(
astro,
reduction = "umap",
group.by = c("astro_clusters"),
combine = FALSE, label.size = 2,
alpha = 0.6,
label = T,
cols = astro@misc$clusters_Colour_Pal
)
[[1]]
Idents(astro) <- "New_cellType"
astro_subset <- subset(astro, idents = c("Astrocytes"))
Idents(astro_subset) <- "astro_clusters"
astro_subset <- subset(astro_subset, idents = c("7", "9", "13", "15", "16"))
# pseudobulk the counts based on donor-condition-celltype
pseudo_combined_astro_subset <- AggregateExpression(
astro_subset,
assays = "RNA",
return.seurat = TRUE,
group.by = c("stage", "astro_clusters"))
# each 'cell' is a donor-condition-celltype pseudobulk profile
tail(Cells(pseudo_combined_astro_subset))
[1] "P1_13" "P1_15" "P1_16" "P4_7" "P4_9" "P4_15"
# the metadata for the pseudobulk object is missing, so we need to add it back
pseudo_combined_astro_subset$astro_clusters <- sapply(strsplit(Cells(pseudo_combined_astro_subset), split = "_"), "[", 2)
pseudo_combined_astro_subset$stage <- sapply(strsplit(Cells(pseudo_combined_astro_subset), split = "_"), "[", 1)
DimPlot(
astro_subset,
reduction = "umap",
group.by = c("astro_clusters"),
combine = FALSE, label.size = 2,
alpha = 0.6,
label = T,
cols = astro@misc$clusters_Colour_Pal
)
[[1]]
Version | Author | Date |
---|---|---|
47e285e | Evgenii O. Tretiakov | 2024-06-14 |
## DEG by two methods
astros.de <- FindAllMarkers(astro_subset, min.cells.group = 1, test.use = "LR", base = 10, only.pos = F, verbose = FALSE)
head(astros.de, n = 10)
Idents(pseudo_combined_astro_subset) <- "astro_clusters"
bulk.astros.de <- FindAllMarkers(object = pseudo_combined_astro_subset,
min.cells.group = 1,
test.use = "DESeq2",
only.pos = F)
head(bulk.astros.de, n = 15)
# compare the DE P-values between the single-cell level and the pseudobulk level results
names(bulk.astros.de) <- paste0(names(bulk.astros.de), ".bulk")
bulk.astros.de$gene <- rownames(bulk.astros.de)
names(astros.de) <- paste0(names(astros.de), ".sc")
astros.de$gene <- rownames(astros.de)
merge_dat <- merge(astros.de, bulk.astros.de, by = "gene")
merge_dat <- merge_dat[order(merge_dat$p_val.bulk), ]
# Number of genes that are marginally significant in both; marginally significant only in bulk; and marginally significant only in single-cell
common <-
merge_dat |>
filter(merge_dat$p_val.bulk < 0.05 &
merge_dat$p_val.sc < 0.05) |>
group_by(cluster.bulk) |>
slice_max(order_by = avg_log10FC.sc, n = 5) |>
pull(gene)
only_sc <- merge_dat$gene[which(merge_dat$p_val.bulk > 0.05 &
merge_dat$p_val.sc < 0.05)]
only_bulk <- merge_dat$gene[which(merge_dat$p_val.bulk < 0.05 &
merge_dat$p_val.sc > 0.05)]
print(paste0('# Common: ',length(common)))
[1] "# Common: 25"
print(paste0('# Only in single-cell: ',length(only_sc)))
[1] "# Only in single-cell: 0"
print(paste0('# Only in bulk: ',length(only_bulk)))
[1] "# Only in bulk: 0"
# create a new column to annotate sample-condition-celltype in the single-cell dataset
astro_subset$stage.astro_clusters <- paste0(astro_subset$astro_clusters, "-", astro_subset$stage)
# generate violin plot
Idents(astro_subset) <- "astro_clusters"
print(merge_dat[merge_dat$gene %in% common[1:25],c('gene','p_val.sc','p_val.bulk', 'cluster.bulk')])
gene p_val.sc p_val.bulk cluster.bulk
245 Dlx5 2.224879e-15 1.004073e-16 16
830 Sp8 7.325009e-14 1.434870e-15 16
873 Tiam2 1.753849e-09 2.502722e-10 16
381 Grm5.1 1.090887e-50 1.100774e-07 9
790 Serpine2.1 1.029654e-152 1.937538e-07 9
345 Gad1 1.927821e-04 8.145070e-07 16
831 Sp9 1.056635e-07 1.689560e-05 16
783 Selm.1 3.054977e-52 6.255484e-05 13
630 Plagl1 6.137427e-50 1.256215e-04 7
571 Nrbp2 4.077023e-07 4.612720e-04 15
940 Ung 1.601432e-10 1.224941e-03 13
159 Cenpa.1 1.841609e-22 1.803404e-03 15
33 Adamts18 1.566258e-15 1.814204e-03 9
434 Inadl 1.068437e-12 2.075069e-03 9
102 Boc 1.095671e-12 2.692460e-03 7
299 Fam167a 2.273353e-13 3.424024e-03 7
14 5033430I15Rik 1.494394e-15 3.656228e-03 7
89 Atxn1 1.613565e-18 4.597502e-03 7
104 Bok.1 4.393463e-17 5.770670e-03 13
824 Snca.1 1.376467e-24 6.921764e-03 13
837 Spc24.1 2.805339e-32 7.394354e-03 15
140 Cdca3.1 3.835536e-23 7.937703e-03 15
470 Lipg 7.314257e-18 8.226747e-03 9
11 2810417H13Rik.1 5.042876e-43 9.778687e-03 15
687 Rgs16 8.693403e-11 9.918756e-03 13
VlnPlot(astro_subset, features = c("S100a6", "Cacybp", "Siah1a", "Siah1b", "Ndrg2", "Aldoc", "Slc1a3", "Glul", "Apoe", "Aldh1l1", "Ntrk2", "Gfap", "Gja1", "Htra1", "Aqp4", "Ntsr2"), group.by = "astro_clusters",
cols = astro@misc$clusters_Colour_Pal)
VlnPlot(astro_subset, features = c("S100a6", "Cacybp", "Siah1a", "Siah1b", common[1:24]), group.by = "astro_clusters",
cols = astro@misc$clusters_Colour_Pal)
VlnPlot(astro_subset, features = c("S100a6", "Cacybp", "Siah1a", "Siah1b", common[1:6]), group.by = "stage.astro_clusters", ncol = 1)
# Create a compact DotPlot
compact_plot <- DotPlot(
object = astro,
features = c(s100_genes,
"Cacybp",
"Siah1a",
"Siah1b"),
group.by = "stage",
cluster.idents = F,
scale = TRUE,
dot.scale = 12
) + RotatedAxis()
# Display the compact plot
print(compact_plot)
# Create a compact DotPlot
compact_plot <- DotPlot(
object = astro,
features = c(s100_genes,
"Cacybp",
"Siah1a",
"Siah1b"),
group.by = "stage",
cluster.idents = F,
cols = merged_cortex@misc$types_Colour_Pal[unique(astro$New_cellType)],
scale = TRUE,
split.by = "New_cellType",
dot.scale = 12
) + RotatedAxis()
# Display the compact plot
print(compact_plot)
astro$type.cluster <- str_c(astro$New_cellType, astro$astro_clusters, sep = "_")
# Create a compact DotPlot
compact_plot <- DotPlot(
object = astro,
features = c("S100a6", "Cacybp", "Siah1a", "Siah1b", common[1:24]),
group.by = "stage",
cluster.idents = F,
cols = ggsci::pal_igv("default")(35),
scale = TRUE,
split.by = "type.cluster",
dot.scale = 12
) + RotatedAxis()
# Display the compact plot
print(compact_plot)
FeaturePlot(astro,
blend = TRUE,
features = c("S100a6", "Cacybp"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("S100a6", "Gja1"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("Cacybp", "Gja1"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("S100a6", "Glul"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("Cacybp", "Glul"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("S100a6", "Apoe"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("Cacybp", "Apoe"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("S100a6", "Ntrk2"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("Cacybp", "Ntrk2"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("S100a6", "Ntsr2"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("Cacybp", "Ntsr2"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("S100a6", "Ndrg2"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("Cacybp", "Ndrg2"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("S100a6", "Aldoc"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("Cacybp", "Aldoc"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("S100a6", "Slc1a3"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("Cacybp", "Slc1a3"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("S100a6", "Gfap"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("Cacybp", "Gfap"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("S100a6", "Htra1"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("Cacybp", "Htra1"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("S100a6", "Aqp4"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
FeaturePlot(astro,
blend = TRUE,
features = c("Cacybp", "Aqp4"),
blend.threshold = 0.4,
max.cutoff = "q99",
min.cutoff = "q30",
pt.size = 0.7,
cols = c("grey98", "red", "blue"),
order = T,
alpha = 0.35)
sessioninfo::session_info()
─ Session info ───────────────────────────────────────────────────────────────
setting value
version R version 4.4.0 (2024-04-24)
os Ubuntu 22.04.4 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 2024-07-26
pandoc 3.2 @ /opt/python/3.8.8/bin/ (via rmarkdown)
─ Packages ───────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
abind 1.4-5 2016-07-21 [2] RSPM (R 4.4.0)
annotate 1.82.0 2024-04-30 [2] RSPM (R 4.4.0)
AnnotationDbi 1.66.0 2024-05-01 [2] RSPM (R 4.4.0)
AnnotationFilter 1.28.0 2024-04-30 [2] RSPM (R 4.4.0)
Azimuth * 0.5.0 2024-06-19 [2] Github (satijalab/azimuth@243ee5d)
beeswarm 0.4.0 2021-06-01 [2] RSPM (R 4.4.0)
Biobase 2.64.0 2024-04-30 [2] RSPM (R 4.4.0)
BiocGenerics 0.50.0 2024-04-30 [2] RSPM (R 4.4.0)
BiocIO 1.14.0 2024-04-30 [2] RSPM (R 4.4.0)
BiocManager 1.30.23 2024-05-04 [2] RSPM (R 4.4.0)
BiocParallel 1.38.0 2024-04-30 [2] RSPM (R 4.4.0)
Biostrings 2.72.1 2024-06-02 [2] RSPM (R 4.4.0)
bit 4.0.5 2022-11-15 [2] RSPM (R 4.4.0)
bit64 4.0.5 2020-08-30 [2] RSPM (R 4.4.0)
bitops 1.0-7 2021-04-24 [2] RSPM (R 4.4.0)
blob 1.2.4 2023-03-17 [2] RSPM (R 4.4.0)
BSgenome 1.72.0 2024-04-30 [2] RSPM (R 4.4.0)
BSgenome.Hsapiens.UCSC.hg38 1.4.5 2024-06-19 [2] RSPM (R 4.4.0)
bslib 0.7.0 2024-03-29 [2] RSPM (R 4.4.0)
cachem 1.1.0 2024-05-16 [2] RSPM (R 4.4.0)
callr 3.7.6 2024-03-25 [2] RSPM (R 4.4.0)
caTools 1.18.2 2021-03-28 [2] RSPM (R 4.4.0)
cellranger 1.1.0 2016-07-27 [2] RSPM (R 4.4.0)
circlize 0.4.16 2024-06-19 [2] Github (jokergoo/circlize@9b21578)
cli 3.6.2 2023-12-11 [2] RSPM (R 4.4.0)
cluster 2.1.6 2023-12-01 [2] RSPM (R 4.4.0)
CNEr 1.40.0 2024-04-30 [2] RSPM (R 4.4.0)
codetools 0.2-20 2024-03-31 [2] RSPM (R 4.4.0)
colorspace 2.1-0 2023-01-23 [2] RSPM (R 4.4.0)
cowplot * 1.1.3 2024-01-22 [2] RSPM (R 4.4.0)
crayon 1.5.2 2022-09-29 [2] RSPM (R 4.4.0)
curl 5.2.1 2024-03-01 [2] RSPM (R 4.4.0)
data.table 1.15.4 2024-03-30 [2] RSPM (R 4.4.0)
DBI 1.2.3 2024-06-02 [2] RSPM (R 4.4.0)
DelayedArray 0.30.1 2024-05-07 [2] RSPM (R 4.4.0)
deldir 2.0-4 2024-02-28 [2] RSPM (R 4.4.0)
DESeq2 1.44.0 2024-04-30 [2] RSPM (R 4.4.0)
digest 0.6.35 2024-03-11 [2] RSPM (R 4.4.0)
DirichletMultinomial 1.46.0 2024-04-30 [2] RSPM (R 4.4.0)
dotCall64 1.1-1 2023-11-28 [2] RSPM (R 4.4.0)
dplyr * 1.1.4 2023-11-17 [2] RSPM (R 4.4.0)
DT 0.33 2024-04-04 [2] RSPM (R 4.4.0)
EnsDb.Hsapiens.v86 2.99.0 2024-06-19 [2] RSPM (R 4.4.0)
ensembldb 2.28.0 2024-04-30 [2] RSPM (R 4.4.0)
evaluate 0.24.0 2024-06-10 [2] RSPM (R 4.4.0)
fansi 1.0.6 2023-12-08 [2] RSPM (R 4.4.0)
farver 2.1.2 2024-05-13 [2] RSPM (R 4.4.0)
fastDummies 1.7.3 2023-07-06 [2] RSPM (R 4.4.0)
fastmap 1.2.0 2024-05-15 [2] RSPM (R 4.4.0)
fastmatch 1.1-4 2023-08-18 [2] RSPM (R 4.4.0)
fitdistrplus 1.1-11 2023-04-25 [2] RSPM (R 4.4.0)
forcats 1.0.0 2023-01-29 [2] RSPM (R 4.4.0)
fs 1.6.4 2024-04-25 [2] RSPM (R 4.4.0)
future 1.33.2 2024-03-26 [2] RSPM (R 4.4.0)
future.apply 1.11.2 2024-03-28 [2] RSPM (R 4.4.0)
gargle 1.5.2 2023-07-20 [2] RSPM (R 4.4.0)
generics 0.1.3 2022-07-05 [2] RSPM (R 4.4.0)
GenomeInfoDb 1.40.1 2024-05-24 [2] RSPM (R 4.4.0)
GenomeInfoDbData 1.2.12 2024-06-19 [2] RSPM (R 4.4.0)
GenomicAlignments 1.40.0 2024-04-30 [2] RSPM (R 4.4.0)
GenomicFeatures 1.56.0 2024-04-30 [2] RSPM (R 4.4.0)
GenomicRanges 1.56.1 2024-06-12 [2] RSPM (R 4.4.0)
getPass 0.2-4 2023-12-10 [2] RSPM (R 4.4.0)
ggbeeswarm 0.7.2 2024-06-19 [2] Github (eclarke/ggbeeswarm@ce2da8a)
ggplot2 * 3.5.1 2024-04-23 [2] RSPM (R 4.4.0)
ggprism 1.0.5 2024-06-19 [2] Github (csdaw/ggprism@b6e6c0e)
ggrastr 1.0.2 2024-06-19 [2] Github (VPetukhov/ggrastr@50ca3e0)
ggrepel 0.9.5.9999 2024-06-19 [2] Github (slowkow/ggrepel@0f34805)
ggridges 0.5.6 2024-01-23 [2] RSPM (R 4.4.0)
ggsci 3.2.0 2024-06-19 [2] Github (nanxstats/ggsci@b5bf1fd)
git2r 0.33.0 2023-11-26 [2] RSPM (R 4.4.0)
GlobalOptions 0.1.2 2020-06-10 [2] RSPM (R 4.4.0)
globals 0.16.3 2024-03-08 [2] RSPM (R 4.4.0)
glue 1.7.0 2024-01-09 [2] RSPM (R 4.4.0)
GO.db 3.19.1 2024-06-19 [2] RSPM (R 4.4.0)
goftest 1.2-3 2021-10-07 [2] RSPM (R 4.4.0)
googledrive 2.1.1 2023-06-11 [2] RSPM (R 4.4.0)
googlesheets4 1.1.1 2023-06-11 [2] RSPM (R 4.4.0)
gridExtra 2.3 2017-09-09 [2] RSPM (R 4.4.0)
gtable 0.3.5 2024-04-22 [2] RSPM (R 4.4.0)
gtools 3.9.5 2023-11-20 [2] RSPM (R 4.4.0)
hdf5r 1.3.10 2024-03-02 [2] RSPM (R 4.4.0)
here * 1.0.1 2020-12-13 [2] RSPM (R 4.4.0)
highr 0.11 2024-05-26 [2] RSPM (R 4.4.0)
hms 1.1.3 2023-03-21 [2] RSPM (R 4.4.0)
htmltools 0.5.8.1 2024-04-04 [2] RSPM (R 4.4.0)
htmlwidgets 1.6.4 2023-12-06 [2] RSPM (R 4.4.0)
httpuv 1.6.15 2024-03-26 [2] RSPM (R 4.4.0)
httr 1.4.7 2023-08-15 [2] RSPM (R 4.4.0)
ica 1.0-3 2022-07-08 [2] RSPM (R 4.4.0)
igraph 2.0.3 2024-03-13 [2] RSPM (R 4.4.0)
IRanges 2.38.0 2024-04-30 [2] RSPM (R 4.4.0)
irlba 2.3.5.1 2022-10-03 [2] RSPM (R 4.4.0)
janitor 2.2.0.9000 2024-06-19 [2] Github (sfirke/janitor@80cd1eb)
JASPAR2020 0.99.10 2024-06-19 [2] RSPM (R 4.4.0)
jquerylib 0.1.4 2021-04-26 [2] RSPM (R 4.4.0)
jsonlite 1.8.8 2023-12-04 [2] RSPM (R 4.4.0)
KEGGREST 1.44.0 2024-04-30 [2] RSPM (R 4.4.0)
KernSmooth 2.23-24 2024-05-17 [2] RSPM (R 4.4.0)
knitr 1.47 2024-05-29 [2] RSPM (R 4.4.0)
labeling 0.4.3 2023-08-29 [2] RSPM (R 4.4.0)
later 1.3.2 2023-12-06 [2] RSPM (R 4.4.0)
lattice 0.22-6 2024-03-20 [2] RSPM (R 4.4.0)
lazyeval 0.2.2 2019-03-15 [2] RSPM (R 4.4.0)
leiden 0.4.3.1 2023-11-17 [2] RSPM (R 4.4.0)
lifecycle 1.0.4 2023-11-07 [2] RSPM (R 4.4.0)
listenv 0.9.1 2024-01-29 [2] RSPM (R 4.4.0)
lmtest 0.9-40 2022-03-21 [2] RSPM (R 4.4.0)
locfit 1.5-9.9 2024-03-01 [2] RSPM (R 4.4.0)
lubridate 1.9.3 2023-09-27 [2] RSPM (R 4.4.0)
magrittr * 2.0.3 2022-03-30 [2] RSPM (R 4.4.0)
MASS 7.3-61 2024-06-13 [2] RSPM (R 4.4.0)
Matrix 1.7-0 2024-04-26 [2] RSPM (R 4.4.0)
MatrixGenerics 1.16.0 2024-04-30 [2] RSPM (R 4.4.0)
matrixStats 1.3.0 2024-04-11 [2] RSPM (R 4.4.0)
memoise 2.0.1 2021-11-26 [2] RSPM (R 4.4.0)
mime 0.12 2021-09-28 [2] RSPM (R 4.4.0)
miniUI 0.1.1.1 2018-05-18 [2] RSPM (R 4.4.0)
munsell 0.5.1 2024-04-01 [2] RSPM (R 4.4.0)
nlme 3.1-165 2024-06-06 [2] RSPM (R 4.4.0)
paletteer 1.6.0 2024-01-21 [2] RSPM (R 4.4.0)
parallelly 1.37.1 2024-02-29 [2] RSPM (R 4.4.0)
patchwork * 1.2.0.9000 2024-06-19 [2] Github (thomasp85/patchwork@d943757)
pbapply 1.7-2 2023-06-27 [2] RSPM (R 4.4.0)
pillar 1.9.0 2023-03-22 [2] RSPM (R 4.4.0)
pkgconfig 2.0.3 2019-09-22 [2] RSPM (R 4.4.0)
plotly 4.10.4 2024-01-13 [2] RSPM (R 4.4.0)
plyr 1.8.9 2023-10-02 [2] RSPM (R 4.4.0)
png 0.1-8 2022-11-29 [2] RSPM (R 4.4.0)
polyclip 1.10-6 2023-09-27 [2] RSPM (R 4.4.0)
poweRlaw 0.80.0 2024-01-25 [2] RSPM (R 4.4.0)
pracma 2.4.4 2023-11-10 [2] RSPM (R 4.4.0)
presto 1.0.0 2024-06-19 [2] Github (immunogenomics/presto@7636b3d)
processx 3.8.4 2024-03-16 [2] RSPM (R 4.4.0)
progressr 0.14.0 2023-08-10 [2] RSPM (R 4.4.0)
promises 1.3.0 2024-04-05 [2] RSPM (R 4.4.0)
ProtGenerics 1.36.0 2024-04-30 [2] RSPM (R 4.4.0)
ps 1.7.6 2024-01-18 [2] RSPM (R 4.4.0)
purrr 1.0.2 2023-08-10 [2] RSPM (R 4.4.0)
pwalign 1.0.0 2024-04-30 [2] RSPM (R 4.4.0)
R.methodsS3 1.8.2 2022-06-13 [2] RSPM (R 4.4.0)
R.oo 1.26.0 2024-01-24 [2] RSPM (R 4.4.0)
R.utils 2.12.3 2023-11-18 [2] RSPM (R 4.4.0)
R6 2.5.1 2021-08-19 [2] RSPM (R 4.4.0)
RANN 2.6.1 2019-01-08 [2] RSPM (R 4.4.0)
rappdirs 0.3.3 2021-01-31 [2] RSPM (R 4.4.0)
RColorBrewer * 1.1-3 2022-04-03 [2] RSPM (R 4.4.0)
Rcpp 1.0.12 2024-01-09 [2] RSPM (R 4.4.0)
RcppAnnoy 0.0.22 2024-01-23 [2] RSPM (R 4.4.0)
RcppHNSW 0.6.0 2024-02-04 [2] RSPM (R 4.4.0)
RcppRoll 0.3.0 2018-06-05 [2] RSPM (R 4.4.0)
RCurl 1.98-1.14 2024-01-09 [2] RSPM (R 4.4.0)
readr * 2.1.5 2024-01-10 [2] RSPM (R 4.4.0)
rematch2 2.1.2 2020-05-01 [2] RSPM (R 4.4.0)
remotes 2.5.0 2024-03-17 [2] RSPM (R 4.4.0)
reshape2 1.4.4 2020-04-09 [2] RSPM (R 4.4.0)
restfulr 0.0.15 2022-06-16 [2] RSPM (R 4.4.0)
reticulate 1.37.0 2024-05-21 [2] RSPM (R 4.4.0)
rhdf5 2.48.0 2024-04-30 [2] RSPM (R 4.4.0)
rhdf5filters 1.16.0 2024-04-30 [2] RSPM (R 4.4.0)
Rhdf5lib 1.26.0 2024-04-30 [2] RSPM (R 4.4.0)
rjson 0.2.21 2022-01-09 [2] RSPM (R 4.4.0)
rlang 1.1.4 2024-06-04 [2] RSPM (R 4.4.0)
rmarkdown 2.27 2024-05-17 [2] RSPM (R 4.4.0)
ROCR 1.0-11 2020-05-02 [2] RSPM (R 4.4.0)
rprojroot 2.0.4 2023-11-05 [2] RSPM (R 4.4.0)
Rsamtools 2.20.0 2024-04-30 [2] RSPM (R 4.4.0)
RSpectra 0.16-1 2022-04-24 [2] RSPM (R 4.4.0)
RSQLite 2.3.7 2024-05-27 [2] RSPM (R 4.4.0)
rstudioapi 0.16.0 2024-03-24 [2] RSPM (R 4.4.0)
rsvd 1.0.5 2021-04-16 [2] RSPM (R 4.4.0)
rtracklayer 1.64.0 2024-04-30 [2] RSPM (R 4.4.0)
Rtsne 0.17 2023-12-07 [2] RSPM (R 4.4.0)
S4Arrays 1.4.1 2024-05-20 [2] RSPM (R 4.4.0)
S4Vectors 0.42.0 2024-04-30 [2] RSPM (R 4.4.0)
sass 0.4.9 2024-03-15 [2] RSPM (R 4.4.0)
scales 1.3.0 2023-11-28 [2] RSPM (R 4.4.0)
scattermore 1.2 2023-06-12 [2] RSPM (R 4.4.0)
scCustomize * 2.1.2 2024-06-19 [2] Github (samuel-marsh/scCustomize@fc7a282)
sctransform 0.4.1 2023-10-19 [2] RSPM (R 4.4.0)
seqLogo 1.70.0 2024-04-30 [2] RSPM (R 4.4.0)
sessioninfo 1.2.2 2021-12-06 [2] RSPM (R 4.4.0)
Seurat * 5.1.0 2024-06-19 [2] Github (satijalab/seurat@1549dcb)
SeuratData * 0.2.2.9001 2024-06-19 [2] Github (satijalab/seurat-data@4dc08e0)
SeuratDisk 0.0.0.9021 2024-06-19 [2] Github (mojaveazure/seurat-disk@877d4e1)
SeuratObject * 5.0.2 2024-06-19 [2] Github (satijalab/seurat-object@58bf437)
SeuratWrappers * 0.3.5 2024-06-19 [2] Github (satijalab/seurat-wrappers@8d46d6c)
shape 1.4.6.1 2024-02-23 [2] RSPM (R 4.4.0)
shiny 1.8.1.1 2024-04-02 [2] RSPM (R 4.4.0)
shinyBS * 0.61.1 2022-04-17 [2] RSPM (R 4.4.0)
shinydashboard 0.7.2 2021-09-30 [2] RSPM (R 4.4.0)
shinyjs 2.1.0 2021-12-23 [2] RSPM (R 4.4.0)
Signac 1.13.9003 2024-06-19 [2] Github (stuart-lab/signac@9910fcb)
snakecase 0.11.1 2023-08-27 [2] RSPM (R 4.4.0)
sp * 2.1-4 2024-04-30 [2] RSPM (R 4.4.0)
spam 2.10-0 2023-10-23 [2] RSPM (R 4.4.0)
SparseArray 1.4.8 2024-05-24 [2] RSPM (R 4.4.0)
spatstat.data 3.0-4 2024-01-15 [2] RSPM (R 4.4.0)
spatstat.explore 3.2-7 2024-03-21 [2] RSPM (R 4.4.0)
spatstat.geom 3.2-9 2024-02-28 [2] RSPM (R 4.4.0)
spatstat.random 3.2-3 2024-02-29 [2] RSPM (R 4.4.0)
spatstat.sparse 3.0-3 2023-10-24 [2] RSPM (R 4.4.0)
spatstat.utils 3.0-5 2024-06-17 [2] RSPM (R 4.4.0)
stringi 1.8.4 2024-05-06 [2] RSPM (R 4.4.0)
stringr * 1.5.1 2023-11-14 [2] RSPM (R 4.4.0)
SummarizedExperiment 1.34.0 2024-05-01 [2] RSPM (R 4.4.0)
survival 3.7-0 2024-06-05 [2] RSPM (R 4.4.0)
tensor 1.5 2012-05-05 [2] RSPM (R 4.4.0)
TFBSTools 1.42.0 2024-05-01 [2] RSPM (R 4.4.0)
TFMPvalue 0.0.9 2022-10-21 [2] RSPM (R 4.4.0)
tibble 3.2.1 2023-03-20 [2] RSPM (R 4.4.0)
tidyr 1.3.1 2024-01-24 [2] RSPM (R 4.4.0)
tidyselect 1.2.1 2024-03-11 [2] RSPM (R 4.4.0)
timechange 0.3.0 2024-01-18 [2] RSPM (R 4.4.0)
tzdb 0.4.0 2023-05-12 [2] RSPM (R 4.4.0)
UCSC.utils 1.0.0 2024-04-30 [2] RSPM (R 4.4.0)
utf8 1.2.4 2023-10-22 [2] RSPM (R 4.4.0)
uwot 0.2.2 2024-04-21 [2] RSPM (R 4.4.0)
vctrs 0.6.5 2023-12-01 [2] RSPM (R 4.4.0)
vipor 0.4.7 2023-12-18 [2] RSPM (R 4.4.0)
viridisLite 0.4.2 2023-05-02 [2] RSPM (R 4.4.0)
vroom 1.6.5 2023-12-05 [2] RSPM (R 4.4.0)
whisker 0.4.1 2022-12-05 [2] RSPM (R 4.4.0)
withr 3.0.0 2024-01-16 [2] RSPM (R 4.4.0)
workflowr * 1.7.1 2023-08-23 [2] RSPM (R 4.4.0)
xfun 0.45 2024-06-16 [2] RSPM (R 4.4.0)
XML 3.99-0.16.1 2024-01-22 [2] RSPM (R 4.4.0)
xtable 1.8-4 2019-04-21 [2] RSPM (R 4.4.0)
XVector 0.44.0 2024-04-30 [2] RSPM (R 4.4.0)
yaml 2.3.8 2023-12-11 [2] RSPM (R 4.4.0)
zlibbioc 1.50.0 2024-04-30 [2] RSPM (R 4.4.0)
zoo 1.8-12 2023-04-13 [2] RSPM (R 4.4.0)
[1] /home/etretiakov/R/x86_64-pc-linux-gnu-library/4.4
[2] /opt/R/4.4.0/lib/R/library
─ Python configuration ───────────────────────────────────────────────────────
python: /opt/python/3.8.8/bin/python
libpython: /opt/python/3.8.8/lib/libpython3.8.so
pythonhome: /opt/python/3.8.8:/opt/python/3.8.8
version: 3.8.8 | packaged by conda-forge | (default, Feb 20 2021, 16:22:27) [GCC 9.3.0]
numpy: /opt/python/3.8.8/lib/python3.8/site-packages/numpy
numpy_version: 1.23.5
leidenalg: /opt/python/3.8.8/lib/python3.8/site-packages/leidenalg
NOTE: Python version was forced by RETICULATE_PYTHON
──────────────────────────────────────────────────────────────────────────────
sessionInfo()
R version 4.4.0 (2024-04-24)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 22.04.4 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.20.so; LAPACK version 3.10.0
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[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] stats graphics grDevices utils datasets methods base
other attached packages:
[1] patchwork_1.2.0.9000 cowplot_1.1.3 ggplot2_3.5.1
[4] readr_2.1.5 stringr_1.5.1 magrittr_2.0.3
[7] dplyr_1.1.4 Azimuth_0.5.0 shinyBS_0.61.1
[10] SeuratWrappers_0.3.5 SeuratData_0.2.2.9001 scCustomize_2.1.2
[13] Seurat_5.1.0 SeuratObject_5.0.2 sp_2.1-4
[16] RColorBrewer_1.1-3 here_1.0.1 workflowr_1.7.1
loaded via a namespace (and not attached):
[1] IRanges_2.38.0 R.methodsS3_1.8.2
[3] vroom_1.6.5 poweRlaw_0.80.0
[5] goftest_1.2-3 DT_0.33
[7] Biostrings_2.72.1 vctrs_0.6.5
[9] spatstat.random_3.2-3 digest_0.6.35
[11] png_0.1-8 shape_1.4.6.1
[13] git2r_0.33.0 ggrepel_0.9.5.9999
[15] deldir_2.0-4 parallelly_1.37.1
[17] MASS_7.3-61 Signac_1.13.9003
[19] reshape2_1.4.4 httpuv_1.6.15
[21] BiocGenerics_0.50.0 withr_3.0.0
[23] ggrastr_1.0.2 xfun_0.45
[25] survival_3.7-0 EnsDb.Hsapiens.v86_2.99.0
[27] memoise_2.0.1 ggbeeswarm_0.7.2
[29] janitor_2.2.0.9000 ggsci_3.2.0
[31] zoo_1.8-12 GlobalOptions_0.1.2
[33] gtools_3.9.5 pbapply_1.7-2
[35] R.oo_1.26.0 rematch2_2.1.2
[37] KEGGREST_1.44.0 promises_1.3.0
[39] httr_1.4.7 restfulr_0.0.15
[41] globals_0.16.3 fitdistrplus_1.1-11
[43] rhdf5filters_1.16.0 ps_1.7.6
[45] rhdf5_2.48.0 rstudioapi_0.16.0
[47] UCSC.utils_1.0.0 miniUI_0.1.1.1
[49] generics_0.1.3 processx_3.8.4
[51] curl_5.2.1 S4Vectors_0.42.0
[53] zlibbioc_1.50.0 polyclip_1.10-6
[55] GenomeInfoDbData_1.2.12 SparseArray_1.4.8
[57] xtable_1.8-4 pracma_2.4.4
[59] evaluate_0.24.0 S4Arrays_1.4.1
[61] hms_1.1.3 GenomicRanges_1.56.1
[63] irlba_2.3.5.1 colorspace_2.1-0
[65] hdf5r_1.3.10 ROCR_1.0-11
[67] reticulate_1.37.0 spatstat.data_3.0-4
[69] lmtest_0.9-40 snakecase_0.11.1
[71] later_1.3.2 lattice_0.22-6
[73] spatstat.geom_3.2-9 future.apply_1.11.2
[75] getPass_0.2-4 scattermore_1.2
[77] XML_3.99-0.16.1 matrixStats_1.3.0
[79] RcppAnnoy_0.0.22 pillar_1.9.0
[81] nlme_3.1-165 pwalign_1.0.0
[83] caTools_1.18.2 compiler_4.4.0
[85] RSpectra_0.16-1 stringi_1.8.4
[87] tensor_1.5 SummarizedExperiment_1.34.0
[89] lubridate_1.9.3 GenomicAlignments_1.40.0
[91] plyr_1.8.9 crayon_1.5.2
[93] abind_1.4-5 BiocIO_1.14.0
[95] googledrive_2.1.1 locfit_1.5-9.9
[97] bit_4.0.5 fastmatch_1.1-4
[99] whisker_0.4.1 codetools_0.2-20
[101] bslib_0.7.0 paletteer_1.6.0
[103] plotly_4.10.4 mime_0.12
[105] splines_4.4.0 circlize_0.4.16
[107] Rcpp_1.0.12 fastDummies_1.7.3
[109] cellranger_1.1.0 knitr_1.47
[111] blob_1.2.4 utf8_1.2.4
[113] seqLogo_1.70.0 AnnotationFilter_1.28.0
[115] fs_1.6.4 listenv_0.9.1
[117] tibble_3.2.1 Matrix_1.7-0
[119] callr_3.7.6 tzdb_0.4.0
[121] pkgconfig_2.0.3 tools_4.4.0
[123] cachem_1.1.0 RSQLite_2.3.7
[125] viridisLite_0.4.2 DBI_1.2.3
[127] fastmap_1.2.0 rmarkdown_2.27
[129] scales_1.3.0 grid_4.4.0
[131] ica_1.0-3 shinydashboard_0.7.2
[133] Rsamtools_2.20.0 sass_0.4.9
[135] ggprism_1.0.5 BiocManager_1.30.23
[137] dotCall64_1.1-1 RANN_2.6.1
[139] farver_2.1.2 yaml_2.3.8
[141] MatrixGenerics_1.16.0 rtracklayer_1.64.0
[143] cli_3.6.2 purrr_1.0.2
[145] stats4_4.4.0 leiden_0.4.3.1
[147] lifecycle_1.0.4 uwot_0.2.2
[149] Biobase_2.64.0 sessioninfo_1.2.2
[151] presto_1.0.0 BSgenome.Hsapiens.UCSC.hg38_1.4.5
[153] BiocParallel_1.38.0 annotate_1.82.0
[155] timechange_0.3.0 gtable_0.3.5
[157] rjson_0.2.21 ggridges_0.5.6
[159] progressr_0.14.0 parallel_4.4.0
[161] jsonlite_1.8.8 RcppHNSW_0.6.0
[163] TFBSTools_1.42.0 bitops_1.0-7
[165] bit64_4.0.5 Rtsne_0.17
[167] spatstat.utils_3.0-5 CNEr_1.40.0
[169] highr_0.11 jquerylib_0.1.4
[171] shinyjs_2.1.0 SeuratDisk_0.0.0.9021
[173] R.utils_2.12.3 lazyeval_0.2.2
[175] shiny_1.8.1.1 htmltools_0.5.8.1
[177] GO.db_3.19.1 sctransform_0.4.1
[179] rappdirs_0.3.3 ensembldb_2.28.0
[181] glue_1.7.0 TFMPvalue_0.0.9
[183] spam_2.10-0 googlesheets4_1.1.1
[185] XVector_0.44.0 RCurl_1.98-1.14
[187] rprojroot_2.0.4 BSgenome_1.72.0
[189] gridExtra_2.3 JASPAR2020_0.99.10
[191] igraph_2.0.3 R6_2.5.1
[193] DESeq2_1.44.0 tidyr_1.3.1
[195] labeling_0.4.3 forcats_1.0.0
[197] RcppRoll_0.3.0 GenomicFeatures_1.56.0
[199] cluster_2.1.6 Rhdf5lib_1.26.0
[201] gargle_1.5.2 GenomeInfoDb_1.40.1
[203] DirichletMultinomial_1.46.0 DelayedArray_0.30.1
[205] tidyselect_1.2.1 vipor_0.4.7
[207] ProtGenerics_1.36.0 AnnotationDbi_1.66.0
[209] future_1.33.2 rsvd_1.0.5
[211] munsell_0.5.1 KernSmooth_2.23-24
[213] data.table_1.15.4 htmlwidgets_1.6.4
[215] rlang_1.1.4 spatstat.sparse_3.0-3
[217] spatstat.explore_3.2-7 remotes_2.5.0
[219] fansi_1.0.6 beeswarm_0.4.0