本文首發于我的個人博客, http://xuzhougeng.top/
往期回顧:
- 使用ArchR分析單細胞ATAC-seq數據(第一章)
- 使用ArchR分析單細胞ATAC-seq數據(第二章)
- 使用ArchR分析單細胞ATAC-seq數據(第三章)
- 使用ArchR分析單細胞ATAC-seq數據(第四章)
第5章: 使用ArchR聚類
大部分單細胞聚類算法都在降維后空間中計算最近鄰圖,然后鑒定"社區"或者細胞聚類。這些方法效果表現都特別出色,已經是scRNA-seq的標準策略,所以ArchR直接使用了目前scRNA-seq包中最佳的聚類算法用來對scATAC-seq數據進行聚類。
5.1 使用Seurat的FindClusters()
函數進行聚類
我們發現Seurat實現的圖聚類方法表現最好,所以在ArchR中,addClusters()
函數本質是上將額外的參數通過...
傳遞給Seurat::FindClusters()
函數,從而得到聚類結果。在分析中,我們發現Seurat::FindClusters()
是一個確定性的聚類算法,也就是相同的輸入總是能得到完全相同的輸出。
projHeme2 <- addClusters(
input = projHeme2,
reducedDims = "IterativeLSI",
method = "Seurat",
name = "Clusters",
resolution = 0.8
)
# 只展示部分信息
# Maximum modularity in 10 random starts: 0.8568
# Number of communities: 11
# Elapsed time: 1 seconds
我們可以使用$
符號來獲取聚類信息,輸出結果是每個細胞對應的cluster
head(projHeme2$Clusters)
# [1] "C10" "C6" "C1" "C2" "C2" "C10"
我們統計下每個cluster的細胞數
table(projHeme2$Clusters)
# C1 C10 C11 C2 C3 C4 C5 C6 C7 C8 C9
# 310 1247 1436 480 323 379 852 1271 677 2550 726
為了更好了解樣本在cluster的分布,我們可以使用confusionMatrix()
函數通過每個樣本創建一個聚類混合矩陣(cluster confusion matrix)
從結果來看,這里的混合矩陣就是統計每個樣本在不同的cluster的分布情況。
cM <- confusionMatrix(paste0(projHeme2$Clusters), paste0(projHeme2$Sample))
cM
文字信息太多,這里直接用熱圖進行展示
library(pheatmap)
cM <- cM / Matrix::rowSums(cM)
p <- pheatmap::pheatmap(
mat = as.matrix(cM),
color = paletteContinuous("whiteBlue"),
border_color = "black"
)
p
混合矩陣
細胞有時在二維嵌入中的相對位置與所識別的聚類并不完全一致。更確切的說,單個聚類中的細胞可能出現在嵌入的多個不同區域中。在這些情況下,可以適當地調整聚類參數或嵌入參數,直到兩者之間達成一致。
5.2 使用scran
聚類
除了Seurat
, ArchR還能夠使用scran進行聚類分析,我們只需要修改addClusters()
中的method
參數即可。
projHeme2 <- addClusters(
input = projHeme2,
reducedDims = "IterativeLSI",
method = "scran",
name = "ScranClusters",
k = 15
)