Last updated: 2024-07-26
Checks: 6 1
Knit directory: paed-airway-allTissues/
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.
The R Markdown file has unstaged changes. To know which version of
the R Markdown file created these results, you’ll want to first commit
it to the Git repo. If you’re still working on the analysis, you can
ignore this warning. When you’re finished, you can run
wflow_publish to commit the R Markdown file and build the
HTML.
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(20230811) 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 cedb23d. 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: .DS_Store
Ignored: .RData
Ignored: .Rhistory
Ignored: .Rproj.user/
Ignored: analysis/.DS_Store
Ignored: data/.DS_Store
Ignored: data/RDS/
Ignored: output/.DS_Store
Ignored: output/CSV/.DS_Store
Ignored: output/G000231_Neeland_batch1/
Ignored: output/G000231_Neeland_batch2_1/
Ignored: output/G000231_Neeland_batch2_2/
Ignored: output/G000231_Neeland_batch3/
Ignored: output/G000231_Neeland_batch4/
Ignored: output/G000231_Neeland_batch5/
Ignored: output/G000231_Neeland_batch9_1/
Ignored: output/RDS/
Ignored: output/plots/
Untracked files:
Untracked: VennDiagram.2024-07-24_11-48-08.297746.log
Untracked: VennDiagram.2024-07-24_12-25-12.854839.log
Untracked: VennDiagram.2024-07-24_12-25-22.005094.log
Untracked: VennDiagram.2024-07-24_12-29-34.757841.log
Untracked: analysis/03_Batch_Integration.Rmd
Untracked: analysis/Age_proportions.Rmd
Untracked: analysis/Age_proportions_AllBatches.Rmd
Untracked: analysis/Batch_Integration_&_Downstream_analysis.Rmd
Untracked: analysis/Batch_correction_&_Downstream.Rmd
Untracked: analysis/Cell_cycle_regression.Rmd
Untracked: analysis/Preprocessing_Batch1_Nasal_brushings.Rmd
Untracked: analysis/Preprocessing_Batch2_Tonsils.Rmd
Untracked: analysis/Preprocessing_Batch3_Adenoids.Rmd
Untracked: analysis/Preprocessing_Batch4_Bronchial_brushings.Rmd
Untracked: analysis/Preprocessing_Batch5_Nasal_brushings.Rmd
Untracked: analysis/Preprocessing_Batch6_BAL.Rmd
Untracked: analysis/Preprocessing_Batch7_Bronchial_brushings.Rmd
Untracked: analysis/Preprocessing_Batch8_Adenoids.Rmd
Untracked: analysis/Preprocessing_Batch9_Tonsils.Rmd
Untracked: analysis/VennDiagram.2024-07-24_11-54-23.569848.log
Untracked: analysis/VennDiagram.2024-07-24_11-55-06.582353.log
Untracked: analysis/VennDiagram.2024-07-24_12-28-47.017253.log
Untracked: analysis/VennDiagram.2024-07-24_12-33-05.913419.log
Untracked: analysis/VennDiagram.2024-07-24_13-42-31.593316.log
Untracked: analysis/cell_cycle_regression.R
Untracked: analysis/test.Rmd
Untracked: analysis/testing_age_all.Rmd
Untracked: data/Cell_labels_Mel/
Untracked: data/Cell_labels_Mel_v2/
Untracked: data/Hs.c2.cp.reactome.v7.1.entrez.rds
Untracked: data/Raw_feature_bc_matrix/
Untracked: data/celltypes_Mel_GD_v3.xlsx
Untracked: data/celltypes_Mel_GD_v4_no_dups.xlsx
Untracked: data/celltypes_Mel_modified.xlsx
Untracked: data/celltypes_Mel_v2.csv
Untracked: data/celltypes_Mel_v2.xlsx
Untracked: data/celltypes_Mel_v2_MN.xlsx
Untracked: data/celltypes_for_mel_MN.xlsx
Untracked: data/earlyAIR_sample_sheets_combined.xlsx
Untracked: output/CSV/Bronchial_brushings_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/
Untracked: stacked_barplot.png
Untracked: stacked_barplot_donor_id.png
Unstaged changes:
Deleted: 02_QC_exploratoryPlots.Rmd
Deleted: 02_QC_exploratoryPlots.html
Modified: analysis/00_AllBatches_overview.Rmd
Modified: analysis/01_QC_emptyDrops.Rmd
Modified: analysis/02_QC_exploratoryPlots.Rmd
Modified: analysis/Age_modeling.Rmd
Modified: analysis/AllBatches_QCExploratory.Rmd
Modified: analysis/BAL.Rmd
Modified: analysis/Bronchial_brushings.Rmd
Modified: analysis/Nasal_brushings.Rmd
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c0.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c1.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c10.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c11.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c12.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c13.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c14.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c15.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c16.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c17.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c2.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c3.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c4.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c5.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c6.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c7.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c8.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c9.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c0.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c1.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c10.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c11.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c12.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c13.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c14.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c15.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c16.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c17.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c2.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c3.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c4.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c5.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c6.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c7.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c8.csv
Modified: output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/up-cluster-limma-c9.csv
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/Nasal_brushings.Rmd) and
HTML (docs/Nasal_brushings.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 |
|---|---|---|---|---|
| Rmd | c20f60f | Gunjan Dixit | 2024-07-08 | Updated marker gene dot plots |
| html | c20f60f | Gunjan Dixit | 2024-07-08 | Updated marker gene dot plots |
| Rmd | 77c742e | Gunjan Dixit | 2024-06-26 | Updated RMarkdown files of all Tissues |
| html | 77c742e | Gunjan Dixit | 2024-06-26 | Updated RMarkdown files of all Tissues |
| Rmd | 4fa7db5 | Gunjan Dixit | 2024-06-13 | Updated Nasal_brushing |
| html | 4fa7db5 | Gunjan Dixit | 2024-06-13 | Updated Nasal_brushing |
| Rmd | db794c0 | Gunjan Dixit | 2024-06-13 | Updated Nasal_brushing.Rmd |
| html | db794c0 | Gunjan Dixit | 2024-06-13 | Updated Nasal_brushing.Rmd |
| Rmd | e0e83af | Gunjan Dixit | 2024-06-04 | Updated reclustering |
| html | e0e83af | Gunjan Dixit | 2024-06-04 | Updated reclustering |
| html | fa7b973 | Gunjan Dixit | 2024-05-01 | Modified/Annotated RMarkdown files |
| Rmd | 320ccbd | Gunjan Dixit | 2024-05-01 | Modified/Annotated RMarkdown files |
| html | 320ccbd | Gunjan Dixit | 2024-05-01 | Modified/Annotated RMarkdown files |
| Rmd | 9492583 | Gunjan Dixit | 2024-04-26 | Added new analysis |
| html | 9492583 | Gunjan Dixit | 2024-04-26 | Added new analysis |
This Rmarkdown file loads and analyzes the batch-integrated/merged
Seurat object for Nasal Brushings (Batch1 and Batch5).
It performs clustering at various resolutions ranging from 0-1, followed
by visualization of identified clusters and Broad Level 3 cell labels on
UMAP. Next, the FindAllMarkers function is used to perform
marker gene analysis to identify marker genes for each cluster. The top
marker gene is visualized using FeaturePlot,
ViolinPlot and Heatmap. The identified marker
genes are stored in CSV format for each cluster at the optimum
resolution identified using clustree function.
suppressPackageStartupMessages({
library(BiocStyle)
library(tidyverse)
library(here)
library(glue)
library(dplyr)
library(Seurat)
library(clustree)
library(kableExtra)
library(RColorBrewer)
library(data.table)
library(ggplot2)
library(patchwork)
library(limma)
library(edgeR)
library(speckle)
library(AnnotationDbi)
library(org.Hs.eg.db)
library(readxl)
})
Load merged object (batch corrected/integrated) for the tissue.
tissue <- "Nasal_brushings"
out <- here("output/RDS/AllBatches_Harmony_SEUs/G000231_Neeland_Nasal_brushings_batchCorrection.Harmony.clusters.SEU.rds")
merged_obj <- readRDS(out)
merged_obj
An object of class Seurat
17973 features across 74812 samples within 1 assay
Active assay: RNA (17973 features, 2000 variable features)
5 layers present: counts.G000231_batch1, counts.G000231_batch5, scale.data, data.G000231_batch1, data.G000231_batch5
4 dimensional reductions calculated: pca, umap.unintegrated, harmony, umap.harmony
Clustering is done on the “harmony” or batch integrated reduction at resolutions ranging from 0-1.
out1 <- here("output",
"RDS", "AllBatches_Clustering_SEUs",
paste0("G000231_Neeland_",tissue,".Clusters.SEU.rds"))
#dir.create(out1)
resolutions <- seq(0.1, 1, by = 0.1)
if (!file.exists(out1)) {
merged_obj <- FindNeighbors(merged_obj, reduction = "harmony", dims = 1:30)
merged_obj <- FindClusters(merged_obj, resolution = seq(0.1, 1, by = 0.1), algorithm = 3)
saveRDS(merged_obj, file = out1)
} else {
merged_obj <- readRDS(out1)
}
The clustree function is used to visualize the
clustering at different resolutions to identify the most optimum
resolution.
clustree(merged_obj, prefix = "RNA_snn_res.")

| Version | Author | Date |
|---|---|---|
| 9492583 | Gunjan Dixit | 2024-04-26 |
Based on the clustering tree, we chose an intermediate/optimum resolution of 0.4 where the clustering results are the most stable, with the least amount of shuffling cells.
opt_res <- "RNA_snn_res.0.4"
n <- nlevels(merged_obj$RNA_snn_res.0.4)
merged_obj$RNA_snn_res.0.4 <- factor(merged_obj$RNA_snn_res.0.4, levels = seq(0,n-1))
merged_obj$seurat_clusters <- NULL
merged_obj$cluster <- merged_obj$RNA_snn_res.0.4
Idents(merged_obj) <- merged_obj$cluster
Defining colours for each cell-type to be consistent with other age-related/cell type composition plots.
my_colors <- c(
"B cells" = "steelblue",
"CD4 T cells" = "brown",
"Double negative T cells" = "gold",
"CD8 T cells" = "lightgreen",
"Pre B/T cells" = "orchid",
"Innate lymphoid cells" = "tan",
"Natural Killer cells" = "blueviolet",
"Macrophages" = "green4",
"Cycling T cells" = "turquoise",
"Dendritic cells" = "grey80",
"Gamma delta T cells" = "mediumvioletred",
"Epithelial lineage" = "darkorange",
"Granulocytes" = "olivedrab",
"Fibroblast lineage" = "lavender",
"None" = "white",
"Monocytes" = "peachpuff",
"Endothelial lineage" = "cadetblue",
"SMG duct" = "lightpink",
"Neuroendocrine" = "skyblue",
"Doublet query/Other" = "#d62728"
)
UMAP displaying clusters at opt_res resolution and Broad
cell Labels Level 3.
p1 <- DimPlot(merged_obj, reduction = "umap.harmony", raster = FALSE ,repel = TRUE, label = TRUE,label.size = 3.5, group.by = opt_res) + NoLegend()
p2 <- DimPlot(merged_obj, reduction = "umap.harmony", raster = FALSE, repel = TRUE, label = TRUE, label.size = 3.5, group.by = "Broad_cell_label_3") +
scale_colour_manual(values = my_colors) +
ggtitle(paste0(tissue, ": Batch Corrected UMAP"))
p1 / p2

out1 <- here("output",
"RDS", "AllBatches_Clustering_SEUs",
paste0("G000231_Neeland_",tissue,".Clusters.SEU.rds"))
#dir.create(out1)
if (!file.exists(out1)) {
saveRDS(merged_obj, file = out1)
}
merged_obj <- JoinLayers(merged_obj)
paed.markers <- FindAllMarkers(merged_obj, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)
Extracting top 5 genes per cluster for visualization. The ‘top5’ contains the top 5 genes with the highest weighted average avg_log2FC within each cluster and the ‘best.wilcox.gene.per.cluster’ contains the single best gene with the highest weighted average avg_log2FC for each cluster.
paed.markers %>%
group_by(cluster) %>% unique() %>%
top_n(n = 5, wt = avg_log2FC) -> top5
paed.markers %>%
group_by(cluster) %>%
slice_head(n=1) %>%
pull(gene) -> best.wilcox.gene.per.cluster
best.wilcox.gene.per.cluster
[1] "CD3D" "CD79A" "EPAS1" "ALPL" "TMEM190" "NKG7"
[7] "C20orf85" "SPI1" "CXCL10" "FOSB" "CDC20B" "CSF3R"
[13] "CXCL8" "FRMPD2" "TK1" "CD79B" "LMNB1" "HBB"
[19] "CPA3" "FOXI1" "LILRA4" "MLANA" "CSF3R" "BEST4"
This heatmap depicts the expression of top five genes in each cluster.
DoHeatmap(merged_obj, features = top5$gene) + NoLegend()

| Version | Author | Date |
|---|---|---|
| 320ccbd | Gunjan Dixit | 2024-05-01 |
Violin plot shows the expression of top marker gene per cluster.
VlnPlot(merged_obj, features=best.wilcox.gene.per.cluster, ncol = 2, raster = FALSE, pt.size = FALSE)

| Version | Author | Date |
|---|---|---|
| 320ccbd | Gunjan Dixit | 2024-05-01 |
Violin plot shows the expression of top marker gene per cluster and compares its expression in both batches.
plots <- VlnPlot(merged_obj, features = best.wilcox.gene.per.cluster, split.by = "batch_name", group.by = "Broad_cell_label_3",
pt.size = 0, combine = FALSE, raster = FALSE, split.plot = TRUE)
The default behaviour of split.by has changed.
Separate violin plots are now plotted side-by-side.
To restore the old behaviour of a single split violin,
set split.plot = TRUE.
This message will be shown once per session.
wrap_plots(plots = plots, ncol = 1)

| Version | Author | Date |
|---|---|---|
| 320ccbd | Gunjan Dixit | 2024-05-01 |
Feature plot shows the expression of top marker genes per cluster.
FeaturePlot(merged_obj,features=best.wilcox.gene.per.cluster, reduction = 'umap.harmony', raster = FALSE, ncol = 2)

| Version | Author | Date |
|---|---|---|
| 320ccbd | Gunjan Dixit | 2024-05-01 |
This section extracts marker genes for each cluster and save them as a CSV file.
out_markers <- here("output",
"CSV",
paste(tissue,"_Marker_gene_clusters.",opt_res, sep = ""))
dir.create(out_markers, recursive = TRUE, showWarnings = FALSE)
for (cl in unique(paed.markers$cluster)) {
cluster_data <- paed.markers %>% dplyr::filter(cluster == cl)
file_name <- here(out_markers, paste0("G000231_Neeland_",tissue, "_cluster_", cl, ".csv"))
write.csv(cluster_data, file = file_name)
}
cell_labels <- readxl::read_excel(here("data/Cell_labels_Mel/earlyAIR_nasal_brushing_annotations_02.05.24.xlsx"))
new_cluster_names <- cell_labels %>%
dplyr::select(cluster, annotation) %>%
deframe()
merged_obj <- RenameIdents(merged_obj, new_cluster_names)
merged_obj@meta.data$cell_labels <- Idents(merged_obj)
p3 <- DimPlot(merged_obj, reduction = "umap.harmony", raster = FALSE, repel = TRUE, label = TRUE, label.size = 3.5) + ggtitle(paste0(tissue, ": UMAP with Updated cell types"))
p3

| Version | Author | Date |
|---|---|---|
| e0e83af | Gunjan Dixit | 2024-06-04 |
merged_obj@meta.data %>%
ggplot(aes(x = cell_labels, fill = cell_labels)) +
geom_bar() +
geom_text(aes(label = ..count..), stat = "count",
vjust = -0.5, colour = "black", size = 2) +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) +
NoLegend() + ggtitle(paste0(tissue, " : Counts per cell-type"))

