Last updated: 2022-06-16
Checks: 7 0
Knit directory:
paed-cf-cite-seq/
This reproducible R Markdown analysis was created with workflowr (version 1.7.0). 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(20210524)
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 8255c24. 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: analysis/obsolete/
Ignored: code/obsolete/
Ignored: data/190930_A00152_0150_BHTYCMDSXX/
Ignored: data/CellRanger/
Ignored: data/GSE127465_RAW/
Ignored: data/SCEs/02_ZILIONIS.sct_normalised.SEU.rds
Ignored: data/SCEs/03_C133_Neeland.demultiplexed.SCE.rds
Ignored: data/SCEs/03_C133_Neeland.emptyDrops.SCE.rds
Ignored: data/SCEs/03_C133_Neeland.nuclear_fraction_calls.rds
Ignored: data/SCEs/03_C133_Neeland.preprocessed.SCE.rds
Ignored: data/SCEs/03_CF_BAL_Pilot.CellRanger_v6.SCE.rds
Ignored: data/SCEs/03_CF_BAL_Pilot.emptyDrops.SCE.rds
Ignored: data/SCEs/03_CF_BAL_Pilot.nuclear_fraction_calls.rds
Ignored: data/SCEs/03_CF_BAL_Pilot.preprocessed.SCE.rds
Ignored: data/SCEs/03_COMBO.clustered.SEU.rds
Ignored: data/SCEs/03_COMBO.clustered_annotated_macrophages_diet.SEU.rds
Ignored: data/SCEs/03_COMBO.clustered_annotated_others_diet.SEU.rds
Ignored: data/SCEs/03_COMBO.clustered_annotated_tcells_diet.SEU.rds
Ignored: data/SCEs/03_COMBO.clustered_azimuth.SEU.rds
Ignored: data/SCEs/03_COMBO.clustered_azimuth_v2.SEU.rds
Ignored: data/SCEs/03_COMBO.clustered_diet.SEU.rds
Ignored: data/SCEs/03_COMBO.integrated.SEU.rds
Ignored: data/SCEs/03_COMBO.zilionis_mapped.SEU.rds
Ignored: data/SCEs/04_C133_Neeland.adt_dsb_normalised.rds
Ignored: data/SCEs/04_C133_Neeland.adt_integrated.rds
Ignored: data/SCEs/04_C133_Neeland.all_integrated.SEU.rds
Ignored: data/SCEs/04_CF_BAL_Pilot.CellRanger_v6.SCE.rds
Ignored: data/SCEs/04_CF_BAL_Pilot.emptyDrops.SCE.rds
Ignored: data/SCEs/04_CF_BAL_Pilot.preprocessed.SCE.rds
Ignored: data/SCEs/04_CF_BAL_Pilot.transfer_adt.SEU.rds
Ignored: data/SCEs/04_COMBO.clean_clustered.SEU.rds
Ignored: data/SCEs/04_COMBO.clean_clustered.SEU_bk.rds
Ignored: data/SCEs/04_COMBO.clean_integrated.SEU.rds
Ignored: data/SCEs/04_COMBO.clean_integrated.SEU_bk.rds
Ignored: data/SCEs/04_COMBO.clean_macrophages_diet.SEU.rds
Ignored: data/SCEs/04_COMBO.clean_others_diet.SEU.rds
Ignored: data/SCEs/04_COMBO.clean_tcells_diet.SEU.rds
Ignored: data/SCEs/04_COMBO.clustered.SEU.rds
Ignored: data/SCEs/04_COMBO.clustered_annotated_adt_diet.SEU.rds
Ignored: data/SCEs/04_COMBO.clustered_annotated_lung_diet.SEU.rds
Ignored: data/SCEs/04_COMBO.clustered_annotated_macrophages_diet.SEU.rds
Ignored: data/SCEs/04_COMBO.clustered_annotated_others_diet.SEU.rds
Ignored: data/SCEs/04_COMBO.clustered_annotated_tcells_diet.SEU.rds
Ignored: data/SCEs/04_COMBO.clustered_diet.SEU.rds
Ignored: data/SCEs/04_COMBO.integrated.SEU.rds
Ignored: data/SCEs/04_COMBO.macrophages_clustered.SEU.rds
Ignored: data/SCEs/04_COMBO.macrophages_integrated.SEU.rds
Ignored: data/SCEs/04_COMBO.others_clustered.SEU.rds
Ignored: data/SCEs/04_COMBO.others_integrated.SEU.rds
Ignored: data/SCEs/04_COMBO.tcells_clustered.SEU.rds
Ignored: data/SCEs/04_COMBO.tcells_integrated.SEU.rds
Ignored: data/SCEs/04_COMBO.zilionis_mapped.SEU.rds
Ignored: data/SCEs/05_CF_BAL_Pilot.transfer_adt.SEU.rds
Ignored: data/SCEs/05_COMBO.clean_clustered.SEU.rds
Ignored: data/SCEs/05_COMBO.clean_integrated.SEU.rds
Ignored: data/SCEs/05_COMBO.clean_macrophages_diet.SEU.rds
Ignored: data/SCEs/05_COMBO.clean_others_diet.SEU.rds
Ignored: data/SCEs/05_COMBO.clean_tcells_diet.SEU.rds
Ignored: data/SCEs/05_COMBO.clustered_annotated_adt_diet.SEU.rds
Ignored: data/SCEs/05_COMBO.clustered_annotated_lung_diet.SEU.rds
Ignored: data/SCEs/05_COMBO.clustered_annotated_macrophages_diet.SEU.rds
Ignored: data/SCEs/05_COMBO.clustered_annotated_others_diet.SEU.rds
Ignored: data/SCEs/05_COMBO.clustered_annotated_tcells_diet.SEU.rds
Ignored: data/SCEs/05_COMBO.macrophages_clustered.SEU.rds
Ignored: data/SCEs/05_COMBO.macrophages_integrated.SEU.rds
Ignored: data/SCEs/05_COMBO.others_clustered.SEU.rds
Ignored: data/SCEs/05_COMBO.others_integrated.SEU.rds
Ignored: data/SCEs/05_COMBO.tcells_clustered.SEU.rds
Ignored: data/SCEs/05_COMBO.tcells_integrated.SEU.rds
Ignored: data/SCEs/06_COMBO.clean_clustered.SEU.rds
Ignored: data/SCEs/06_COMBO.clean_integrated.SEU.rds
Ignored: data/SCEs/06_COMBO.clean_macrophages_diet.SEU.rds
Ignored: data/SCEs/06_COMBO.clean_others_diet.SEU.rds
Ignored: data/SCEs/06_COMBO.clean_tcells_diet.SEU.rds
Ignored: data/SCEs/06_COMBO.macrophages_clustered.SEU.rds
Ignored: data/SCEs/06_COMBO.macrophages_integrated.SEU.rds
Ignored: data/SCEs/06_COMBO.others_clustered.SEU.rds
Ignored: data/SCEs/06_COMBO.others_integrated.SEU.rds
Ignored: data/SCEs/06_COMBO.tcells_clustered.SEU.rds
Ignored: data/SCEs/06_COMBO.tcells_integrated.SEU.rds
Ignored: data/SCEs/C133_Neeland.CellRanger.SCE.rds
Ignored: data/SCEs/obsolete/
Ignored: data/emptyDrops/
Ignored: data/obsolete/
Ignored: data/sample_sheets/obsolete/
Ignored: output/marker-analysis/obsolete/
Ignored: output/obsolete/
Ignored: rename_captures.R
Ignored: renv/library/
Ignored: renv/staging/
Ignored: wflow_background.R
Unstaged changes:
Modified: .gitignore
Modified: .renvignore
Deleted: analysis/03_C133_Neeland.demultiplex.Rmd
Deleted: analysis/03_C133_Neeland.preprocess.Rmd
Deleted: analysis/03_COMBO.clustering_annotation.Rmd
Deleted: analysis/04_CF_BAL_Pilot.emptyDrops.Rmd
Deleted: analysis/04_CF_BAL_Pilot.preprocess.Rmd
Deleted: analysis/04_COMBO.transfer_proteins.Rmd
Deleted: analysis/05_COMBO.cluster_macrophages.Rmd
Deleted: analysis/05_COMBO.cluster_others.Rmd
Deleted: analysis/05_COMBO.cluster_tcells.Rmd
Deleted: analysis/05_COMBO.expression_analysis.Rmd
Deleted: analysis/05_COMBO.postprocess_all.Rmd
Deleted: analysis/05_COMBO.postprocess_macrophages.Rmd
Deleted: analysis/05_COMBO.postprocess_others.Rmd
Deleted: analysis/05_COMBO.postprocess_tcells.Rmd
Modified: renv/.gitignore
Modified: renv/settings.dcf
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/06_COMBO.clustering_annotation.Rmd
) and HTML (docs/06_COMBO.clustering_annotation.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 | 8255c24 | Jovana Maksimovic | 2022-06-16 | wflow_publish(c(paste0("analysis/", list.files(path = here::here("analysis"), |
Load the processed CF_BAL_Pilot and C133_Neeland data sets.
# load preprocessed data
sce1 <- readRDS(here("data", "SCEs", "04_CF_BAL_Pilot.preprocessed.SCE.rds"))
sce2 <- readRDS(here("data", "SCEs", "03_C133_Neeland.preprocessed.SCE.rds"))
# append letter to cell IDs to denote experiment & avoid duplicate IDs
colnames(sce1) <- paste0("A-", colnames(sce1))
colnames(sce2) <- paste0("B-", colnames(sce2))
# identify shared genes
shared_genes <- intersect(rowData(sce1)$ID, rowData(sce2)$ID)
# sort & subset each SCE relative to shared genes
m1 <- match(shared_genes, rowData(sce1)$ID)
all(shared_genes == rowData(sce1)$ID[m1])
[1] TRUE
sce1 <- sce1[m1,]
# sort & subset each SCE relative to shared genes
m2 <- match(shared_genes, rowData(sce2)$ID)
all(shared_genes == rowData(sce2)$ID[m2])
[1] TRUE
sce2 <- sce2[m2,]
# create combined matrix of counts
combo_counts <- cbind(counts(sce1), counts(sce2))
# combine cell metadata
combo_data <- DataFrame(
bind_rows(colData(sce1) %>%
data.frame %>%
dplyr::select(Barcode, capture,
nuclear_fraction, cell_status),
colData(sce2) %>%
data.frame %>%
dplyr::select(Barcode, capture,
nuclear_fraction, cell_status)))
combo_data$HTO <- as.factor(c(as.character(sce1$capture),
as.character(sce2$HTO)))
combo_data$donor <- as.factor(c(as.character(sce1$capture),
as.character(sce2$genetic_donor)))
combo_data$experiment <- as.factor(c(rep(1, ncol(sce1)),
rep(2, ncol(sce2))))
sce <- SingleCellExperiment(
list(counts = combo_counts),
colData = combo_data,
rowData = rowData(sce1))
sce
class: SingleCellExperiment
dim: 32732 54106
metadata(0):
assays(1): counts
rownames(32732): MIR1302-2HG FAM138A ... AC213203.1 FAM231C
rowData names(16): ID Symbol ... NCBI.REFSEQ NCBI.SYMBOL
colnames(54106): A-1_AAACCCAAGCTAGTTC-1 A-1_AAACCCACAAGATTGA-1 ...
B-2_TTTGTTGTCATTGGTG-1 B-2_TTTGTTGTCGATGGAG-1
colData names(7): Barcode capture ... donor experiment
reducedDimNames(0):
mainExpName: NULL
altExpNames(0):
Identify genes that are not informative for cell clustering or downstream marker gene identification. For example, genes without gene symbols or duplicated gene symbols, mitochondrial genes, ribosomal genes and sex chromosome genes are not considered informative.
# Some useful gene sets
mito_set <- rownames(sce)[which(rowData(sce)$CHR == "MT")]
ribo_set <- grep("^RP(S|L)", rownames(sce), value = TRUE)
# NOTE: A more curated approach for identifying ribosomal protein genes
# (https://github.com/Bioconductor/OrchestratingSingleCellAnalysis-base/blob/ae201bf26e3e4fa82d9165d8abf4f4dc4b8e5a68/feature-selection.Rmd#L376-L380)
library(msigdbr)
c2_sets <- msigdbr(species = "Homo sapiens", category = "C2")
ribo_set <- union(
ribo_set,
c2_sets[c2_sets$gs_name == "KEGG_RIBOSOME", ]$human_gene_symbol)
is_ribo <- rownames(sce) %in% ribo_set
sex_set <- rownames(sce)[any(rowData(sce)$ENSEMBL.SEQNAME %in% c("X", "Y"))]
pseudogene_set <- rownames(sce)[
any(grepl("pseudogene", rowData(sce)$ENSEMBL.GENEBIOTYPE))]
Calculate various quality control metrics for each cell.
is_mito <- rownames(sce) %in% mito_set
is_ribo <- rownames(sce) %in% ribo_set
sce <- addPerCellQC(
sce,
subsets = list(Mito = which(is_mito), Ribo = which(is_ribo)))
head(colData(sce)) %>% knitr::kable()
Calculate the percentage of zero counts for each cell.
sce$zero_percent <- colSums(counts(sce) == 0)/nrow(sce)
summary(sce$zero_percent)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.7278 0.8554 0.8830 0.8974 0.9481 0.9994
Figure 3.1 shows that the vast majority of samples are good-quality:
p1 <- plotColData(
sce,
"sum",
x = "capture",
colour_by = "experiment",
point_size = 0.5) +
scale_y_log10() +
theme(axis.text.x = element_text(size = 6)) +
annotation_logticks(
sides = "l",
short = unit(0.03, "cm"),
mid = unit(0.06, "cm"),
long = unit(0.09, "cm"))
p2 <- plotColData(
sce,
"detected",
x = "capture",
colour_by = "experiment",
point_size = 0.5) +
theme(axis.text.x = element_text(size = 6))
p3 <- plotColData(
sce,
"subsets_Mito_percent",
x = "capture",
colour_by = "experiment",
point_size = 0.5) +
theme(axis.text.x = element_text(size = 6))
p4 <- plotColData(
sce,
"subsets_Ribo_percent",
x = "capture",
colour_by = "experiment",
point_size = 0.5) +
theme(axis.text.x = element_text(size = 6))
p5 <- plotColData(
sce,
x = "capture",
y = "zero_percent",
colour_by = "experiment",
point_size = 0.5) +
theme(axis.text.x = element_text(size = 6))
((p1 | p2) / (p3 | p4) / p5) +
plot_layout(guides = "collect") &
theme(legend.position = "bottom")
p1 <- plotColData(
sce,
"sum",
x = "donor",
colour_by = "experiment",
point_size = 0.5) +
scale_y_log10() +
theme(axis.text.x = element_text(angle = 90)) +
annotation_logticks(
sides = "l",
short = unit(0.03, "cm"),
mid = unit(0.06, "cm"),
long = unit(0.09, "cm"))
p2 <- plotColData(
sce,
"detected",
x = "donor",
colour_by = "experiment",
point_size = 0.5) +
theme(axis.text.x = element_text(angle = 90,
hjust = 0.5,
vjust = 1))
p3 <- plotColData(
sce,
"subsets_Mito_percent",
x = "donor",
colour_by = "experiment",
point_size = 0.5) +
theme(axis.text.x = element_text(angle = 90))
p4 <- plotColData(
sce,
"subsets_Ribo_percent",
x = "donor",
colour_by = "experiment",
point_size = 0.5) +
theme(axis.text.x = element_text(angle = 90))
p5 <- plotColData(
sce,
x = "donor",
y = "zero_percent",
colour_by = "experiment",
point_size = 0.5) +
theme(axis.text.x = element_text(angle = 90))
((p1 | p2) / (p3 | p4) / p5) +
plot_layout(guides = "collect") &
theme(legend.position = "bottom")
plotColData(
sce,
x = "sum",
y = "detected",
other_fields = "capture",
colour_by = "zero_percent",
point_size = 0.25,
point_alpha = 0.25) +
facet_wrap(vars(capture), ncol = 2)
plotColData(
sce,
x = "detected",
y = "subsets_Mito_percent",
other_fields = "capture",
colour_by = "zero_percent",
point_size = 0.25,
point_alpha = 0.25) +
facet_wrap(vars(capture), ncol = 2)
plotColData(
sce,
x = "sum",
y = "subsets_Ribo_percent",
other_fields = "capture",
colour_by = "zero_percent",
point_size = 0.25,
point_alpha = 0.25) +
scale_x_log10() +
facet_wrap(vars(capture), ncol = 2)
plotColData(
sce,
x = "sum",
y = "subsets_Mito_percent",
other_fields = "capture",
colour_by = "cell_status",
point_size = 0.25,
point_alpha = 0.25) +
scale_x_log10() +
facet_wrap(vars(capture), ncol = 2)
colData(sce) %>%
data.frame %>%
ggplot(aes(x = cell_status, y = sum, fill = cell_status)) +
geom_violin(scale = "count", size = 0.25) +
scale_y_log10() +
facet_wrap(~ capture, scales = "free_y")
Remove uninformative genes and filter out low quality cells:
(1) cells that are called doublets or unassigned based on genetic assignment,
(2) cells that are called doublets based on HTO assignment and,
(3) cells that were called empty droplets by DropletQC
in the scRNA-seq data only.
uninformative <- is_mito | is_ribo | rownames(sce) %in% sex_set | rownames(sce) %in% pseudogene_set
sum(uninformative)
[1] 1558
junk <- sce$donor %in% c("doublet", "unassigned") | sce$HTO %in% "Doublet" | (sce$cell_status == "empty_droplet" & sce$experiment == 1)
sceFlt <- sce[!uninformative, !junk]
sceFlt
class: SingleCellExperiment
dim: 31174 45590
metadata(0):
assays(1): counts
rownames(31174): MIR1302-2HG FAM138A ... AC213203.1 FAM231C
rowData names(16): ID Symbol ... NCBI.REFSEQ NCBI.SYMBOL
colnames(45590): A-1_AAACCCAAGCTAGTTC-1 A-1_AAACCCACAAGATTGA-1 ...
B-2_TTTGTTGCATCGAGCC-1 B-2_TTTGTTGTCGATGGAG-1
colData names(17): Barcode capture ... total zero_percent
reducedDimNames(0):
mainExpName: NULL
altExpNames(0):
Keep only genes that are expressed in at least 20 cells. On average, this means that we will only be able to identify clusters with >20 cells.
numCells <- nexprs(sceFlt, byrow = TRUE)
keep <- numCells > 20
sum(keep)
[1] 19120
Keep the genes that meet the criteria.
sceFlt <- sceFlt[keep,]
sceFlt
class: SingleCellExperiment
dim: 19120 45590
metadata(0):
assays(1): counts
rownames(19120): AL627309.1 AL669831.5 ... AC004556.1 AC240274.1
rowData names(16): ID Symbol ... NCBI.REFSEQ NCBI.SYMBOL
colnames(45590): A-1_AAACCCAAGCTAGTTC-1 A-1_AAACCCACAAGATTGA-1 ...
B-2_TTTGTTGCATCGAGCC-1 B-2_TTTGTTGTCGATGGAG-1
colData names(17): Barcode capture ... total zero_percent
reducedDimNames(0):
mainExpName: NULL
altExpNames(0):
Seurat
objectConvert SingleCellExperiment
object to a SeuratObject
.
counts <- counts(sceFlt)
rownames(counts) <- rowData(sceFlt)$Symbol
seu <- CreateSeuratObject(counts = counts,
meta.data = data.frame(colData(sceFlt)))
seu
An object of class Seurat
19120 features across 45590 samples within 1 assay
Active assay: RNA (19120 features, 0 variable features)
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 8718371 465.7 14316903 764.7 14316903 764.7
Vcells 536602696 4094.0 1993226295 15207.2 3244341485 24752.4
DefaultAssay(seu) <- "RNA"
seu <- NormalizeData(seu) %>%
FindVariableFeatures() %>%
ScaleData() %>%
RunPCA(verbose = FALSE, dims = 1:30) %>%
RunUMAP(verbose = FALSE, dims = 1:30)
DimPlot(seu, group.by = "experiment", combine = FALSE)
[[1]]
DimPlot(seu, split.by = "experiment", combine = FALSE)
[[1]]
Normalise the data using SCTransform
and integrate across batches/individuals.
out <- here("data/SCEs/04_COMBO.integrated.SEU.rds")
if(!file.exists(out)) {
seuInt <- intDat(seu, split = "donor", type = "RNA",
reference = unique(as.character(seu$capture[seu$experiment == 1])))
saveRDS(seuInt, file = out)
} else {
seuInt <- readRDS(out)
}
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 8773844 468.6 14316903 764.7 14316903 764.7
Vcells 2300603946 17552.3 2911065156 22209.7 3244341485 24752.4
seuInt <- RunPCA(seuInt, npcs = 30, verbose = FALSE)
seuInt <- RunUMAP(seuInt, verbose = FALSE, dims = 1:30)
DimPlot(seuInt, group.by = "experiment", combine = FALSE)
[[1]]
p1 <- DimPlot(seuInt, reduction = "pca", group.by = "donor")
p2 <- DimPlot(seuInt, reduction = "pca", dims = c(1,3), group.by = "donor")
p3 <- DimPlot(seuInt, reduction = "pca", dims = c(2,3), group.by = "donor")
p4 <- DimPlot(seuInt, reduction = "pca", dims = c(3,4), group.by = "donor")
((p1 | p2) / (p3 | p4)) + plot_layout(guides = "collect") &
theme(legend.text = element_text(size = 8),
plot.title = element_text(size = 10),
axis.title = element_text(size = 9),
axis.text = element_text(size = 8))
DimHeatmap(seuInt, dims = 1:30, cells = 500, balanced = TRUE)
ElbowPlot(seuInt, ndims = 30)
out <- here("data/SCEs/04_COMBO.clustered.SEU.rds")
if(!file.exists(out)) {
seuInt <- FindNeighbors(seuInt, reduction = "pca", dims = 1:30)
seuInt <- FindClusters(seuInt, algorithm = 3,
resolution = seq(0.1, 1, by = 0.1))
seuInt <- RunUMAP(seuInt, dims = 1:30)
saveRDS(seuInt, file = out)
} else {
seuInt <- readRDS(out)
}
DimPlot(seuInt, reduction = 'umap', label = TRUE, repel = TRUE,
label.size = 2.5) + NoLegend()
Clustree
resolution visualisationclustree(seuInt, prefix = "integrated_snn_res.")
Sys.setenv("VROOM_CONNECTION_SIZE" = 1000000)
files <- list.files(here::here("data/GSE127465_RAW"),
full.names = TRUE,
pattern = "raw_counts")
library <- limma::strsplit2(limma::strsplit2(files, "human_")[,2],
"_raw")[,1]
out <- here::here("data/GSE127465_RAW/raw_dgCMatrix.rds")
if(!file.exists(out)){
raw <- lapply(files, function(f){
message(f)
vroom::vroom(f) %>%
tibble::column_to_rownames("barcode") %>%
t() %>%
as("dgCMatrix")
})
rawCmp <- purrr::reduce(raw, cbind)
times <- sapply(raw, ncol)
libTagged <- paste0(rep(library, times), "_", colnames(rawCmp))
colnames(rawCmp) <- libTagged
saveRDS(rawCmp, out)
} else {
rawCmp <- readRDS(out)
}
metadata <- vroom::vroom(here::here("data",
"GSE127465_RAW",
"GSE127465_human_cell_metadata_54773x25.tsv.gz")) %>%
dplyr::filter(Library %in% library) %>%
dplyr::mutate(ID = paste0(Library, "_", Barcode))
m <- match(metadata$ID, colnames(rawCmp))
subRaw <- rawCmp[, m]
all(colnames(subRaw) == metadata$ID)
[1] TRUE
zilionisRaw <- CreateSeuratObject(counts = subRaw,
meta.data = data.frame(metadata,
row.names = metadata$ID))
zilionisRaw <- zilionisRaw[, !grepl("specific", zilionisRaw$Major.cell.type)]
zilionisRaw
An object of class Seurat
41861 features across 24495 samples within 1 assay
Active assay: RNA (41861 features, 0 variable features)
SCTranscorm
out <- here("data/SCEs/02_ZILIONIS.sct_normalised.SEU.rds")
if(!file.exists(out)) {
zilSct <- SCTransform(zilionisRaw, method = "glmGamPoi")
zilSct <- RunPCA(zilSct, verbose = FALSE, dims = 1:30)
zilSct <- FindNeighbors(zilSct, reduction = "pca", dims = 1:20)
zilSct <- FindClusters(zilSct, algorithm = 3)
zilSct <- RunUMAP(zilSct, dims = 1:30, reduction = "pca",
return.model = TRUE)
saveRDS(zilSct, file = out)
} else {
zilSct <- readRDS(out)
}
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 9051961 483.5 14316903 764.7 14316903 764.7
Vcells 3728408350 28445.5 6036814145 46057.3 4192106805 31983.3
out <- here("data/SCEs/04_COMBO.zilionis_mapped.SEU.rds")
if(!file.exists(out)) {
anchors <- FindTransferAnchors(reference = zilSct, query = seuInt,
dims = 1:30, reference.reduction = "pca",
normalization.method = "SCT")
seuInt <- MapQuery(anchorset = anchors, reference = zilSct,
query = seuInt,
refdata = list(celltype = "Major.cell.type"),
reference.reduction = "pca",
reduction.model = "umap")
saveRDS(seuInt, file = out)
} else {
seuInt <- readRDS(out)
}
p1 <- DimPlot(zilSct, reduction = "umap", group.by = "Major.cell.type",
label = TRUE, label.size = 2.5, repel = TRUE) +
NoLegend() +
ggtitle("Reference annotations") +
theme(axis.text = element_text(size = 8),
axis.title = element_text(size = 8),
title = element_text(size = 9))
p2 <- DimPlot(seuInt, reduction = "ref.umap",
group.by = "predicted.celltype", label = TRUE,
label.size = 2.5, repel = TRUE) +
NoLegend() +
ggtitle("Query transferred labels") +
theme(axis.text = element_text(size = 8),
axis.title = element_text(size = 8),
title = element_text(size = 9))
p1 + p2
options(scipen=1)
seuInt@meta.data %>%
ggplot(aes(y = predicted.celltype.score,
x = predicted.celltype,
fill = predicted.celltype)) +
geom_violin(scale = "width") +
theme(text = element_text(size = 8),
axis.text.x = element_text(angle = 90,
vjust = 0.5,
hjust = 1)) +
NoLegend() -> p1
seuInt@meta.data %>%
ggplot(aes(y = nCount_RNA,
x = predicted.celltype,
fill = predicted.celltype)) +
geom_violin(scale = "area") +
scale_y_log10() +
theme(text = element_text(size = 8),
axis.text.x = element_text(angle = 90,
vjust = 0.5,
hjust = 1)) +
NoLegend() -> p2
seuInt@meta.data %>%
ggplot(aes(y = nFeature_RNA,
x = predicted.celltype,
fill = predicted.celltype)) +
geom_violin(scale = "area") +
scale_y_log10() +
theme(text = element_text(size = 8),
axis.text.x = element_text(angle = 90,
vjust = 0.5,
hjust = 1)) +
NoLegend() -> p3
(p1 / p2 / p3)
DimPlot(seuInt, reduction = 'umap',
label = TRUE, repel = TRUE,
label.size = 2.5,
group.by = "predicted.celltype") + NoLegend()
Save filtered data and upload to Azimuth for annotation with Human Lung Cell reference. Add Azimuth labels to data.
out <- here("data/SCEs/04_COMBO.clustered_diet.SEU.rds")
if(!file.exists(out)){
DefaultAssay(seuInt) <- "RNA"
seuDiet <- DietSeurat(seuInt, assays = "RNA")
saveRDS(seuDiet, out)
} else {
seuInt <- AddAzimuthResults(seuInt,
filename = here("data/SCEs/03_COMBO.clustered_azimuth.SEU.rds"))
seuInt$predicted.annotation.l1 <- fct_drop(seuInt$predicted.annotation.l1)
}
if(any(grepl("predicted.annotation.l1",
colnames(seuInt@meta.data)))) table(seuInt$predicted.annotation.l1)
Basophil/Mast Ciliated
48 384
Alveolar Epithelial Type 2 Bronchial Vessel
19 87
Capillary Intermediate Basal
134 363
Dendritic CD16+ Monocyte
2494 24
CD14+ Monocyte Smooth Muscle
620 1
CD8 T CD4 T
2416 3578
Plasmacytoid Dendritic B
141 1403
Macrophage Vein
32039 37
Artery Mucous
12 10
Lymphatic Proliferating Macrophage
28 758
Proliferating NK/T Natural Killer T
102 257
Natural Killer Plasma
121 33
Neuroendocrine Ionocyte
4 412
Goblet
65
DimPlot(seuInt, reduction = 'umap.proj',
label = TRUE, repel = TRUE, label.size = 2.5,
group.by = "predicted.annotation.l1") + NoLegend()
DimPlot(seuInt, reduction = 'umap',
label = TRUE, repel = TRUE, label.size = 2.5,
group.by = "predicted.annotation.l1") + NoLegend()
options(scipen=1)
seuInt@meta.data %>%
ggplot(aes(y = predicted.annotation.l1.score,
x = predicted.annotation.l1,
fill = predicted.annotation.l1)) +
geom_violin(scale = "width") +
theme(text = element_text(size = 8),
axis.text.x = element_text(angle = 90,
vjust = 0.5,
hjust = 1)) +
NoLegend() -> p1
seuInt@meta.data %>%
ggplot(aes(y = nCount_RNA,
x = predicted.annotation.l1,
fill = predicted.annotation.l1)) +
geom_violin(scale = "area") +
scale_y_log10() +
theme(text = element_text(size = 8),
axis.text.x = element_text(angle = 90,
vjust = 0.5,
hjust = 1)) +
NoLegend() -> p2
seuInt@meta.data %>%
ggplot(aes(y = nFeature_RNA,
x = predicted.annotation.l1,
fill = predicted.annotation.l1)) +
geom_violin(scale = "area") +
scale_y_log10() +
theme(text = element_text(size = 8),
axis.text.x = element_text(angle = 90,
vjust = 0.5,
hjust = 1)) +
NoLegend() -> p3
(p1 / p2 / p3)
Upload previously saved filtered data to Azimuth for annotation with Human Lung Cell reference version 2.0. Add Azimuth labels to data.
seuInt <- AddAzimuthResults(seuInt,
filename = here("data/SCEs/03_COMBO.clustered_azimuth_v2.SEU.rds"))
seuInt$predicted.ann_level_1 <- fct_drop(seuInt$predicted.ann_level_1)
seuInt$predicted.ann_level_2 <- fct_drop(seuInt$predicted.ann_level_2)
seuInt$predicted.ann_level_3 <- fct_drop(seuInt$predicted.ann_level_3)
seuInt$predicted.ann_level_4 <- fct_drop(seuInt$predicted.ann_level_4)
seuInt$predicted.ann_finest_level <- fct_drop(seuInt$predicted.ann_finest_level)
table(seuInt$predicted.ann_level_1) %>% knitr::kable()
Var1 | Freq |
---|---|
Endothelial | 322 |
Epithelial | 1800 |
Immune | 43468 |
table(seuInt$predicted.ann_level_2) %>% knitr::kable()
Var1 | Freq |
---|---|
Airway epithelium | 1488 |
Alveolar epithelium | 299 |
Blood vessels | 325 |
Lymphatic EC | 2 |
Lymphoid | 7955 |
Myeloid | 35521 |
table(seuInt$predicted.ann_level_3) %>% knitr::kable()
Var1 | Freq |
---|---|
AT1 | 369 |
AT2 | 1 |
B cell lineage | 1492 |
Basal | 541 |
Dendritic cells | 2081 |
EC arterial | 27 |
EC capillary | 121 |
EC venous | 187 |
Innate lymphoid cell NK | 120 |
Lymphatic EC mature | 11 |
Macrophages | 33161 |
Mast cells | 51 |
Monocytes | 204 |
Multiciliated lineage | 386 |
Rare | 99 |
Secretory | 397 |
T cell lineage | 6342 |
table(seuInt$predicted.ann_level_4) %>% knitr::kable()
Var1 | Freq |
---|---|
Alveolar macrophages | 28722 |
B cells | 1471 |
Basal resting | 244 |
CD4 T cells | 3020 |
CD8 T cells | 3237 |
Classical monocytes | 122 |
Club | 258 |
DC1 | 63 |
DC2 | 1789 |
Deuterosomal | 2 |
EC general capillary | 135 |
EC venous pulmonary | 10 |
EC venous systemic | 171 |
Goblet | 120 |
Interstitial macrophages | 4403 |
Ionocyte | 1 |
Migratory DCs | 120 |
Multiciliated | 384 |
NK cells | 120 |
Non-classical monocytes | 62 |
None | 505 |
Plasma cells | 37 |
Plasmacytoid DCs | 143 |
SMG duct | 2 |
Suprabasal | 276 |
T cells proliferating | 74 |
Tuft | 99 |
table(seuInt$predicted.ann_finest_level) %>% knitr::kable()
Var1 | Freq |
---|---|
Alveolar macrophages | 27390 |
Alveolar Mφ CCL3+ | 573 |
Alveolar Mφ proliferating | 686 |
AT1 | 400 |
AT2 | 1 |
B cells | 1471 |
Basal resting | 245 |
CD4 T cells | 3020 |
CD8 T cells | 3237 |
Classical monocytes | 133 |
Club (nasal) | 230 |
Club (non-nasal) | 32 |
DC1 | 63 |
DC2 | 1909 |
Deuterosomal | 2 |
EC arterial | 27 |
EC general capillary | 145 |
EC venous pulmonary | 10 |
EC venous systemic | 171 |
Goblet (bronchial) | 1 |
Goblet (nasal) | 116 |
Interstitial Mφ perivascular | 267 |
Ionocyte | 2 |
Lymphatic EC mature | 12 |
Mast cells | 51 |
Migratory DCs | 120 |
Monocyte-derived Mφ | 4054 |
Multiciliated (nasal) | 1 |
Multiciliated (non-nasal) | 383 |
NK cells | 120 |
Non-classical monocytes | 86 |
Plasma cells | 37 |
Plasmacytoid DCs | 143 |
SMG duct | 2 |
Suprabasal | 276 |
T cells proliferating | 74 |
Tuft | 100 |
azimuth_results <- readRDS(here("data/SCEs/03_COMBO.clustered_azimuth.SEU.rds"))
seuInt[["umap.proj.v1"]] <- azimuth_results$umap
DimPlot(seuInt, reduction = 'umap.proj.v1',
label = TRUE, repel = TRUE, label.size = 2.5,
group.by = "predicted.annotation.l1") + NoLegend()
DimPlot(seuInt, reduction = 'umap.proj',
label = TRUE, repel = TRUE, label.size = 2.5,
group.by = "predicted.ann_level_1") + NoLegend()
DimPlot(seuInt, reduction = 'umap.proj',
label = TRUE, repel = TRUE, label.size = 2.5,
group.by = "predicted.ann_level_2") + NoLegend()
DimPlot(seuInt, reduction = 'umap.proj',
label = TRUE, repel = TRUE, label.size = 2.5,
group.by = "predicted.ann_level_3") + NoLegend()
DimPlot(seuInt, reduction = 'umap.proj',
label = TRUE, repel = TRUE, label.size = 2.5,
group.by = "predicted.ann_level_4") + NoLegend()
DimPlot(seuInt, reduction = 'umap.proj',
label = TRUE, repel = TRUE, label.size = 2.5,
group.by = "predicted.ann_finest_level") + NoLegend()
## Visualise cell type abundance
labels <- colnames(seuInt@meta.data)[grepl("(?!.*score$)predicted.ann",
colnames(seuInt@meta.data),
perl = TRUE)]
p <- vector("list",length(labels))
for(label in labels){
seuInt@meta.data %>%
ggplot(aes(x = !!sym(label), fill = !!sym(label))) +
geom_bar() +
geom_text(aes(label = ..count..), stat = "count",
vjust = -0.5, colour = "black", size = 2) +
scale_y_log10() +
theme(axis.text.x = element_blank(),
axis.title.x = element_blank(),
axis.ticks.x = element_blank()) +
NoLegend() +
labs(y = "No. Cells (log scale)") -> p1
seuInt@meta.data %>%
dplyr::select(!!sym(label), experiment) %>%
group_by(!!sym(label), experiment) %>%
summarise(num = n()) %>%
mutate(prop = num / sum(num)) %>%
ggplot(aes(x = !!sym(label), y = prop * 100,
fill = experiment)) +
geom_bar(stat = "identity") +
theme(axis.text.x = element_text(angle = 90,
vjust = 0.5,
hjust = 1)) +
labs(y = "% Cells", fill = "Experiment") -> p2
p1 / p2 -> p[[label]]
}
p
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
[[4]]
NULL
[[5]]
NULL
[[6]]
NULL
[[7]]
NULL
$predicted.annotation.l1
$predicted.ann_level_1
$predicted.ann_level_2
$predicted.ann_level_3
$predicted.ann_level_4
$predicted.ann_level_5
$predicted.ann_finest_level
## Visualise annotation relasionships and quality
check <- levels(seuInt$predicted.annotation.l1)
p <- vector("list", length(check))
for(i in 1:length(p)){
seuInt@meta.data %>%
dplyr::filter(predicted.annotation.l1 == check[i]) %>%
ggplot(aes(x = predicted.ann_level_3.score,
colour = predicted.ann_level_3)) +
geom_density() +
ggtitle(paste0("Cluster ", check[i])) +
theme(legend.key.size = unit(4, "pt")) -> p1
seuInt@meta.data %>%
dplyr::filter(predicted.annotation.l1 == check[i]) %>%
ggplot(aes(x = predicted.ann_level_3,
fill = predicted.ann_level_3)) +
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() -> p2
seuInt@meta.data %>%
dplyr::filter(predicted.annotation.l1 == check[i]) %>%
ggplot(aes(x = predicted.ann_finest_level.score,
colour = predicted.ann_finest_level)) +
geom_density() +
ggtitle(paste0("Cluster ", check[i])) +
theme(legend.key.size = unit(4, "pt")) -> p3
seuInt@meta.data %>%
dplyr::filter(predicted.annotation.l1 == check[i]) %>%
ggplot(aes(x = predicted.ann_finest_level,
fill = predicted.ann_finest_level)) +
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() -> p4
seuInt@meta.data %>%
dplyr::filter(predicted.annotation.l1 == check[i]) %>%
ggplot(aes(x = predicted.ann_level_4.score,
colour = predicted.ann_level_4)) +
geom_density() +
ggtitle(paste0("Cluster ", check[i])) +
theme(legend.key.size = unit(4, "pt")) -> p5
seuInt@meta.data %>%
dplyr::filter(predicted.annotation.l1 == check[i]) %>%
ggplot(aes(x = predicted.ann_level_4,
fill = predicted.ann_level_4)) +
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() -> p6
((p1 | p2) / (p5 | p6) / (p3 | p4)) +
plot_annotation(title = check[i]) &
theme(text = element_text(size = 8)) -> p[[i]]
}
p
[[1]]
[[2]]
[[3]]
[[4]]
[[5]]
[[6]]
[[7]]
[[8]]
[[9]]
[[10]]
[[11]]
[[12]]
[[13]]
[[14]]
[[15]]
[[16]]
[[17]]
[[18]]
[[19]]
[[20]]
[[21]]
[[22]]
[[23]]
[[24]]
[[25]]
[[26]]
[[27]]
labels <- levels(factor(seuInt$predicted.ann_level_3))
macrophages <- c("Macrophages")
tcells <- c("T cell lineage", "Innate lymphoid cell NK")
lung <- c("AT1", "EC arterial", "Rare", "Secretory", "Basal",
"EC venous", "Multiciliated lineage", "EC capillary",
"Lymphatic EC mature", "AT2")
subList <- list(macrophages = macrophages,
tcells = tcells,
lung = lung,
others = labels[!labels %in% c(macrophages, tcells, lung)])
Idents(seuInt) <- "predicted.ann_level_3"
for(sub in names(subList)){
out <- here(glue("data/SCEs/05_COMBO.clustered_annotated_{sub}_diet.SEU.rds"))
message(sub)
if(!file.exists(out)){
saveRDS(DietSeurat(subset(seuInt,
idents = subList[[sub]]),
assays = "RNA",
dimreducs = NULL,
graphs = NULL), out)
}
}
sessioninfo::session_info()
─ Session info ───────────────────────────────────────────────────────────────
setting value
version R version 4.1.0 (2021-05-18)
os CentOS Linux 7 (Core)
system x86_64, linux-gnu
ui X11
language (EN)
collate en_AU.UTF-8
ctype en_AU.UTF-8
tz Australia/Melbourne
date 2022-06-16
pandoc 2.17.1.1 @ /usr/lib/rstudio-server/bin/quarto/bin/ (via rmarkdown)
─ Packages ───────────────────────────────────────────────────────────────────
! package * version date (UTC) lib source
P abind 1.4-5 2016-07-21 [?] CRAN (R 4.1.0)
P AnnotationDbi 1.56.2 2021-11-09 [?] Bioconductor
P AnnotationFilter 1.18.0 2021-10-26 [?] Bioconductor
P assertthat 0.2.1 2019-03-21 [?] CRAN (R 4.1.0)
P babelgene 21.4 2021-04-26 [?] CRAN (R 4.1.0)
P backports 1.4.1 2021-12-13 [?] CRAN (R 4.1.0)
P beachmat 2.10.0 2021-10-26 [?] Bioconductor
P beeswarm 0.4.0 2021-06-01 [?] CRAN (R 4.1.0)
P Biobase * 2.54.0 2021-10-26 [?] Bioconductor
P BiocFileCache 2.2.0 2021-10-26 [?] Bioconductor
P BiocGenerics * 0.40.0 2021-10-26 [?] Bioconductor
P BiocIO 1.4.0 2021-10-26 [?] Bioconductor
P BiocManager 1.30.16 2021-06-15 [?] CRAN (R 4.1.0)
P BiocNeighbors 1.12.0 2021-10-26 [?] Bioconductor
P BiocParallel * 1.28.3 2021-12-09 [?] Bioconductor
P BiocSingular 1.10.0 2021-10-26 [?] Bioconductor
P BiocStyle * 2.22.0 2021-10-26 [?] Bioconductor
P biomaRt 2.50.1 2021-11-21 [?] Bioconductor
P Biostrings 2.62.0 2021-10-26 [?] Bioconductor
P bit 4.0.4 2020-08-04 [?] CRAN (R 4.1.0)
P bit64 4.0.5 2020-08-30 [?] CRAN (R 4.0.2)
P bitops 1.0-7 2021-04-24 [?] CRAN (R 4.0.2)
P blob 1.2.2 2021-07-23 [?] CRAN (R 4.1.0)
P bluster 1.4.0 2021-10-26 [?] Bioconductor
P bookdown 0.24 2021-09-02 [?] CRAN (R 4.1.0)
P broom 0.7.11 2022-01-03 [?] CRAN (R 4.1.0)
P bslib 0.3.1 2021-10-06 [?] CRAN (R 4.1.0)
P cachem 1.0.6 2021-08-19 [?] CRAN (R 4.1.0)
P callr 3.7.0 2021-04-20 [?] CRAN (R 4.1.0)
P cellranger 1.1.0 2016-07-27 [?] CRAN (R 4.1.0)
P checkmate 2.0.0 2020-02-06 [?] CRAN (R 4.0.2)
P cli 3.1.0 2021-10-27 [?] CRAN (R 4.1.0)
P cluster 2.1.2 2021-04-17 [?] CRAN (R 4.1.0)
P clustree * 0.4.4 2021-11-08 [?] CRAN (R 4.1.0)
P codetools 0.2-18 2020-11-04 [?] CRAN (R 4.1.0)
P colorspace 2.0-2 2021-06-24 [?] CRAN (R 4.0.2)
P cowplot 1.1.1 2020-12-30 [?] CRAN (R 4.0.2)
P crayon 1.4.2 2021-10-29 [?] CRAN (R 4.1.0)
P curl 4.3.2 2021-06-23 [?] CRAN (R 4.1.0)
P data.table 1.14.2 2021-09-27 [?] CRAN (R 4.1.0)
P DBI 1.1.2 2021-12-20 [?] CRAN (R 4.1.0)
P dbplyr 2.1.1 2021-04-06 [?] CRAN (R 4.1.0)
P DelayedArray 0.20.0 2021-10-26 [?] Bioconductor
P DelayedMatrixStats 1.16.0 2021-10-26 [?] Bioconductor
P deldir 1.0-6 2021-10-23 [?] CRAN (R 4.1.0)
P digest 0.6.29 2021-12-01 [?] CRAN (R 4.1.0)
P dplyr * 1.0.7 2021-06-18 [?] CRAN (R 4.1.0)
P dqrng 0.3.0 2021-05-01 [?] CRAN (R 4.1.0)
P DropletUtils * 1.14.1 2021-11-08 [?] Bioconductor
P edgeR 3.36.0 2021-10-26 [?] Bioconductor
P ellipsis 0.3.2 2021-04-29 [?] CRAN (R 4.0.2)
P ensembldb 2.18.2 2021-11-08 [?] Bioconductor
P evaluate 0.14 2019-05-28 [?] CRAN (R 4.0.2)
P fansi 1.0.0 2022-01-10 [?] CRAN (R 4.1.0)
P farver 2.1.0 2021-02-28 [?] CRAN (R 4.0.2)
P fastmap 1.1.0 2021-01-25 [?] CRAN (R 4.1.0)
P filelock 1.0.2 2018-10-05 [?] CRAN (R 4.1.0)
P fitdistrplus 1.1-6 2021-09-28 [?] CRAN (R 4.1.0)
P forcats * 0.5.1 2021-01-27 [?] CRAN (R 4.1.0)
P fs 1.5.2 2021-12-08 [?] CRAN (R 4.1.0)
P future 1.23.0 2021-10-31 [?] CRAN (R 4.1.0)
P future.apply 1.8.1 2021-08-10 [?] CRAN (R 4.1.0)
P generics 0.1.1 2021-10-25 [?] CRAN (R 4.1.0)
GenomeInfoDb * 1.30.1 2022-01-30 [1] Bioconductor
P GenomeInfoDbData 1.2.7 2021-12-21 [?] Bioconductor
P GenomicAlignments 1.30.0 2021-10-26 [?] Bioconductor
P GenomicFeatures 1.46.3 2021-12-30 [?] Bioconductor
P GenomicRanges * 1.46.1 2021-11-18 [?] Bioconductor
P getPass 0.2-2 2017-07-21 [?] CRAN (R 4.0.2)
P ggbeeswarm 0.6.0 2017-08-07 [?] CRAN (R 4.1.0)
P ggforce 0.3.3 2021-03-05 [?] CRAN (R 4.1.0)
P ggplot2 * 3.3.5 2021-06-25 [?] CRAN (R 4.0.2)
P ggraph * 2.0.5 2021-02-23 [?] CRAN (R 4.1.0)
P ggrepel 0.9.1 2021-01-15 [?] CRAN (R 4.1.0)
P ggridges 0.5.3 2021-01-08 [?] CRAN (R 4.1.0)
P git2r 0.29.0 2021-11-22 [?] CRAN (R 4.1.0)
P glmGamPoi * 1.6.0 2021-10-26 [?] Bioconductor
P globals 0.14.0 2020-11-22 [?] CRAN (R 4.0.2)
P glue * 1.6.0 2021-12-17 [?] CRAN (R 4.1.0)
P goftest 1.2-3 2021-10-07 [?] CRAN (R 4.1.0)
P graphlayouts 0.8.0 2022-01-03 [?] CRAN (R 4.1.0)
P gridExtra 2.3 2017-09-09 [?] CRAN (R 4.1.0)
P gtable 0.3.0 2019-03-25 [?] CRAN (R 4.1.0)
P haven 2.4.3 2021-08-04 [?] CRAN (R 4.1.0)
P HDF5Array 1.22.1 2021-11-14 [?] Bioconductor
P here * 1.0.1 2020-12-13 [?] CRAN (R 4.0.2)
P highr 0.9 2021-04-16 [?] CRAN (R 4.1.0)
P hms 1.1.1 2021-09-26 [?] CRAN (R 4.1.0)
P htmltools 0.5.2 2021-08-25 [?] CRAN (R 4.1.0)
P htmlwidgets 1.5.4 2021-09-08 [?] CRAN (R 4.1.0)
P httpuv 1.6.5 2022-01-05 [?] CRAN (R 4.1.0)
P httr 1.4.2 2020-07-20 [?] CRAN (R 4.1.0)
P ica 1.0-2 2018-05-24 [?] CRAN (R 4.1.0)
P igraph 1.2.11 2022-01-04 [?] CRAN (R 4.1.0)
P IRanges * 2.28.0 2021-10-26 [?] Bioconductor
P irlba 2.3.5 2021-12-06 [?] CRAN (R 4.1.0)
P jquerylib 0.1.4 2021-04-26 [?] CRAN (R 4.1.0)
P jsonlite 1.7.2 2020-12-09 [?] CRAN (R 4.0.2)
P KEGGREST 1.34.0 2021-10-26 [?] Bioconductor
P KernSmooth 2.23-20 2021-05-03 [?] CRAN (R 4.1.0)
P knitr 1.37 2021-12-16 [?] CRAN (R 4.1.0)
P labeling 0.4.2 2020-10-20 [?] CRAN (R 4.0.2)
P later 1.3.0 2021-08-18 [?] CRAN (R 4.1.0)
P lattice 0.20-45 2021-09-22 [?] CRAN (R 4.1.0)
P lazyeval 0.2.2 2019-03-15 [?] CRAN (R 4.1.0)
P leiden 0.3.9 2021-07-27 [?] CRAN (R 4.1.0)
P lifecycle 1.0.1 2021-09-24 [?] CRAN (R 4.1.0)
P limma 3.50.0 2021-10-26 [?] Bioconductor
P listenv 0.8.0 2019-12-05 [?] CRAN (R 4.1.0)
P lmtest 0.9-39 2021-11-07 [?] CRAN (R 4.1.0)
P locfit 1.5-9.4 2020-03-25 [?] CRAN (R 4.1.0)
P lubridate 1.8.0 2021-10-07 [?] CRAN (R 4.1.0)
P magrittr 2.0.1 2020-11-17 [?] CRAN (R 4.0.2)
P MASS 7.3-53.1 2021-02-12 [?] CRAN (R 4.0.2)
P Matrix 1.4-0 2021-12-08 [?] CRAN (R 4.1.0)
P MatrixGenerics * 1.6.0 2021-10-26 [?] Bioconductor
P matrixStats * 0.61.0 2021-09-17 [?] CRAN (R 4.1.0)
P memoise 2.0.1 2021-11-26 [?] CRAN (R 4.1.0)
P metapod 1.2.0 2021-10-26 [?] Bioconductor
P mgcv 1.8-38 2021-10-06 [?] CRAN (R 4.1.0)
P mime 0.12 2021-09-28 [?] CRAN (R 4.1.0)
P miniUI 0.1.1.1 2018-05-18 [?] CRAN (R 4.1.0)
P modelr 0.1.8 2020-05-19 [?] CRAN (R 4.0.2)
P msigdbr * 7.4.1 2021-05-05 [?] CRAN (R 4.1.0)
P munsell 0.5.0 2018-06-12 [?] CRAN (R 4.1.0)
P nlme 3.1-153 2021-09-07 [?] CRAN (R 4.1.0)
P parallelly 1.30.0 2021-12-17 [?] CRAN (R 4.1.0)
P patchwork * 1.1.1 2020-12-17 [?] CRAN (R 4.0.2)
P pbapply 1.5-0 2021-09-16 [?] CRAN (R 4.1.0)
P pillar 1.6.4 2021-10-18 [?] CRAN (R 4.1.0)
P pkgconfig 2.0.3 2019-09-22 [?] CRAN (R 4.1.0)
P plotly 4.10.0 2021-10-09 [?] CRAN (R 4.1.0)
P plyr 1.8.6 2020-03-03 [?] CRAN (R 4.0.2)
P png 0.1-7 2013-12-03 [?] CRAN (R 4.1.0)
P polyclip 1.10-0 2019-03-14 [?] CRAN (R 4.1.0)
P prettyunits 1.1.1 2020-01-24 [?] CRAN (R 4.0.2)
P processx 3.5.2 2021-04-30 [?] CRAN (R 4.1.0)
P progress 1.2.2 2019-05-16 [?] CRAN (R 4.1.0)
P promises 1.2.0.1 2021-02-11 [?] CRAN (R 4.0.2)
P ProtGenerics 1.26.0 2021-10-26 [?] Bioconductor
P ps 1.6.0 2021-02-28 [?] CRAN (R 4.1.0)
P purrr * 0.3.4 2020-04-17 [?] CRAN (R 4.0.2)
P R.methodsS3 1.8.1 2020-08-26 [?] CRAN (R 4.0.2)
P R.oo 1.24.0 2020-08-26 [?] CRAN (R 4.0.2)
P R.utils 2.11.0 2021-09-26 [?] CRAN (R 4.1.0)
P R6 2.5.1 2021-08-19 [?] CRAN (R 4.1.0)
P RANN 2.6.1 2019-01-08 [?] CRAN (R 4.1.0)
P rappdirs 0.3.3 2021-01-31 [?] CRAN (R 4.0.2)
P RColorBrewer 1.1-2 2014-12-07 [?] CRAN (R 4.0.2)
P Rcpp 1.0.7 2021-07-07 [?] CRAN (R 4.1.0)
P RcppAnnoy 0.0.19 2021-07-30 [?] CRAN (R 4.1.0)
RCurl 1.98-1.6 2022-02-08 [1] CRAN (R 4.1.0)
P readr * 2.1.1 2021-11-30 [?] CRAN (R 4.1.0)
P readxl 1.3.1 2019-03-13 [?] CRAN (R 4.1.0)
P renv 0.15.0-14 2022-01-10 [?] Github (rstudio/renv@a3b90eb)
P reprex 2.0.1 2021-08-05 [?] CRAN (R 4.1.0)
P reshape2 1.4.4 2020-04-09 [?] CRAN (R 4.1.0)
P restfulr 0.0.13 2017-08-06 [?] CRAN (R 4.1.0)
P reticulate 1.22 2021-09-17 [?] CRAN (R 4.1.0)
P rhdf5 2.38.0 2021-10-26 [?] Bioconductor
P rhdf5filters 1.6.0 2021-10-26 [?] Bioconductor
P Rhdf5lib 1.16.0 2021-10-26 [?] Bioconductor
P rjson 0.2.21 2022-01-09 [?] CRAN (R 4.1.0)
P rlang 0.4.12 2021-10-18 [?] CRAN (R 4.1.0)
P rmarkdown 2.11 2021-09-14 [?] CRAN (R 4.1.0)
P ROCR 1.0-11 2020-05-02 [?] CRAN (R 4.1.0)
P rpart 4.1-15 2019-04-12 [?] CRAN (R 4.1.0)
P rprojroot 2.0.2 2020-11-15 [?] CRAN (R 4.0.2)
P Rsamtools 2.10.0 2021-10-26 [?] Bioconductor
P RSpectra 0.16-0 2019-12-01 [?] CRAN (R 4.1.0)
P RSQLite 2.2.9 2021-12-06 [?] CRAN (R 4.1.0)
P rstudioapi 0.13 2020-11-12 [?] CRAN (R 4.0.2)
P rsvd 1.0.5 2021-04-16 [?] CRAN (R 4.1.0)
P rtracklayer 1.54.0 2021-10-26 [?] Bioconductor
P Rtsne 0.15 2018-11-10 [?] CRAN (R 4.1.0)
P rvest 1.0.2 2021-10-16 [?] CRAN (R 4.1.0)
P S4Vectors * 0.32.3 2021-11-21 [?] Bioconductor
P sass 0.4.0 2021-05-12 [?] CRAN (R 4.1.0)
P ScaledMatrix 1.2.0 2021-10-26 [?] Bioconductor
P scales * 1.1.1 2020-05-11 [?] CRAN (R 4.0.2)
P scater * 1.22.0 2021-10-26 [?] Bioconductor
P scattermore 0.7 2020-11-24 [?] CRAN (R 4.1.0)
P scran * 1.22.1 2021-11-14 [?] Bioconductor
P sctransform 0.3.3 2022-01-13 [?] CRAN (R 4.1.0)
P scuttle * 1.4.0 2021-10-26 [?] Bioconductor
P sessioninfo 1.2.2 2021-12-06 [?] CRAN (R 4.1.0)
P Seurat * 4.0.6 2021-12-16 [?] CRAN (R 4.1.0)
P SeuratObject * 4.0.4 2021-11-23 [?] CRAN (R 4.1.0)
P shiny 1.7.1 2021-10-02 [?] CRAN (R 4.1.0)
P SingleCellExperiment * 1.16.0 2021-10-26 [?] Bioconductor
P sparseMatrixStats 1.6.0 2021-10-26 [?] Bioconductor
P spatstat.core 2.3-2 2021-11-26 [?] CRAN (R 4.1.0)
P spatstat.data 2.1-2 2021-12-17 [?] CRAN (R 4.1.0)
P spatstat.geom 2.3-1 2021-12-10 [?] CRAN (R 4.1.0)
P spatstat.sparse 2.1-0 2021-12-17 [?] CRAN (R 4.1.0)
P spatstat.utils 2.3-0 2021-12-12 [?] CRAN (R 4.1.0)
P statmod 1.4.36 2021-05-10 [?] CRAN (R 4.1.0)
P stringi 1.7.6 2021-11-29 [?] CRAN (R 4.1.0)
P stringr * 1.4.0 2019-02-10 [?] CRAN (R 4.0.2)
P SummarizedExperiment * 1.24.0 2021-10-26 [?] Bioconductor
P survival 3.2-13 2021-08-24 [?] CRAN (R 4.1.0)
P tensor 1.5 2012-05-05 [?] CRAN (R 4.1.0)
P tibble * 3.1.6 2021-11-07 [?] CRAN (R 4.1.0)
P tidygraph 1.2.0 2020-05-12 [?] CRAN (R 4.0.2)
P tidyr * 1.1.4 2021-09-27 [?] CRAN (R 4.1.0)
P tidyselect 1.1.1 2021-04-30 [?] CRAN (R 4.1.0)
P tidyverse * 1.3.1 2021-04-15 [?] CRAN (R 4.1.0)
P tweenr 1.0.2 2021-03-23 [?] CRAN (R 4.1.0)
P tzdb 0.2.0 2021-10-27 [?] CRAN (R 4.1.0)
P utf8 1.2.2 2021-07-24 [?] CRAN (R 4.1.0)
P uwot 0.1.11 2021-12-02 [?] CRAN (R 4.1.0)
P vctrs 0.3.8 2021-04-29 [?] CRAN (R 4.0.2)
P vipor 0.4.5 2017-03-22 [?] CRAN (R 4.1.0)
P viridis 0.6.2 2021-10-13 [?] CRAN (R 4.1.0)
P viridisLite 0.4.0 2021-04-13 [?] CRAN (R 4.0.2)
P vroom 1.5.7 2021-11-30 [?] CRAN (R 4.1.0)
P whisker 0.4 2019-08-28 [?] CRAN (R 4.0.2)
P withr 2.4.3 2021-11-30 [?] CRAN (R 4.1.0)
P workflowr * 1.7.0 2021-12-21 [?] CRAN (R 4.1.0)
P xfun 0.29 2021-12-14 [?] CRAN (R 4.1.0)
P XML 3.99-0.8 2021-09-17 [?] CRAN (R 4.1.0)
P xml2 1.3.3 2021-11-30 [?] CRAN (R 4.1.0)
P xtable 1.8-4 2019-04-21 [?] CRAN (R 4.1.0)
P XVector 0.34.0 2021-10-26 [?] Bioconductor
P yaml 2.2.1 2020-02-01 [?] CRAN (R 4.0.2)
P zlibbioc 1.40.0 2021-10-26 [?] Bioconductor
P zoo 1.8-9 2021-03-09 [?] CRAN (R 4.1.0)
[1] /oshlack_lab/jovana.maksimovic/projects/MCRI/melanie.neeland/paed-cf-cite-seq/renv/library/R-4.1/x86_64-pc-linux-gnu
[2] /config/binaries/R/4.1.0/lib64/R/library
P ── Loaded and on-disk path mismatch.
──────────────────────────────────────────────────────────────────────────────
sessionInfo()
R version 4.1.0 (2021-05-18)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)
Matrix products: default
BLAS: /config/binaries/R/4.1.0/lib64/R/lib/libRblas.so
LAPACK: /config/binaries/R/4.1.0/lib64/R/lib/libRlapack.so
locale:
[1] LC_CTYPE=en_AU.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_AU.UTF-8 LC_COLLATE=en_AU.UTF-8
[5] LC_MONETARY=en_AU.UTF-8 LC_MESSAGES=en_AU.UTF-8
[7] LC_PAPER=en_AU.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_AU.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats4 stats graphics grDevices datasets utils methods
[8] base
other attached packages:
[1] msigdbr_7.4.1 BiocParallel_1.28.3
[3] glmGamPoi_1.6.0 clustree_0.4.4
[5] ggraph_2.0.5 patchwork_1.1.1
[7] scales_1.1.1 SeuratObject_4.0.4
[9] Seurat_4.0.6 scater_1.22.0
[11] scran_1.22.1 scuttle_1.4.0
[13] DropletUtils_1.14.1 SingleCellExperiment_1.16.0
[15] SummarizedExperiment_1.24.0 Biobase_2.54.0
[17] GenomicRanges_1.46.1 GenomeInfoDb_1.30.1
[19] IRanges_2.28.0 S4Vectors_0.32.3
[21] BiocGenerics_0.40.0 MatrixGenerics_1.6.0
[23] matrixStats_0.61.0 glue_1.6.0
[25] here_1.0.1 forcats_0.5.1
[27] stringr_1.4.0 dplyr_1.0.7
[29] purrr_0.3.4 readr_2.1.1
[31] tidyr_1.1.4 tibble_3.1.6
[33] ggplot2_3.3.5 tidyverse_1.3.1
[35] BiocStyle_2.22.0 workflowr_1.7.0
loaded via a namespace (and not attached):
[1] rappdirs_0.3.3 rtracklayer_1.54.0
[3] scattermore_0.7 R.methodsS3_1.8.1
[5] bit64_4.0.5 knitr_1.37
[7] irlba_2.3.5 DelayedArray_0.20.0
[9] R.utils_2.11.0 data.table_1.14.2
[11] rpart_4.1-15 AnnotationFilter_1.18.0
[13] KEGGREST_1.34.0 RCurl_1.98-1.6
[15] generics_0.1.1 GenomicFeatures_1.46.3
[17] ScaledMatrix_1.2.0 callr_3.7.0
[19] cowplot_1.1.1 RSQLite_2.2.9
[21] RANN_2.6.1 future_1.23.0
[23] bit_4.0.4 tzdb_0.2.0
[25] spatstat.data_2.1-2 xml2_1.3.3
[27] lubridate_1.8.0 httpuv_1.6.5
[29] assertthat_0.2.1 viridis_0.6.2
[31] xfun_0.29 hms_1.1.1
[33] jquerylib_0.1.4 babelgene_21.4
[35] evaluate_0.14 promises_1.2.0.1
[37] progress_1.2.2 restfulr_0.0.13
[39] fansi_1.0.0 dbplyr_2.1.1
[41] readxl_1.3.1 igraph_1.2.11
[43] DBI_1.1.2 htmlwidgets_1.5.4
[45] spatstat.geom_2.3-1 ellipsis_0.3.2
[47] RSpectra_0.16-0 backports_1.4.1
[49] bookdown_0.24 biomaRt_2.50.1
[51] deldir_1.0-6 sparseMatrixStats_1.6.0
[53] vctrs_0.3.8 ensembldb_2.18.2
[55] ROCR_1.0-11 abind_1.4-5
[57] cachem_1.0.6 withr_2.4.3
[59] ggforce_0.3.3 vroom_1.5.7
[61] checkmate_2.0.0 sctransform_0.3.3
[63] GenomicAlignments_1.30.0 prettyunits_1.1.1
[65] goftest_1.2-3 cluster_2.1.2
[67] lazyeval_0.2.2 crayon_1.4.2
[69] labeling_0.4.2 edgeR_3.36.0
[71] pkgconfig_2.0.3 tweenr_1.0.2
[73] ProtGenerics_1.26.0 nlme_3.1-153
[75] vipor_0.4.5 rlang_0.4.12
[77] globals_0.14.0 lifecycle_1.0.1
[79] miniUI_0.1.1.1 filelock_1.0.2
[81] BiocFileCache_2.2.0 modelr_0.1.8
[83] rsvd_1.0.5 cellranger_1.1.0
[85] rprojroot_2.0.2 polyclip_1.10-0
[87] lmtest_0.9-39 Matrix_1.4-0
[89] Rhdf5lib_1.16.0 zoo_1.8-9
[91] reprex_2.0.1 beeswarm_0.4.0
[93] whisker_0.4 ggridges_0.5.3
[95] processx_3.5.2 rjson_0.2.21
[97] png_0.1-7 viridisLite_0.4.0
[99] bitops_1.0-7 getPass_0.2-2
[101] R.oo_1.24.0 KernSmooth_2.23-20
[103] rhdf5filters_1.6.0 Biostrings_2.62.0
[105] blob_1.2.2 DelayedMatrixStats_1.16.0
[107] parallelly_1.30.0 beachmat_2.10.0
[109] memoise_2.0.1 magrittr_2.0.1
[111] plyr_1.8.6 ica_1.0-2
[113] zlibbioc_1.40.0 compiler_4.1.0
[115] BiocIO_1.4.0 dqrng_0.3.0
[117] RColorBrewer_1.1-2 fitdistrplus_1.1-6
[119] Rsamtools_2.10.0 cli_3.1.0
[121] XVector_0.34.0 listenv_0.8.0
[123] pbapply_1.5-0 ps_1.6.0
[125] MASS_7.3-53.1 mgcv_1.8-38
[127] tidyselect_1.1.1 stringi_1.7.6
[129] highr_0.9 yaml_2.2.1
[131] BiocSingular_1.10.0 locfit_1.5-9.4
[133] ggrepel_0.9.1 grid_4.1.0
[135] sass_0.4.0 tools_4.1.0
[137] future.apply_1.8.1 parallel_4.1.0
[139] rstudioapi_0.13 bluster_1.4.0
[141] git2r_0.29.0 metapod_1.2.0
[143] gridExtra_2.3 farver_2.1.0
[145] Rtsne_0.15 digest_0.6.29
[147] BiocManager_1.30.16 shiny_1.7.1
[149] Rcpp_1.0.7 broom_0.7.11
[151] later_1.3.0 RcppAnnoy_0.0.19
[153] AnnotationDbi_1.56.2 httr_1.4.2
[155] colorspace_2.0-2 XML_3.99-0.8
[157] rvest_1.0.2 fs_1.5.2
[159] tensor_1.5 reticulate_1.22
[161] splines_4.1.0 uwot_0.1.11
[163] statmod_1.4.36 spatstat.utils_2.3-0
[165] graphlayouts_0.8.0 renv_0.15.0-14
[167] sessioninfo_1.2.2 plotly_4.10.0
[169] xtable_1.8-4 jsonlite_1.7.2
[171] tidygraph_1.2.0 R6_2.5.1
[173] pillar_1.6.4 htmltools_0.5.2
[175] mime_0.12 fastmap_1.1.0
[177] BiocNeighbors_1.12.0 codetools_0.2-18
[179] utf8_1.2.2 lattice_0.20-45
[181] bslib_0.3.1 spatstat.sparse_2.1-0
[183] curl_4.3.2 ggbeeswarm_0.6.0
[185] leiden_0.3.9 survival_3.2-13
[187] limma_3.50.0 rmarkdown_2.11
[189] munsell_0.5.0 rhdf5_2.38.0
[191] GenomeInfoDbData_1.2.7 HDF5Array_1.22.1
[193] haven_2.4.3 reshape2_1.4.4
[195] gtable_0.3.0 spatstat.core_2.3-2
This is consistent with the use of UMI counts rather than read counts, as each transcript molecule can only produce one UMI count but can yield many reads after fragmentation.↩︎