suppressPackageStartupMessages({
library(tidyverse)
library(Seurat)
library(magrittr)
library(dplyr)
library(purrr)
library(ggplot2)
library(here)
library(runSeurat3)
library(ggsci)
})
Merge human LN stromal cells
load packages
set dir
<- here()
basedir <- read_tsv(paste0(basedir, "/data/metadataStroma.txt"), col_names = T) metaDat
load and assign samples
<- function(smpNam, basedirSmp, smpPat, smpGrp, smpOri,
assignSamples
smpImm, smpVDJ){<- list.files(path = paste0(basedirSmp, "/data/stroma/"),
smpNamFull pattern = paste0(smpNam, ".*_seurat.rds"))
<- readRDS(paste0(basedirSmp, "/data/stroma/", smpNamFull))
seuratSmp $patient <- smpPat
seuratSmp$cond <- smpGrp
seuratSmp$origin <- smpOri
seuratSmp$immCell <- smpImm
seuratSmp$vdj <- smpVDJ
seuratSmpreturn(seuratSmp)
}
####################################################################
for(i in 1:length(metaDat$dataset)){
<- assignSamples(smpNam = metaDat$dataset[i],
seuratX basedirSmp = basedir,
smpPat = metaDat$patient[i],
smpGrp = metaDat$cond[i],
smpOri = metaDat$origin[i],
smpImm = metaDat$immuneCells[i],
smpVDJ = metaDat$VDJ[i])
if(exists("seurat")){
<- merge(x = seurat, y = seuratX, project = "LymphNode_FSC")
seurat else{
}<- seuratX
seurat
}
}
remove(seuratX)
filter cells
dim(seurat)
[1] 36098 129116
## reprocess
<- c(0.8,0.6,0.4,0.25)
res
<- NormalizeData(object = seurat)
seurat <- FindVariableFeatures(object = seurat)
seurat <- ScaleData(object = seurat, verbose = FALSE)
seurat <- RunPCA(object = seurat, npcs = 30, verbose = FALSE)
seurat <- RunTSNE(object = seurat, reduction = "pca", dims = 1:20)
seurat <- RunUMAP(object = seurat, reduction = "pca", dims = 1:20)
seurat <- FindNeighbors(object = seurat, reduction = "pca",
seurat dims = 1:20)
for (i in 1:length(res)) {
<- FindClusters(object = seurat, resolution = res[i],
seurat random.seed = 1234)
}
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 129116
Number of edges: 4228551
Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9118
Number of communities: 32
Elapsed time: 51 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 129116
Number of edges: 4228551
Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9228
Number of communities: 29
Elapsed time: 63 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 129116
Number of edges: 4228551
Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9379
Number of communities: 23
Elapsed time: 74 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 129116
Number of edges: 4228551
Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9531
Number of communities: 19
Elapsed time: 76 seconds
## remove cluster with high expression of CD3E, PTPRC, CD79A (b + T cells)
## remove cluster with high expression of LTF, KRTs, S100A.. ()
## remove cluster with high expression of PLP1, NRXN1, MPZ.. (Neurons)
<- subset(seurat, RNA_snn_res.0.25 %in% c("6", "9", "10", "12",
seurat "13","16"), invert = T)
dim(seurat)
[1] 36098 117137
## reprocess
<- c(0.8,0.6,0.4,0.25)
res
<- NormalizeData(object = seurat)
seurat <- FindVariableFeatures(object = seurat)
seurat <- ScaleData(object = seurat, verbose = FALSE)
seurat <- RunPCA(object = seurat, npcs = 30, verbose = FALSE)
seurat <- RunTSNE(object = seurat, reduction = "pca", dims = 1:20)
seurat <- RunUMAP(object = seurat, reduction = "pca", dims = 1:20)
seurat <- FindNeighbors(object = seurat, reduction = "pca",
seurat dims = 1:20)
for (i in 1:length(res)) {
<- FindClusters(object = seurat, resolution = res[i],
seurat random.seed = 1234)
}
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 117137
Number of edges: 3719822
Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9061
Number of communities: 27
Elapsed time: 42 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 117137
Number of edges: 3719822
Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9176
Number of communities: 24
Elapsed time: 46 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 117137
Number of edges: 3719822
Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9329
Number of communities: 19
Elapsed time: 49 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
Number of nodes: 117137
Number of edges: 3719822
Running Louvain algorithm...
Maximum modularity in 10 random starts: 0.9473
Number of communities: 14
Elapsed time: 53 seconds
visualize data
clustering
<- c(pal_nejm()(8),pal_futurama()(12))[1:length(levels(seurat))]
colPal names(colPal) <- levels(seurat)
## visualize input data
DimPlot(seurat, reduction = "umap", cols=colPal)+
theme_bw() +
theme(axis.text = element_blank(), axis.ticks = element_blank(),
panel.grid.minor = element_blank()) +
xlab("UMAP1") +
ylab("UMAP2")
patient
<- c(pal_jco()(10),pal_futurama()(12))[1:length(unique(seurat$patient))]
colPat names(colPat) <- unique(seurat$patient)
## visualize input data
DimPlot(seurat, reduction = "umap", cols=colPat, group.by = "patient")+
theme_bw() +
theme(axis.text = element_blank(), axis.ticks = element_blank(),
panel.grid.minor = element_blank()) +
xlab("UMAP1") +
ylab("UMAP2")
condition
<- pal_igv()(length(unique(seurat$cond)))
colCond names(colCond) <- unique(seurat$cond)
## visualize input data
DimPlot(seurat, reduction = "umap", cols=colCond, group.by = "cond")+
theme_bw() +
theme(axis.text = element_blank(), axis.ticks = element_blank(),
panel.grid.minor = element_blank()) +
xlab("UMAP1") +
ylab("UMAP2")
origin
<- pal_aaas()(length(unique(seurat$origin)))
colOrig names(colCond) <- unique(seurat$cond)
## visualize input data
DimPlot(seurat, reduction = "umap", cols=colOrig, group.by = "origin")+
theme_bw() +
theme(axis.text = element_blank(), axis.ticks = element_blank(),
panel.grid.minor = element_blank()) +
xlab("UMAP1") +
ylab("UMAP2")
save seurat object
saveRDS(seurat, file=paste0(basedir, "/data/AllPatCM_LNFSCMerged_seurat.rds"))
session info
sessionInfo()
R version 4.3.0 (2023-04-21)
Platform: x86_64-apple-darwin20 (64-bit)
Running under: macOS Ventura 13.4.1
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-x86_64/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: Europe/Berlin
tzcode source: internal
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] ggsci_3.0.1 runSeurat3_0.1.0 here_1.0.1 magrittr_2.0.3 Seurat_5.0.2
[6] SeuratObject_5.0.1 sp_2.1-3 lubridate_1.9.3 forcats_1.0.0 stringr_1.5.1
[11] dplyr_1.1.4 purrr_1.0.2 readr_2.1.5 tidyr_1.3.1 tibble_3.2.1
[16] ggplot2_3.5.0 tidyverse_2.0.0
loaded via a namespace (and not attached):
[1] RColorBrewer_1.1-3 rstudioapi_0.15.0 jsonlite_1.8.8
[4] spatstat.utils_3.0-4 farver_2.1.1 rmarkdown_2.26
[7] zlibbioc_1.46.0 vctrs_0.6.5 ROCR_1.0-11
[10] spatstat.explore_3.2-6 RCurl_1.98-1.14 S4Arrays_1.0.6
[13] htmltools_0.5.7 sctransform_0.4.1 parallelly_1.37.1
[16] KernSmooth_2.23-22 htmlwidgets_1.6.4 ica_1.0-3
[19] plyr_1.8.9 plotly_4.10.4 zoo_1.8-12
[22] igraph_2.0.2 mime_0.12 lifecycle_1.0.4
[25] pkgconfig_2.0.3 Matrix_1.6-5 R6_2.5.1
[28] fastmap_1.1.1 GenomeInfoDbData_1.2.10 MatrixGenerics_1.12.3
[31] fitdistrplus_1.1-11 future_1.33.1 shiny_1.8.0
[34] digest_0.6.34 colorspace_2.1-0 S4Vectors_0.40.1
[37] patchwork_1.2.0 rprojroot_2.0.4 tensor_1.5
[40] RSpectra_0.16-1 irlba_2.3.5.1 GenomicRanges_1.52.1
[43] labeling_0.4.3 progressr_0.14.0 fansi_1.0.6
[46] spatstat.sparse_3.0-3 timechange_0.3.0 httr_1.4.7
[49] polyclip_1.10-6 abind_1.4-5 compiler_4.3.0
[52] bit64_4.0.5 withr_3.0.0 fastDummies_1.7.3
[55] MASS_7.3-60.0.1 DelayedArray_0.26.7 tools_4.3.0
[58] lmtest_0.9-40 httpuv_1.6.14 future.apply_1.11.1
[61] goftest_1.2-3 glue_1.7.0 nlme_3.1-164
[64] promises_1.2.1 grid_4.3.0 Rtsne_0.17
[67] cluster_2.1.6 reshape2_1.4.4 generics_0.1.3
[70] gtable_0.3.4 spatstat.data_3.0-4 tzdb_0.4.0
[73] data.table_1.15.2 hms_1.1.3 XVector_0.40.0
[76] utf8_1.2.4 BiocGenerics_0.48.0 spatstat.geom_3.2-9
[79] RcppAnnoy_0.0.22 ggrepel_0.9.5 RANN_2.6.1
[82] pillar_1.9.0 vroom_1.6.5 spam_2.10-0
[85] RcppHNSW_0.6.0 later_1.3.2 splines_4.3.0
[88] lattice_0.22-5 bit_4.0.5 survival_3.5-8
[91] deldir_2.0-4 tidyselect_1.2.0 SingleCellExperiment_1.22.0
[94] miniUI_0.1.1.1 pbapply_1.7-2 knitr_1.45
[97] gridExtra_2.3 IRanges_2.36.0 SummarizedExperiment_1.30.2
[100] scattermore_1.2 stats4_4.3.0 xfun_0.42
[103] Biobase_2.60.0 matrixStats_1.2.0 pheatmap_1.0.12
[106] stringi_1.8.3 lazyeval_0.2.2 yaml_2.3.8
[109] evaluate_0.23 codetools_0.2-19 cli_3.6.2
[112] uwot_0.1.16 xtable_1.8-4 reticulate_1.35.0
[115] munsell_0.5.0 GenomeInfoDb_1.36.4 Rcpp_1.0.12
[118] globals_0.16.2 spatstat.random_3.2-3 png_0.1-8
[121] parallel_4.3.0 ellipsis_0.3.2 dotCall64_1.1-1
[124] bitops_1.0-7 listenv_0.9.1 viridisLite_0.4.2
[127] scales_1.3.0 ggridges_0.5.6 crayon_1.5.2
[130] leiden_0.4.3.1 rlang_1.1.3 cowplot_1.1.3
date()
[1] "Thu Mar 14 00:21:48 2024"