使用ArchR分析單細(xì)胞ATAC-seq數(shù)據(jù)(第六章)

本文首發(fā)于我的個人博客, http://xuzhougeng.top/

往期回顧:

第6章: 單細(xì)胞嵌入

在ArchR中,類似于UMAP和t-SNE的嵌入方法被用于在降維空間中可視化展示單細(xì)胞數(shù)據(jù)。這些嵌入有各自的優(yōu)勢和缺陷。我們之所以稱它們?yōu)?嵌入"是因為他們只限于對聚類進(jìn)行可視化而非用于鑒定聚類(在LSI子空間中的聚類分析)。UMAP和t-SNE的主要區(qū)別在于對細(xì)胞和聚類間的距離解釋,t-SNE用于保留數(shù)據(jù)的局部結(jié)構(gòu),而UMAP則是保留局部結(jié)構(gòu)的同時盡可能保留全局結(jié)構(gòu)。從理論上來講,UMAP中細(xì)胞聚類間的距離存在意義,而t-SNE則沒有。也就是說,你不能說t-SNE中聚類A比聚類C更接近聚類B,而UMAP在設(shè)計的時候允許這種類型的比較。不過需要注意的是,由于UMAP是新出現(xiàn)的方法,因此使用UMAP的文章才剛剛興起。

需要注意的是,無論是UMAP還是t-SNE,兩個的運行結(jié)果都不是確定性的,也就是相同輸入會得到不完全相同的結(jié)果。盡管如此,我們使用樣本重復(fù)后發(fā)現(xiàn)t-SNE比UMAP更加的隨機。此外,使用uwot包里UMAP時,設(shè)置相同的隨機數(shù)種子會得到相同的結(jié)果。選擇使用UMAP還是t-SNE是有細(xì)微差別的,但在我們手中,UMAP非常適合各種應(yīng)用,這是我們對scATAC seq數(shù)據(jù)的標(biāo)準(zhǔn)選擇。UMAP的性能也比t-SNE快。也許最重要的是,使用UMAP可以創(chuàng)建一個嵌入并將新樣本投影到該嵌入中,而這在t-SNE中是不可能的,因為數(shù)據(jù)的擬合和預(yù)測是同時發(fā)生的。

無論您選擇哪種方法,輸入?yún)?shù)都會對結(jié)果嵌入產(chǎn)生劇烈影響。因此,了解各種輸入?yún)?shù)并調(diào)整這些參數(shù)以最好地滿足您自己的數(shù)據(jù)需要是很重要的。ArchR實現(xiàn)了一組默認(rèn)的輸入?yún)?shù),這些參數(shù)適用于大多數(shù)情況,但實際上沒有一組參數(shù)可以直接套用,我們要根據(jù)不同的細(xì)胞數(shù)、復(fù)雜度和質(zhì)量進(jìn)行調(diào)整。

6.1 Uniform Manifold Approximation and Projection (UMAP)

我們使用addUMAP函數(shù)運行UMAP

projHeme2 <- addUMAP(
    ArchRProj = projHeme2, 
    reducedDims = "IterativeLSI", 
    name = "UMAP", 
    nNeighbors = 30, 
    minDist = 0.5, 
    metric = "cosine"
)

使用@操作符可以從ArchRProject中列出有哪些可用的embedding,如projHeme2@embeddings

我們使用plotEmbedding函數(shù)繪制UMAP圖,設(shè)置embedding="UMAP"。通過修改colorByname來告訴ArchR使用給定哪個元信息矩陣的列對細(xì)胞進(jìn)行上色。p1是按照樣本進(jìn)行上色

p1 <- plotEmbedding(ArchRProj = projHeme2, colorBy = "cellColData", name = "Sample", embedding = "UMAP")

除了根據(jù)"Sample"外,我們還可以根據(jù)上一張鑒定的"Cluster"進(jìn)行上色

p2 <- plotEmbedding(ArchRProj = projHeme2, colorBy = "cellColData", name = "Clusters", embedding = "UMAP")

使用ggAlignPlots將這兩個圖共同展示,"type=h"表示兩個圖是水平排列

ggAlignPlots(p1, p2, type = "h")
UMAP of Seurat

plotPDF()可以將保存圖片的矢量版。

plotPDF(p1,p2, name = "Plot-UMAP-Sample-Clusters.pdf", ArchRProj = projHeme2, addDOC = FALSE, width = 5, height = 5)

我們還可以使用plotEmbedding()可視化之前用scran聚類的結(jié)果

