本文首發于我的個人博客, http://xuzhougeng.top/
往期回顧:
- 使用ArchR分析單細胞ATAC-seq數據(第一章)
- 使用ArchR分析單細胞ATAC-seq數據(第二章)
- 使用ArchR分析單細胞ATAC-seq數據(第三章)
- 使用ArchR分析單細胞ATAC-seq數據(第四章)
- 使用ArchR分析單細胞ATAC-seq數據(第五章)
- 使用ArchR分析單細胞ATAC-seq數據(第六章)
- 使用ArchR分析單細胞ATAC-seq數據(第七章)
- 使用ArchR分析單細胞ATAC-seq數據(第八章)
第9章 ArchR的擬混池重復
因為scATAC-seq數據本質上只有兩種值,也就是說每個位點要么開放要么不開放,所以你會發現某些情況下無法使用單個細胞進行數據分析。此外,許多我們想要做的分析也依賴于重復才能計算統計顯著性。對于單細胞數據,我們通過構建擬混池重復(pseudo-bulk replicates)來解決該問題。所謂的擬混池(pesudo-bulk)指的就是將單細胞進行合并模擬成混池測序的ATAC-seq實驗得到的數據。ArchR為每個目標細胞分組構建多個擬混池樣本,也就得到了擬混池重復。這個模擬過程背后的假設是將單細胞進行合并結果和實際的混池結果非常接近,以至于不需要在乎背后的差異。這些細胞分組通常都是來自于單個細胞類群,或者是一直細胞類型對應的可能聚類。我們這一章會介紹如何使用ArchR生成這些擬混池重復。
9.1 ArchR如何構建擬混池重復
ArchR使用分級優先法(tiered priority approach)構建擬混池重復。使用者定義: i)最小和最大重復數(minReps/maxReps), ii)每個重復的最少和最多細胞數(minCells/maxCells), iii)缺少足夠細胞用于構建足夠重復時的采樣率(Sampling Ratio)。舉個例子,當采樣率等于0.8時,每個重復中80%的細胞來自于無放回抽樣(這會導致重復間出現有放回抽樣)。在這種情況下,多個重復中可能有一些相同的細胞,但是為了能在缺少足夠細胞的分組里得到擬混池重復,這是必要的犧牲。
我們的擬混池重復生成過程可以用如下的決策樹進行描述
流程有些復雜,這里概述下這個流程中的幾個關鍵注意事項。
首先,用戶確定細胞的分組,ArchR通常會稱之為聚類,我們可以在第五章分析分析得到。
其次,對于每一組,ArchR嘗試去創建理想的擬混池重復。所謂理想的擬混池重復,指的是每個重復只有一個樣本構成,這就要求每個樣本得保證足量的細胞數。這樣保證了重復間的樣本多樣性和生物學變異,是ArchR所期望得到的最佳結果,但這一過程實際上會有5種可能的結果,根據ArchR的偏好排序如下
- 數據擁有足夠多的樣本(至少要等于maxRep定義的重復),且每個樣本的細胞數都大于
minCell
, 于是每個樣本都可以作為擬混池重復,每個重復的細胞都來自于同一個樣本。 - 一些樣本的細胞數超過
minCell
,因此能夠單獨形成一個重復。剩下的重復則是通過將余下的細胞進行混合,然后通過無放回抽樣得到。 - 數據里沒有一個樣本的細胞數超過
minCell
, 但是總細胞數超過minCells * minReps
。因此將所有的細胞進行混合,然后進行無放回抽樣,抽樣時不考慮細胞來源。 - 一個細胞分組中的總細胞數低于
minCells * minReps
,但是大于minCells / Sample Ratio
。此時單個樣本的構建采取無放回抽樣,重復間則需要有放回抽樣,降低多個擬混池重復間的相同細胞數。 - 一個細胞分組中的總細胞數低于
minCells / Sample Ratio
。這意味著我們必須在單個重復和跨重復中都采取有放回抽樣策略。這是最糟糕的情況,后續在使用這些擬混池重復做下游分析分析要特別小心。后續可以通過設置ArchR的minCells
參數進行淘汰。
我們使用如下的數據集闡述這一過程
Sample Cluster1 Cluster2 Cluster3 Cluster4 Cluster5
A 800 600 900 100 75
B 1000 50 400 150 25
C 600 900 100 200 50
D 1200 500 50 50 25
E 900 100 50 150 50
F 700 200 100 100 25
我們設置的參數為minRep=3
,maxRep=5
, minCells=300
, maxCells=1000
和sampleRatio=0.8
,也就是最少有3個重復,最多是5個重復,每個重復至少有300個細胞,最多是1000個細胞,當細胞數不滿住要求,抽樣率設置為0.8.
9.1.1 Cluster1
對于Cluster1, 我們的6個樣本(大于maxRep
)的細胞數都高于minCells
(300)。這是最理想的情況,對應上述第一種情況,我們將會得到5個擬混池重復,保證每個重復都來自獨立的樣本。
Rep1 = 800 cells from SampleA
Rep2 = 1000 cells from SampleB
Rep3 = 1000 cells from SampleD
Rep4 = 900 cells from SampleE
Rep5 = 700 cells from SampleF
對于這些重復,我們需要注意兩個事情:(1) 因為我們的樣本數足夠多,能夠保證每個重復都來自獨立的樣本,所以可以淘汰其中細胞數最少的SampleC。(2)由于maxCells
設置為1000,因此最多只能有1000個細胞。
9.1.2 Cluster2
對于Cluster2, 我們有3個樣本的細胞數超過minCells
, 另外3個樣本的細胞數都不夠。這對應上述第二種情況,我們會以如下的方法構建擬混池重復。
Rep1 = 600 cells from SampleA
Rep2 = 900 cells from SampleC
Rep3 = 500 cells from SampleD
Rep4 = 350 cells [50 cells from SampleB + 100 from SampleE + 200 from SampleF]
在這個例子中,Rep4由其他幾個樣本的細胞混合后通過無放回抽樣得到
9.1.3 Cluster3
對于Cluster3,我們只有兩個樣本超過minCells
, 不滿足minReps
。但是如果我們將剩余的樣本的細胞進行混合形成額外的重復,它的細胞數就超過了minCells
。最終我們得到了3個擬混池重復,對應上述的情況3。我們將得到如下重復
Rep1 = 900 cells from SampleA
Rep2 = 400 cells from SampleB
Rep3 = 250 cells [100 cells from SampleC + 50 from SampleD + 50 from SampleE + 50 from SampleF]
和Cluster2類似,Cluster3的Rep3由其他幾個樣本的細胞混合后通過無放回抽樣得到
9.1.4 Cluster4
對于Cluster4,總細胞數是570個,小于minCells * minReps
(900). 在這個情況下,我們無法保證有足夠多的細胞通過無放回抽樣的方式保證每個重復都有最小的細胞數。但是,總的細胞數依舊依舊大于minCells / sampleRatio
(375個細胞),這意味著每個重復中細胞可以來自于無放回抽樣,重復之間的細胞需要放回抽樣。這對應著上述的情況4,我們將得到如下重復
Rep1 = 300 cells [250 unique cells + 25 cells overlapping Rep2 + 25 cells overlapping Rep3]
Rep2 = 300 cells [250 unique cells + 25 cells overlapping Rep1 + 25 cells overlapping Rep3]
Rep3 = 300 cells [250 unique cells + 25 cells overlapping Rep1 + 25 cells overlapping Rep2]
在這個情況中,ArchR會盡可能降低任意兩個擬混池重復的相同細胞。
9.1.5 Cluster5
對于Cluster5,總共是250個細胞,同時小于minCells * minReps
(900)和minCells / sampleRatio
(375). 這意味著每個樣本都需要有放回的抽樣,重復之間也需要有放回抽樣,才能得到擬混池重復。這是上述說到的第5種情況,是其中最糟糕的情況。對于這類擬混池重復,在后續的分析中需要謹慎使用。我們將得到如下的重復:
Rep1 = 300 cells [250 unique cells + 25 cells overlapping Rep2 + 25 cells overlapping Rep3]
Rep2 = 300 cells [250 unique cells + 25 cells overlapping Rep1 + 25 cells overlapping Rep3]
Rep3 = 300 cells [250 unique cells + 25 cells overlapping Rep1 + 25 cells overlapping Rep2]
9.2 構建擬混池重復
通過上一節了解ArchR構建擬混池重復的邏輯后,我們就可以開始實際操作了。在ArchR中,我們通過調用addGroupCoverages()
函數來構建擬混池重復。它的關鍵參數groupBy
,定義了擬混池重復需要使用的分組。這里我們用的是上一章scRNA-seq數據標記的細胞類型,也就是Cluster2
projHeme4 <- addGroupCoverages(ArchRProj = projHeme3, groupBy = "Clusters2")
得到這些擬混池重復后,我們就能從數據中鑒定peak了。就像之前所說的,我們不希望使用所有的細胞鑒定peak,而是單獨根據每一組細胞(例如聚類)單獨鑒定peak,這樣才有可能分析出不同組的特異性peak。這一章得到數據就為后續鑒定peak提供了良好的開始。