| Version | Author | Date |
|---|---|---|
| e0e83af | Gunjan Dixit | 2024-06-04 |
The marker genes for this reclustering can be found here-
idx <- which(Idents(merged_obj) %in% "goblet/club/basal cells")
paed_sub <- merged_obj[,idx]
mito_genes <- grep("^MT-", rownames(paed_sub), value = TRUE)
paed_sub <- subset(paed_sub, features = setdiff(rownames(paed_sub), mito_genes))
paed_sub
An object of class Seurat
17962 features across 19899 samples within 1 assay
Active assay: RNA (17962 features, 2000 variable features)
3 layers present: data, counts, scale.data
4 dimensional reductions calculated: pca, umap.unintegrated, harmony, umap.harmony
paed_sub <- paed_sub %>%
NormalizeData() %>%
FindVariableFeatures() %>%
ScaleData() %>%
RunPCA()
paed_sub <- RunUMAP(paed_sub, dims = 1:30, reduction = "pca", reduction.name = "umap.new")
meta_data_columns <- colnames(paed_sub@meta.data)
columns_to_remove <- grep("^RNA_snn_res", meta_data_columns, value = TRUE)
paed_sub@meta.data <- paed_sub@meta.data[, !(colnames(paed_sub@meta.data) %in% columns_to_remove)]
resolutions <- seq(0.1, 1, by = 0.1)
paed_sub <- FindNeighbors(paed_sub, reduction = "pca", dims = 1:30)
paed_sub <- FindClusters(paed_sub, resolution = resolutions, algorithm = 3)
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 19899
Number of edges: 690634
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.9405
Number of communities: 6
Elapsed time: 12 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 19899
Number of edges: 690634
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.9184
Number of communities: 9
Elapsed time: 10 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 19899
Number of edges: 690634
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.9058
Number of communities: 12
Elapsed time: 9 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 19899
Number of edges: 690634
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.8963
Number of communities: 16
Elapsed time: 9 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 19899
Number of edges: 690634
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.8878
Number of communities: 16
Elapsed time: 9 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 19899
Number of edges: 690634
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.8795
Number of communities: 18
Elapsed time: 9 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 19899
Number of edges: 690634
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.8723
Number of communities: 21
Elapsed time: 8 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 19899
Number of edges: 690634
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.8664
Number of communities: 23
Elapsed time: 8 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 19899
Number of edges: 690634
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.8605
Number of communities: 24
Elapsed time: 8 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 19899
Number of edges: 690634
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.8550
Number of communities: 25
Elapsed time: 8 seconds
DimHeatmap(paed_sub, dims = 1:10, cells = 500, balanced = TRUE)