p1 <- plotEmbedding(ArchRProj = projHeme2, colorBy = "cellColData", name = "Sample", embedding = "UMAP")
p2 <- plotEmbedding(ArchRProj = projHeme2, colorBy = "cellColData", name = "ScranClusters", embedding = "UMAP")
ggAlignPlots(p1, p2, type = "h")
UMAP of scran

同樣用plotPDF()可以將保存圖片的矢量版。

plotPDF(p1,p2, name = "Plot-UMAP-Sample-ScranClusters.pdf", ArchRProj = projHeme2, addDOC = FALSE, width = 5, height = 5)

6.2 t-Stocastic Neighbor Embedding (t-SNE)

t-SNE圖可以用addTSNE()函數(shù)運行得到

projHeme2 <- addTSNE(
    ArchRProj = projHeme2, 
    reducedDims = "IterativeLSI", 
    name = "TSNE", 
    perplexity = 30
)

和之前UMAP一樣,我們同樣使用plotEmbedding()繪制t-SNE嵌入圖。這里不需要考慮嵌入的類型,可以繼續(xù)使用之前的colorByname參數(shù)

p1 <- plotEmbedding(ArchRProj = projHeme2, colorBy = "cellColData", name = "Sample", embedding = "TSNE")
p2 <- plotEmbedding(ArchRProj = projHeme2, colorBy = "cellColData", name = "Clusters", embedding = "TSNE")
ggAlignPlots(p1, p2, type = "h")
t-SNE of Seurat

plotPDF()可以將保存圖片的矢量版。

plotPDF(p1,p2, name = "Plot-TSNE-Sample-Clusters.pdf", ArchRProj = projHeme2, addDOC = FALSE, width = 5, height = 5)

和之前UMAP的操作類似,我們可以將scran的結(jié)果和Seurat::FindClusters()的結(jié)果進(jìn)行比較

p1 <- plotEmbedding(ArchRProj = projHeme2, colorBy = "cellColData", name = "Sample", embedding = "TSNE")
p2 <- plotEmbedding(ArchRProj = projHeme2, colorBy = "cellColData", name = "ScranClusters", embedding = "TSNE")
ggAlignPlots(p1, p2, type = "h")
t-SNE of Scran

plotPDF()可以將保存圖片的矢量版。

plotPDF(p1,p2, name = "Plot-tSNE-Sample-ScranClusters.pdf", ArchRProj = projHeme2, addDOC = FALSE, width = 5, height = 5)

6.3 Harmony后降維

在第4章中,我們通過addHarmony調(diào)用Harmony對數(shù)據(jù)進(jìn)行批次校正,創(chuàng)建了一個名為"Harmony"的reducedDims對象。我們通過UMAP或t-SNE對結(jié)果進(jìn)行嵌入可視化,對迭代LSI結(jié)果和Harmony校正結(jié)果進(jìn)行比較,評估Harmony的作用。

保持和之前UMAP嵌入一樣的參數(shù),只修改reducedDims="Harmony"

projHeme2 <- addUMAP(
    ArchRProj = projHeme2, 
    reducedDims = "Harmony", 
    name = "UMAPHarmony", 
    nNeighbors = 30, 
    minDist = 0.5, 
    metric = "cosine"
)
p3 <- plotEmbedding(ArchRProj = projHeme2, colorBy = "cellColData", name = "Sample", embedding = "UMAPHarmony")
p4 <- plotEmbedding(ArchRProj = projHeme2, colorBy = "cellColData", name = "Clusters", embedding = "UMAPHarmony")
ggAlignPlots(p3, p4, type = "h")
UMAP of Harmony

plotPDF()可以將保存圖片的矢量版。

plotPDF(p1,p2,p3,p4, name = "Plot-UMAP2Harmony-Sample-Clusters.pdf", ArchRProj = projHeme2, addDOC = FALSE, width = 5, height = 5)

相同的方法用t-SNE進(jìn)行可視化

projHeme2 <- addTSNE(
    ArchRProj = projHeme2, 
    reducedDims = "Harmony", 
    name = "TSNEHarmony", 
    perplexity = 30
)
p3 <- plotEmbedding(ArchRProj = projHeme2, colorBy = "cellColData", name = "Sample", embedding = "TSNEHarmony")
p4 <- plotEmbedding(ArchRProj = projHeme2, colorBy = "cellColData", name = "Clusters", embedding = "TSNEHarmony")
ggAlignPlots(p3, p4, type = "h")
t-SNE of Harmony

plotPDF()可以將保存圖片的矢量版。

plotPDF(p1,p2,p3,p4, name = "Plot-TSNE2Harmony-Sample-Clusters.pdf", ArchRProj = projHeme2, addDOC = FALSE, width = 5, height = 5)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容