| Version | Author | Date |
|---|---|---|
| e0e83af | Gunjan Dixit | 2024-06-04 |
clustree(paed_sub, prefix = "RNA_snn_res.")

| Version | Author | Date |
|---|---|---|
| db794c0 | Gunjan Dixit | 2024-06-13 |
opt_res <- "RNA_snn_res.0.1"
n <- nlevels(paed_sub$RNA_snn_res.0.1)
paed_sub$RNA_snn_res.0.1 <- factor(paed_sub$RNA_snn_res.0.1, levels = seq(0,n-1))
paed_sub$seurat_clusters <- NULL
Idents(paed_sub) <- paed_sub$RNA_snn_res.0.1
DimPlot(paed_sub, reduction = "umap.new", group.by = opt_res, label = TRUE, label.size = 4.5, repel = TRUE, raster = FALSE )

paed_sub.markers <- FindAllMarkers(paed_sub, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)
Calculating cluster 0
Calculating cluster 1
Calculating cluster 2
Calculating cluster 3
Calculating cluster 4
Calculating cluster 5
paed_sub.markers %>%
group_by(cluster) %>% unique() %>%
top_n(n = 5, wt = avg_log2FC) -> top5
paed_sub.markers %>%
group_by(cluster) %>%
slice_head(n=1) %>%
pull(gene) -> best.wilcox.gene.per.cluster
best.wilcox.gene.per.cluster
[1] "ADAM28" "SPNS2" "FOSB" "TTC9" "SLC34A2" "TMPRSS11E"
FeaturePlot(paed_sub,features=best.wilcox.gene.per.cluster, reduction = 'umap.new', raster = FALSE, label = T, ncol = 2)

| Version | Author | Date |
|---|---|---|
| db794c0 | Gunjan Dixit | 2024-06-13 |
out_markers <- here("output",
"CSV",
paste(tissue,"_Marker_genes_Reclustered_Basal_population.",opt_res, sep = ""))
dir.create(out_markers, recursive = TRUE, showWarnings = FALSE)
for (cl in unique(paed_sub.markers$cluster)) {
cluster_data <- paed_sub.markers %>% dplyr::filter(cluster == cl)
file_name <- here(out_markers, paste0("G000231_Neeland_",tissue, "_cluster_", cl, ".csv"))
write.csv(cluster_data, file = file_name)
}
LYPD2 and PSCA are specific to Nasal. BPIFB1, C16orf89 and NPDC1 are specific to subsegmental.
known_markers <- c("FXYD3","EPCAM", "ELF3", "IGFBP2", "SERPINF1", "TSPAN1", "GPX8", "ALDH1A3", "CEACAM5", "LYPD2", "PSCA", "BPIFB1", "C16orf89", "NPDC1")
FeaturePlot(paed_sub,features=known_markers, reduction = 'umap.new', raster = FALSE, label = T, ncol = 3)

club_markers <- c("SERPINB3", "TCN1", "ASRGL1")
FeaturePlot(paed_sub,features=club_markers, reduction = 'umap.new', raster = FALSE, label = T, ncol = 2)

| Version | Author | Date |
|---|---|---|
| db794c0 | Gunjan Dixit | 2024-06-13 |
Note: These markers are only specific to Basal
basal_markers <- c("KRT15", "KRT17", "TP63")
FeaturePlot(paed_sub,features=basal_markers, reduction = 'umap.new', raster = FALSE, label = T, ncol = 2)

## Finest level
DimPlot(paed_sub, reduction = "umap.new", group.by = "predicted.ann_finest_level", raster = FALSE, repel = TRUE, label = TRUE, label.size = 3.5)

df_table <- as.data.frame(table(paed_sub$RNA_snn_res.0.1, paed_sub$predicted.ann_finest_level))
ggplot(df_table, aes(Var1, Freq, fill = Var2)) +
geom_bar(stat = "identity") +
labs(x = "RNA_snn_res.0.1", y = "Count", fill = "predicted ann_finest_level") +
theme_minimal() +
ggtitle("Stacked Bar Plot of basal/club/goblet (res=0.1) and predicted.ann_finest_level")

| Version | Author | Date |
|---|---|---|
| db794c0 | Gunjan Dixit | 2024-06-13 |
## Predicted_Level 5
DimPlot(paed_sub, reduction = "umap.new", group.by = "predicted.ann_level_5", raster = FALSE, repel = TRUE, label = TRUE, label.size = 3.5)

| Version | Author | Date |
|---|---|---|
| db794c0 | Gunjan Dixit | 2024-06-13 |
df_table <- as.data.frame(table(paed_sub$RNA_snn_res.0.1, paed_sub$predicted.ann_level_5))
ggplot(df_table, aes(Var1, Freq, fill = Var2)) +
geom_bar(stat = "identity") +
labs(x = "RNA_snn_res.0.1", y = "Count", fill = "predicted ann_level_5") +
theme_minimal() +
ggtitle("Stacked Bar Plot of basal/club/goblet (res=0.1) and predicted.ann_level5")

| Version | Author | Date |
|---|---|---|
| db794c0 | Gunjan Dixit | 2024-06-13 |
This includes CD4 T cell, CD8 T cell, NK cell, NK-T cell, proliferating or cycling T/NK cell.
The marker genes for this reclustering can be found here-
idx <- which(Idents(merged_obj) %in% c("CD4 T cells", "CD8 T cells", "NK-T cells", "proliferating T/NK"))
paed_sub <- merged_obj[,idx]
mito_genes <- grep("^MT-", rownames(paed_sub), value = TRUE)
paed_sub <- subset(paed_sub, features = setdiff(rownames(paed_sub), mito_genes))
paed_sub
An object of class Seurat
17962 features across 21491 samples within 1 assay
Active assay: RNA (17962 features, 2000 variable features)
3 layers present: data, counts, scale.data
4 dimensional reductions calculated: pca, umap.unintegrated, harmony, umap.harmony
paed_sub <- paed_sub %>%
NormalizeData() %>%
FindVariableFeatures() %>%
ScaleData() %>%
RunPCA()
paed_sub <- RunUMAP(paed_sub, dims = 1:30, reduction = "pca", reduction.name = "umap.new")
meta_data_columns <- colnames(paed_sub@meta.data)
columns_to_remove <- grep("^RNA_snn_res", meta_data_columns, value = TRUE)
paed_sub@meta.data <- paed_sub@meta.data[, !(colnames(paed_sub@meta.data) %in% columns_to_remove)]
resolutions <- seq(0.1, 1, by = 0.1)
paed_sub <- FindNeighbors(paed_sub, reduction = "pca", dims = 1:30)
paed_sub <- FindClusters(paed_sub, resolution = resolutions, algorithm = 3)
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 21491
Number of edges: 703338
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.9444
Number of communities: 6
Elapsed time: 16 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 21491
Number of edges: 703338
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.9168
Number of communities: 8
Elapsed time: 13 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 21491
Number of edges: 703338
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.9021
Number of communities: 11
Elapsed time: 12 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 21491
Number of edges: 703338
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.8894
Number of communities: 13
Elapsed time: 11 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 21491
Number of edges: 703338
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.8772
Number of communities: 14
Elapsed time: 11 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 21491
Number of edges: 703338
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.8676
Number of communities: 17
Elapsed time: 11 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 21491
Number of edges: 703338
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.8589
Number of communities: 17
Elapsed time: 10 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 21491
Number of edges: 703338
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.8509
Number of communities: 19
Elapsed time: 10 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 21491
Number of edges: 703338
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.8430
Number of communities: 20
Elapsed time: 10 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 21491
Number of edges: 703338
Running smart local moving algorithm...
Maximum modularity in 10 random starts: 0.8360
Number of communities: 21
Elapsed time: 10 seconds
DimHeatmap(paed_sub, dims = 1:10, cells = 500, balanced = TRUE)

clustree(paed_sub, prefix = "RNA_snn_res.")

opt_res <- "RNA_snn_res.0.4"
n <- nlevels(paed_sub$RNA_snn_res.0.4)
paed_sub$RNA_snn_res.0.4 <- factor(paed_sub$RNA_snn_res.0.4, levels = seq(0,n-1))
paed_sub$seurat_clusters <- NULL
Idents(paed_sub) <- paed_sub$RNA_snn_res.0.4
DimPlot(paed_sub, reduction = "umap.new", group.by = "RNA_snn_res.0.4", label = TRUE, label.size = 4.5, repel = TRUE, raster = FALSE )

paed_sub.markers <- FindAllMarkers(paed_sub, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)
Calculating cluster 0
Calculating cluster 1
Calculating cluster 2
Calculating cluster 3
Calculating cluster 4
Calculating cluster 5
Calculating cluster 6
Calculating cluster 7
Calculating cluster 8
Calculating cluster 9
Calculating cluster 10
Calculating cluster 11
paed_sub.markers %>%
group_by(cluster) %>% unique() %>%
top_n(n = 5, wt = avg_log2FC) -> top5
paed_sub.markers %>%
group_by(cluster) %>%
slice_head(n=1) %>%
pull(gene) -> best.wilcox.gene.per.cluster
best.wilcox.gene.per.cluster
[1] "CD8A" "CSF1" "CD4" "TCF7" "IFI6" "MAF" "NR4A2" "ITGAX" "TYMS"
[10] "GZMK" "KLF2" "CD79A"
FeaturePlot(paed_sub,features=best.wilcox.gene.per.cluster, reduction = 'umap.new', raster = FALSE, label = T, ncol = 3)

| Version | Author | Date |
|---|---|---|
| c20f60f | Gunjan Dixit | 2024-07-08 |
Top 10 marker genes from Seurat
## Seurat top markers
top10 <- paed_sub.markers %>%
group_by(cluster) %>%
top_n(n = 10, wt = avg_log2FC) %>%
ungroup() %>%
distinct(gene, .keep_all = TRUE) %>%
arrange(cluster, desc(avg_log2FC))
cluster_colors <- paletteer::paletteer_d("pals::glasbey")[factor(top10$cluster)]
DotPlot(paed_sub,
features = unique(top10$gene),
group.by = opt_res,
cols = c("azure1", "blueviolet"),
dot.scale = 3, assay = "RNA") +
RotatedAxis() +
FontSize(y.text = 8, x.text = 12) +
labs(y = element_blank(), x = element_blank()) +
coord_flip() +
theme(axis.text.y = element_text(color = cluster_colors)) +
ggtitle("Top 10 marker genes per cluster (Seurat)")
Warning: Vectorized input to `element_text()` is not officially supported.
ℹ Results may be unexpected or may change in future versions of ggplot2.

out_markers <- here("output",
"CSV",
paste(tissue,"_Marker_genes_Reclustered_Tcell_population.",opt_res, sep = ""))
dir.create(out_markers, recursive = TRUE, showWarnings = FALSE)
for (cl in unique(paed_sub.markers$cluster)) {
cluster_data <- paed_sub.markers %>% dplyr::filter(cluster == cl)
file_name <- here(out_markers, paste0("G000231_Neeland_",tissue, "_cluster_", cl, ".csv"))
write.csv(cluster_data, file = file_name)
}
cell_labels <- readxl::read_excel(here("data/Cell_labels_Mel_v2/earlyAIR_NB_BB_BAL_T-NK_annotations_16.07.24.xlsx"), sheet = "NB")
new_cluster_names <- cell_labels %>%
dplyr::select(cluster, annotation) %>%
deframe()
paed_sub <- RenameIdents(paed_sub, new_cluster_names)
paed_sub@meta.data$cell_labels_v2 <- Idents(paed_sub)
DimPlot(paed_sub, reduction = "umap.new", raster = FALSE, repel = TRUE, label = TRUE, label.size = 3.5) + ggtitle(paste0(tissue, ": UMAP with Updated subclustering"))

| Version | Author | Date |
|---|---|---|
| c20f60f | Gunjan Dixit | 2024-07-08 |
idx <- which(grepl("^contaminating", Idents(paed_sub)))
paed_clean <- paed_sub[, -idx]
DimPlot(paed_clean, reduction = "umap.new", raster = FALSE, repel = TRUE, label = TRUE, label.size = 3.5) + ggtitle(paste0(tissue, ":Updated subclustering (clean)"))

paed_clean <- paed_clean %>%
NormalizeData() %>%
FindVariableFeatures() %>%
ScaleData() %>%
RunPCA()
Normalizing layer: counts
Finding variable features for layer counts
Centering and scaling data matrix
Warning: Different features in new layer data than already exists for
scale.data
PC_ 1
Positive: TYMS, UHRF1, KIFC1, MKI67, RRM2, MYBL2, HIST1H1B, STMN1, ZWINT, TOP2A
TK1, BIRC5, FOXM1, HJURP, CDT1, CDK1, AURKB, E2F2, CDCA5, HIST1H2BH
ASF1B, SPC24, ESPL1, PKMYT1, TPX2, DLGAP5, ANLN, DTL, E2F1, NCAPG
Negative: TCF7, LTB, IL7R, TXNIP, CD300A, KLF2, PLAC8, PTGDR, LEF1, TXK
TSC22D3, SATB1, FOS, FCRL3, ITGAX, MAL, DTX1, FCMR, ITGAM, SORL1
RASGRP2, CHST2, CCR7, GAS7, CNR2, RASA3, SOCS3, BACH2, DUSP2, TRDC
PC_ 2
Positive: CD300A, FCER1G, ITGAX, TYROBP, GNLY, PLAC8, SH2D1B, KLRF1, KLF2, FGR
IRF8, DUSP2, ITGAM, NCAM1, AREG, TCF7, FOSL2, TXK, GAS7, CTSW
SELL, PTGDR, FCGR3A, TNFRSF18, S1PR5, TRDC, FOS, SAMD3, NCR1, LITAF
Negative: CXCR6, CCR5, TRBC2, ALOX5AP, ITGA1, JUN, RORA, S100A4, CCR6, ST8SIA1
COL5A1, MAF, IL26, GZMA, TOX2, CD4, B3GALT2, CSF1, SCUBE1, CXCL13
LAG3, PDCD1, SLAMF1, ADAM19, RORC, CD5, CTSH, KLRB1, IL17A, NMUR1
PC_ 3
Positive: NKG7, GZMA, HOPX, PRF1, GNLY, GZMB, KLRC1, KLRD1, ITGA1, KLRC4
ZNF683, NMUR1, PIK3AP1, FASLG, KLRC3, CTSW, CSF1, CLNK, IL2RB, CXCR6
FCRL6, KIR2DL4, ENTPD1, NCR1, GZMH, ATP8B4, CCL4, SCUBE1, ALOX5AP, ADGRG1
Negative: CD4, LTB, CD28, MAF, IL7R, SPOCK2, CD40LG, TCF7, CXCR5, IL6R
ICOS, CCR7, CD5, CCR4, CD27, KLF2, GPR183, SATB1, SELL, TBC1D4
TNFRSF25, FCMR, CTLA4, CXCR4, ACTN1, LEF1, SOCS3, RASGRP2, TNFRSF4, MAL
PC_ 4
Positive: IFI6, LAG3, IFI44L, ISG15, GZMB, MX1, IFI44, OAS3, OAS1, TYMP
CMPK2, CXCR6, RSAD2, TNFAIP3, RGS1, IFIT1, XAF1, NR4A2, IRF7, PRDM1
FOSL2, ISG20, TNFRSF1B, CD69, SRGN, PRF1, ZFP36, USP18, TENT5C, SOCS1
Negative: TCF7, ITGAX, PTGDR, LEF1, CD300A, FCRL3, KLRC4, IGHM, ZNF683, ITGAM
TRDC, KLRC3, CNR2, FGR, FCRL6, TXK, GAS7, PLAC8, CXXC5, ID3
RIPOR2, MATK, SPRY2, KLRF1, MAL, SAMD3, ACTN1, TXNIP, DYSF, CHST2
PC_ 5
Positive: EGR2, EGR3, NR4A1, NR4A3, NR4A2, ZFP36L1, TNFRSF9, EGR1, NFKBID, CRTAM
NAB2, TNFRSF18, KDM6B, CCL4L2, DUSP2, TIGIT, PHLDA1, ID3, CTLA4, IL21
XCL2, SRGN, CCL4, TOX2, KRT86, SPRY2, TNFRSF4, CCL3, ATP8B4, CSF1
Negative: IFI44L, IFI6, CMPK2, OAS3, ISG15, RSAD2, OAS1, IFIT1, MX1, XAF1
IFI44, MX2, LY6E, OAS2, USP18, GBP1, IFIT2, ISG20, IRF7, IFIT3
SAMD9L, KLF2, STAT1, GIMAP4, HERC5, MT2A, TMSB10, TYMP, RASGRP2, CX3CR1
paed_clean <- RunUMAP(paed_clean, dims = 1:30, reduction = "pca", reduction.name = "umap.clean")
12:27:31 UMAP embedding parameters a = 0.9922 b = 1.112
Found more than one class "dist" in cache; using the first, from namespace 'spam'
Also defined by 'BiocGenerics'
12:27:31 Read 21032 rows and found 30 numeric columns
12:27:31 Using Annoy for neighbor search, n_neighbors = 30
Found more than one class "dist" in cache; using the first, from namespace 'spam'
Also defined by 'BiocGenerics'
12:27:31 Building Annoy index with metric = cosine, n_trees = 50
0% 10 20 30 40 50 60 70 80 90 100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
12:27:32 Writing NN index file to temp file /var/folders/q8/kw1r78g12qn793xm7g0zvk94x2bh70/T//Rtmp6JQpFt/file150670157b63
12:27:32 Searching Annoy index using 1 thread, search_k = 3000
12:27:36 Annoy recall = 100%
12:27:36 Commencing smooth kNN distance calibration using 1 thread with target n_neighbors = 30
12:27:37 Initializing from normalized Laplacian + noise (using RSpectra)
12:27:38 Commencing optimization for 200 epochs, with 922708 positive edges
12:27:44 Optimization finished
DimPlot(paed_clean, reduction = "umap.clean", group.by = "cell_labels_v2",raster = FALSE, repel = TRUE, label = TRUE, label.size = 4.5) + ggtitle(paste0(tissue, ": Updated subclustering (clean)"))

file <- here("output/CSV/BAL_Marker_gene_clusters.limmaTrendRNA_snn_res.0.4/REACTOME-cluster-limma-c17.csv")
data <- read_csv(file) %>%
arrange(PValue) %>%
slice_head(n = 30)
cluster <- gsub(".*limma-c(\\d+)\\.csv", "Cluster \\1", basename(file))
p <- ggplot(data, aes(x = reorder(Pathway, -log10(PValue)), y = -log10(PValue), size = NGenes, color = Direction)) +
geom_point(alpha = 0.7) +
coord_flip() +
scale_color_manual(values = c(Up = "green3", Down = "red3")) +
labs(title = cluster, x = NULL, y = "-log10(P-value)", size = "Number of Genes", color = "Direction") +
theme_minimal() +
theme(axis.text.y = element_text(size = 8), plot.title = element_text(hjust = 0.5))
p

sessioninfo::session_info()
─ Session info ───────────────────────────────────────────────────────────────
setting value
version R version 4.3.2 (2023-10-31)
os macOS Sonoma 14.5
system aarch64, darwin20
ui X11
language (EN)
collate en_US.UTF-8
ctype en_US.UTF-8
tz Australia/Melbourne
date 2024-07-26
pandoc 3.1.1 @ /Users/dixitgunjan/Desktop/RStudio.app/Contents/Resources/app/quarto/bin/tools/ (via rmarkdown)
─ Packages ───────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
abind 1.4-5 2016-07-21 [1] CRAN (R 4.3.0)
AnnotationDbi * 1.64.1 2023-11-02 [1] Bioconductor
backports 1.4.1 2021-12-13 [1] CRAN (R 4.3.0)
beeswarm 0.4.0 2021-06-01 [1] CRAN (R 4.3.0)
Biobase * 2.62.0 2023-10-26 [1] Bioconductor
BiocGenerics * 0.48.1 2023-11-02 [1] Bioconductor
BiocManager 1.30.22 2023-08-08 [1] CRAN (R 4.3.0)
BiocStyle * 2.30.0 2023-10-26 [1] Bioconductor
Biostrings 2.70.2 2024-01-30 [1] Bioconductor 3.18 (R 4.3.2)
bit 4.0.5 2022-11-15 [1] CRAN (R 4.3.0)
bit64 4.0.5 2020-08-30 [1] CRAN (R 4.3.0)
bitops 1.0-7 2021-04-24 [1] CRAN (R 4.3.0)
blob 1.2.4 2023-03-17 [1] CRAN (R 4.3.0)
bslib 0.6.1 2023-11-28 [1] CRAN (R 4.3.1)
cachem 1.0.8 2023-05-01 [1] CRAN (R 4.3.0)
callr 3.7.5 2024-02-19 [1] CRAN (R 4.3.1)
cellranger 1.1.0 2016-07-27 [1] CRAN (R 4.3.0)
checkmate 2.3.1 2023-12-04 [1] CRAN (R 4.3.1)
cli 3.6.2 2023-12-11 [1] CRAN (R 4.3.1)
cluster 2.1.6 2023-12-01 [1] CRAN (R 4.3.1)
clustree * 0.5.1 2023-11-05 [1] CRAN (R 4.3.1)
codetools 0.2-19 2023-02-01 [1] CRAN (R 4.3.2)
colorspace 2.1-0 2023-01-23 [1] CRAN (R 4.3.0)
cowplot 1.1.3 2024-01-22 [1] CRAN (R 4.3.1)
crayon 1.5.2 2022-09-29 [1] CRAN (R 4.3.0)
data.table * 1.15.0 2024-01-30 [1] CRAN (R 4.3.1)
DBI 1.2.2 2024-02-16 [1] CRAN (R 4.3.1)
DelayedArray 0.28.0 2023-11-06 [1] Bioconductor
deldir 2.0-2 2023-11-23 [1] CRAN (R 4.3.1)
digest 0.6.34 2024-01-11 [1] CRAN (R 4.3.1)
dotCall64 1.1-1 2023-11-28 [1] CRAN (R 4.3.1)
dplyr * 1.1.4 2023-11-17 [1] CRAN (R 4.3.1)
edgeR * 4.0.16 2024-02-20 [1] Bioconductor 3.18 (R 4.3.2)
ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.3.0)
evaluate 0.23 2023-11-01 [1] CRAN (R 4.3.1)
fansi 1.0.6 2023-12-08 [1] CRAN (R 4.3.1)
farver 2.1.1 2022-07-06 [1] CRAN (R 4.3.0)
fastDummies 1.7.3 2023-07-06 [1] CRAN (R 4.3.0)
fastmap 1.1.1 2023-02-24 [1] CRAN (R 4.3.0)
fitdistrplus 1.1-11 2023-04-25 [1] CRAN (R 4.3.0)
forcats * 1.0.0 2023-01-29 [1] CRAN (R 4.3.0)
fs 1.6.3 2023-07-20 [1] CRAN (R 4.3.0)
future 1.33.1 2023-12-22 [1] CRAN (R 4.3.1)
future.apply 1.11.1 2023-12-21 [1] CRAN (R 4.3.1)
generics 0.1.3 2022-07-05 [1] CRAN (R 4.3.0)
GenomeInfoDb 1.38.6 2024-02-10 [1] Bioconductor 3.18 (R 4.3.2)
GenomeInfoDbData 1.2.11 2024-02-27 [1] Bioconductor
GenomicRanges 1.54.1 2023-10-30 [1] Bioconductor
getPass 0.2-4 2023-12-10 [1] CRAN (R 4.3.1)
ggbeeswarm 0.7.2 2023-04-29 [1] CRAN (R 4.3.0)
ggforce 0.4.2 2024-02-19 [1] CRAN (R 4.3.1)
ggplot2 * 3.5.0 2024-02-23 [1] CRAN (R 4.3.1)
ggraph * 2.1.0 2022-10-09 [1] CRAN (R 4.3.0)
ggrastr 1.0.2 2023-06-01 [1] CRAN (R 4.3.0)
ggrepel 0.9.5 2024-01-10 [1] CRAN (R 4.3.1)
ggridges 0.5.6 2024-01-23 [1] CRAN (R 4.3.1)
git2r 0.33.0 2023-11-26 [1] CRAN (R 4.3.1)
globals 0.16.2 2022-11-21 [1] CRAN (R 4.3.0)
glue * 1.7.0 2024-01-09 [1] CRAN (R 4.3.1)
goftest 1.2-3 2021-10-07 [1] CRAN (R 4.3.0)
graphlayouts 1.1.0 2024-01-19 [1] CRAN (R 4.3.1)
gridExtra 2.3 2017-09-09 [1] CRAN (R 4.3.0)
gtable 0.3.4 2023-08-21 [1] CRAN (R 4.3.0)
here * 1.0.1 2020-12-13 [1] CRAN (R 4.3.0)
highr 0.10 2022-12-22 [1] CRAN (R 4.3.0)
hms 1.1.3 2023-03-21 [1] CRAN (R 4.3.0)
htmltools 0.5.7 2023-11-03 [1] CRAN (R 4.3.1)
htmlwidgets 1.6.4 2023-12-06 [1] CRAN (R 4.3.1)
httpuv 1.6.14 2024-01-26 [1] CRAN (R 4.3.1)
httr 1.4.7 2023-08-15 [1] CRAN (R 4.3.0)
ica 1.0-3 2022-07-08 [1] CRAN (R 4.3.0)
igraph 2.0.2 2024-02-17 [1] CRAN (R 4.3.1)
IRanges * 2.36.0 2023-10-26 [1] Bioconductor
irlba 2.3.5.1 2022-10-03 [1] CRAN (R 4.3.2)
jquerylib 0.1.4 2021-04-26 [1] CRAN (R 4.3.0)
jsonlite 1.8.8 2023-12-04 [1] CRAN (R 4.3.1)
kableExtra * 1.4.0 2024-01-24 [1] CRAN (R 4.3.1)
KEGGREST 1.42.0 2023-10-26 [1] Bioconductor
KernSmooth 2.23-22 2023-07-10 [1] CRAN (R 4.3.2)
knitr 1.45 2023-10-30 [1] CRAN (R 4.3.1)
labeling 0.4.3 2023-08-29 [1] CRAN (R 4.3.0)
later 1.3.2 2023-12-06 [1] CRAN (R 4.3.1)
lattice 0.22-5 2023-10-24 [1] CRAN (R 4.3.1)
lazyeval 0.2.2 2019-03-15 [1] CRAN (R 4.3.0)
leiden 0.4.3.1 2023-11-17 [1] CRAN (R 4.3.1)
lifecycle 1.0.4 2023-11-07 [1] CRAN (R 4.3.1)
limma * 3.58.1 2023-11-02 [1] Bioconductor
listenv 0.9.1 2024-01-29 [1] CRAN (R 4.3.1)
lmtest 0.9-40 2022-03-21 [1] CRAN (R 4.3.0)
locfit 1.5-9.8 2023-06-11 [1] CRAN (R 4.3.0)
lubridate * 1.9.3 2023-09-27 [1] CRAN (R 4.3.1)
magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.3.0)
MASS 7.3-60.0.1 2024-01-13 [1] CRAN (R 4.3.1)
Matrix 1.6-5 2024-01-11 [1] CRAN (R 4.3.1)
MatrixGenerics 1.14.0 2023-10-26 [1] Bioconductor
matrixStats 1.2.0 2023-12-11 [1] CRAN (R 4.3.1)
memoise 2.0.1 2021-11-26 [1] CRAN (R 4.3.0)
mime 0.12 2021-09-28 [1] CRAN (R 4.3.0)
miniUI 0.1.1.1 2018-05-18 [1] CRAN (R 4.3.0)
munsell 0.5.0 2018-06-12 [1] CRAN (R 4.3.0)
nlme 3.1-164 2023-11-27 [1] CRAN (R 4.3.1)
org.Hs.eg.db * 3.18.0 2024-02-27 [1] Bioconductor
paletteer 1.6.0 2024-01-21 [1] CRAN (R 4.3.1)
parallelly 1.37.0 2024-02-14 [1] CRAN (R 4.3.1)
patchwork * 1.2.0 2024-01-08 [1] CRAN (R 4.3.1)
pbapply 1.7-2 2023-06-27 [1] CRAN (R 4.3.0)
pillar 1.9.0 2023-03-22 [1] CRAN (R 4.3.0)
pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.3.0)
plotly 4.10.4 2024-01-13 [1] CRAN (R 4.3.1)
plyr 1.8.9 2023-10-02 [1] CRAN (R 4.3.1)
png 0.1-8 2022-11-29 [1] CRAN (R 4.3.0)
polyclip 1.10-6 2023-09-27 [1] CRAN (R 4.3.1)
presto 1.0.0 2024-02-27 [1] Github (immunogenomics/presto@31dc97f)
prismatic 1.1.1 2022-08-15 [1] CRAN (R 4.3.0)
processx 3.8.3 2023-12-10 [1] CRAN (R 4.3.1)
progressr 0.14.0 2023-08-10 [1] CRAN (R 4.3.0)
promises 1.2.1 2023-08-10 [1] CRAN (R 4.3.0)
ps 1.7.6 2024-01-18 [1] CRAN (R 4.3.1)
purrr * 1.0.2 2023-08-10 [1] CRAN (R 4.3.0)
R6 2.5.1 2021-08-19 [1] CRAN (R 4.3.0)
RANN 2.6.1 2019-01-08 [1] CRAN (R 4.3.0)
RColorBrewer * 1.1-3 2022-04-03 [1] CRAN (R 4.3.0)
Rcpp 1.0.12 2024-01-09 [1] CRAN (R 4.3.1)
RcppAnnoy 0.0.22 2024-01-23 [1] CRAN (R 4.3.1)
RcppHNSW 0.6.0 2024-02-04 [1] CRAN (R 4.3.1)
RCurl 1.98-1.14 2024-01-09 [1] CRAN (R 4.3.1)
readr * 2.1.5 2024-01-10 [1] CRAN (R 4.3.1)
readxl * 1.4.3 2023-07-06 [1] CRAN (R 4.3.0)
rematch2 2.1.2 2020-05-01 [1] CRAN (R 4.3.0)
reshape2 1.4.4 2020-04-09 [1] CRAN (R 4.3.0)
reticulate 1.35.0 2024-01-31 [1] CRAN (R 4.3.1)
rlang 1.1.3 2024-01-10 [1] CRAN (R 4.3.1)
rmarkdown 2.25 2023-09-18 [1] CRAN (R 4.3.1)
ROCR 1.0-11 2020-05-02 [1] CRAN (R 4.3.0)
rprojroot 2.0.4 2023-11-05 [1] CRAN (R 4.3.1)
RSpectra 0.16-1 2022-04-24 [1] CRAN (R 4.3.0)
RSQLite 2.3.5 2024-01-21 [1] CRAN (R 4.3.1)
rstudioapi 0.15.0 2023-07-07 [1] CRAN (R 4.3.0)
Rtsne 0.17 2023-12-07 [1] CRAN (R 4.3.1)
S4Arrays 1.2.0 2023-10-26 [1] Bioconductor
S4Vectors * 0.40.2 2023-11-25 [1] Bioconductor 3.18 (R 4.3.2)
sass 0.4.8 2023-12-06 [1] CRAN (R 4.3.1)
scales 1.3.0 2023-11-28 [1] CRAN (R 4.3.1)
scattermore 1.2 2023-06-12 [1] CRAN (R 4.3.0)
sctransform 0.4.1 2023-10-19 [1] CRAN (R 4.3.1)
sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.3.0)
Seurat * 5.0.1.9009 2024-02-28 [1] Github (satijalab/seurat@6a3ef5e)
SeuratObject * 5.0.1 2023-11-17 [1] CRAN (R 4.3.1)
shiny 1.8.0 2023-11-17 [1] CRAN (R 4.3.1)
SingleCellExperiment 1.24.0 2023-11-06 [1] Bioconductor
sp * 2.1-3 2024-01-30 [1] CRAN (R 4.3.1)
spam 2.10-0 2023-10-23 [1] CRAN (R 4.3.1)
SparseArray 1.2.4 2024-02-10 [1] Bioconductor 3.18 (R 4.3.2)
spatstat.data 3.0-4 2024-01-15 [1] CRAN (R 4.3.1)
spatstat.explore 3.2-6 2024-02-01 [1] CRAN (R 4.3.1)
spatstat.geom 3.2-8 2024-01-26 [1] CRAN (R 4.3.1)
spatstat.random 3.2-2 2023-11-29 [1] CRAN (R 4.3.1)
spatstat.sparse 3.0-3 2023-10-24 [1] CRAN (R 4.3.1)
spatstat.utils 3.0-4 2023-10-24 [1] CRAN (R 4.3.1)
speckle * 1.2.0 2023-10-26 [1] Bioconductor
statmod 1.5.0 2023-01-06 [1] CRAN (R 4.3.0)
stringi 1.8.3 2023-12-11 [1] CRAN (R 4.3.1)
stringr * 1.5.1 2023-11-14 [1] CRAN (R 4.3.1)
SummarizedExperiment 1.32.0 2023-11-06 [1] Bioconductor
survival 3.5-8 2024-02-14 [1] CRAN (R 4.3.1)
svglite 2.1.3 2023-12-08 [1] CRAN (R 4.3.1)
systemfonts 1.0.5 2023-10-09 [1] CRAN (R 4.3.1)
tensor 1.5 2012-05-05 [1] CRAN (R 4.3.0)
tibble * 3.2.1 2023-03-20 [1] CRAN (R 4.3.0)
tidygraph 1.3.1 2024-01-30 [1] CRAN (R 4.3.1)
tidyr * 1.3.1 2024-01-24 [1] CRAN (R 4.3.1)
tidyselect 1.2.0 2022-10-10 [1] CRAN (R 4.3.0)
tidyverse * 2.0.0 2023-02-22 [1] CRAN (R 4.3.0)
timechange 0.3.0 2024-01-18 [1] CRAN (R 4.3.1)
tweenr 2.0.3 2024-02-26 [1] CRAN (R 4.3.1)
tzdb 0.4.0 2023-05-12 [1] CRAN (R 4.3.0)
utf8 1.2.4 2023-10-22 [1] CRAN (R 4.3.1)
uwot 0.1.16 2023-06-29 [1] CRAN (R 4.3.0)
vctrs 0.6.5 2023-12-01 [1] CRAN (R 4.3.1)
vipor 0.4.7 2023-12-18 [1] CRAN (R 4.3.1)
viridis 0.6.5 2024-01-29 [1] CRAN (R 4.3.1)
viridisLite 0.4.2 2023-05-02 [1] CRAN (R 4.3.0)
vroom 1.6.5 2023-12-05 [1] CRAN (R 4.3.1)
whisker 0.4.1 2022-12-05 [1] CRAN (R 4.3.0)
withr 3.0.0 2024-01-16 [1] CRAN (R 4.3.1)
workflowr * 1.7.1 2023-08-23 [1] CRAN (R 4.3.0)
xfun 0.42 2024-02-08 [1] CRAN (R 4.3.1)
xml2 1.3.6 2023-12-04 [1] CRAN (R 4.3.1)
xtable 1.8-4 2019-04-21 [1] CRAN (R 4.3.0)
XVector 0.42.0 2023-10-26 [1] Bioconductor
yaml 2.3.8 2023-12-11 [1] CRAN (R 4.3.1)
zlibbioc 1.48.0 2023-10-26 [1] Bioconductor
zoo 1.8-12 2023-04-13 [1] CRAN (R 4.3.0)
[1] /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library
──────────────────────────────────────────────────────────────────────────────
sessionInfo()
R version 4.3.2 (2023-10-31)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Sonoma 14.5
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.11.0
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
time zone: Australia/Melbourne
tzcode source: internal
attached base packages:
[1] stats4 stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] readxl_1.4.3 org.Hs.eg.db_3.18.0 AnnotationDbi_1.64.1
[4] IRanges_2.36.0 S4Vectors_0.40.2 Biobase_2.62.0
[7] BiocGenerics_0.48.1 speckle_1.2.0 edgeR_4.0.16
[10] limma_3.58.1 patchwork_1.2.0 data.table_1.15.0
[13] RColorBrewer_1.1-3 kableExtra_1.4.0 clustree_0.5.1
[16] ggraph_2.1.0 Seurat_5.0.1.9009 SeuratObject_5.0.1
[19] sp_2.1-3 glue_1.7.0 here_1.0.1
[22] lubridate_1.9.3 forcats_1.0.0 stringr_1.5.1
[25] dplyr_1.1.4 purrr_1.0.2 readr_2.1.5
[28] tidyr_1.3.1 tibble_3.2.1 ggplot2_3.5.0
[31] tidyverse_2.0.0 BiocStyle_2.30.0 workflowr_1.7.1
loaded via a namespace (and not attached):
[1] fs_1.6.3 matrixStats_1.2.0
[3] spatstat.sparse_3.0-3 bitops_1.0-7
[5] httr_1.4.7 tools_4.3.2
[7] sctransform_0.4.1 backports_1.4.1
[9] utf8_1.2.4 R6_2.5.1
[11] lazyeval_0.2.2 uwot_0.1.16
[13] withr_3.0.0 gridExtra_2.3
[15] progressr_0.14.0 cli_3.6.2
[17] spatstat.explore_3.2-6 fastDummies_1.7.3
[19] prismatic_1.1.1 labeling_0.4.3
[21] sass_0.4.8 spatstat.data_3.0-4
[23] ggridges_0.5.6 pbapply_1.7-2
[25] systemfonts_1.0.5 svglite_2.1.3
[27] sessioninfo_1.2.2 parallelly_1.37.0
[29] rstudioapi_0.15.0 RSQLite_2.3.5
[31] generics_0.1.3 vroom_1.6.5
[33] ica_1.0-3 spatstat.random_3.2-2
[35] Matrix_1.6-5 ggbeeswarm_0.7.2
[37] fansi_1.0.6 abind_1.4-5
[39] lifecycle_1.0.4 whisker_0.4.1
[41] yaml_2.3.8 SummarizedExperiment_1.32.0
[43] SparseArray_1.2.4 Rtsne_0.17
[45] paletteer_1.6.0 grid_4.3.2
[47] blob_1.2.4 promises_1.2.1
[49] crayon_1.5.2 miniUI_0.1.1.1
[51] lattice_0.22-5 cowplot_1.1.3
[53] KEGGREST_1.42.0 pillar_1.9.0
[55] knitr_1.45 GenomicRanges_1.54.1
[57] future.apply_1.11.1 codetools_0.2-19
[59] leiden_0.4.3.1 getPass_0.2-4
[61] vctrs_0.6.5 png_0.1-8
[63] spam_2.10-0 cellranger_1.1.0
[65] gtable_0.3.4 rematch2_2.1.2
[67] cachem_1.0.8 xfun_0.42
[69] S4Arrays_1.2.0 mime_0.12
[71] tidygraph_1.3.1 survival_3.5-8
[73] SingleCellExperiment_1.24.0 statmod_1.5.0
[75] ellipsis_0.3.2 fitdistrplus_1.1-11
[77] ROCR_1.0-11 nlme_3.1-164
[79] bit64_4.0.5 RcppAnnoy_0.0.22
[81] GenomeInfoDb_1.38.6 rprojroot_2.0.4
[83] bslib_0.6.1 irlba_2.3.5.1
[85] vipor_0.4.7 KernSmooth_2.23-22
[87] colorspace_2.1-0 DBI_1.2.2
[89] ggrastr_1.0.2 tidyselect_1.2.0
[91] processx_3.8.3 bit_4.0.5
[93] compiler_4.3.2 git2r_0.33.0
[95] xml2_1.3.6 DelayedArray_0.28.0
[97] plotly_4.10.4 checkmate_2.3.1
[99] scales_1.3.0 lmtest_0.9-40
[101] callr_3.7.5 digest_0.6.34
[103] goftest_1.2-3 spatstat.utils_3.0-4
[105] presto_1.0.0 rmarkdown_2.25
[107] XVector_0.42.0 htmltools_0.5.7
[109] pkgconfig_2.0.3 MatrixGenerics_1.14.0
[111] highr_0.10 fastmap_1.1.1
[113] rlang_1.1.3 htmlwidgets_1.6.4
[115] shiny_1.8.0 farver_2.1.1
[117] jquerylib_0.1.4 zoo_1.8-12
[119] jsonlite_1.8.8 RCurl_1.98-1.14
[121] magrittr_2.0.3 GenomeInfoDbData_1.2.11
[123] dotCall64_1.1-1 munsell_0.5.0
[125] Rcpp_1.0.12 viridis_0.6.5
[127] reticulate_1.35.0 stringi_1.8.3
[129] zlibbioc_1.48.0 MASS_7.3-60.0.1
[131] plyr_1.8.9 parallel_4.3.2
[133] listenv_0.9.1 ggrepel_0.9.5
[135] deldir_2.0-2 Biostrings_2.70.2
[137] graphlayouts_1.1.0 splines_4.3.2
[139] tensor_1.5 hms_1.1.3
[141] locfit_1.5-9.8 ps_1.7.6
[143] igraph_2.0.2 spatstat.geom_3.2-8
[145] RcppHNSW_0.6.0 reshape2_1.4.4
[147] evaluate_0.23 BiocManager_1.30.22
[149] tzdb_0.4.0 tweenr_2.0.3
[151] httpuv_1.6.14 RANN_2.6.1
[153] polyclip_1.10-6 future_1.33.1
[155] scattermore_1.2 ggforce_0.4.2
[157] xtable_1.8-4 RSpectra_0.16-1
[159] later_1.3.2 viridisLite_0.4.2
[161] beeswarm_0.4.0 memoise_2.0.1
[163] cluster_2.1.6 timechange_0.3.0
[165] globals_0.16.2