導(dǎo)讀
前面我們已經(jīng)整合了高質(zhì)量的細胞,現(xiàn)在我們想知道細胞群中存在的不同細胞類型 罐柳,因此下面將進行細胞聚類分析。
學(xué)習(xí)目標
描述評估用于聚類的主成分數(shù)量的方法
根據(jù)重要的主成分對細胞進行聚類
1. 目標
生成特定細胞類型的簇并使用已知細胞類型的標記基因來鑒定簇的身份。
確定簇是否代表真正的細胞類型或是由于生物學(xué)或技術(shù)變異而產(chǎn)生的簇辩稽,例如細胞周期 S 期的細胞簇、特定批次的簇或具有高線粒體含量的細胞簇从媚。
2. 挑戰(zhàn)
- 生物或技術(shù)問題可能會導(dǎo)致鑒定出質(zhì)量差的簇
- 識別每個簇的細胞類型
- 需要保持耐心逞泄,因為這可能在聚類和標記基因識別之間進行重復(fù)(有時甚至?xí)氐?QC 過濾步驟)
3. 推薦
- 在執(zhí)行聚類之前,對您對存在的細胞類型有一個很好的了解拜效。了解您是否期望細胞類型復(fù)雜性較低或線粒體含量較高喷众,以及細胞是否正在分化。
- 如果您有多個條件的數(shù)據(jù)紧憾,執(zhí)行整合步驟通常很有幫助到千。
- 如果需要并且有實驗條件,則回歸
UMI
的數(shù)量(默認情況下使用sctransform
)赴穗、線粒體含量和細胞周期憔四。 - 識別任何無用簇以進行刪除或重新進行QC 過濾。無用簇可能包括那些具有高線粒體含量和低
UMI
/基因的簇般眉。如果由許多細胞組成了赵,則返回利用 QC 過濾掉,然后重新整合/聚類可能會有所幫助甸赃。 - 如果沒有將所有細胞類型檢測為單獨的簇斟览,請嘗試更改分辨率或 PC 數(shù)量。
4. Set up
在開始之前辑奈,創(chuàng)建一個名為 clustering.R
的新腳本苛茂。
接下來,讓我們加載需要的所有庫鸠窗。
# 單細胞聚類
# 加載包
library(Seurat)
library(tidyverse)
library(RCurl)
library(cowplot)
5. PCs 鑒定
為了克服 scRNA-seq
數(shù)據(jù)中任何單個基因表達中的廣泛技術(shù)噪音妓羊,Seurat
根據(jù)從整合的最可變基因的表達中獲得的 PCA
分數(shù)將細胞分配到簇種,每個 PC 基本上代表一個“metagene
”稍计,結(jié)合相關(guān)基因集的信息躁绸。因此,確定要在聚類步驟中包含多少 PC 對于確保我們捕獲數(shù)據(jù)集中存在的大部分變異或細胞類型非常重要臣嚣。
在決定哪些 PC 用于下游聚類分析之前净刮,對 PC 探索很有用。
(a) 探索 PC 的一種方法是使用熱圖來可視化選定 PC 的最多變異基因硅则,其中基因和細胞按 PCA 分數(shù)排序淹父。這里的想法是查看 PC 并確定驅(qū)動它們的基因?qū)τ趨^(qū)分不同的細胞類型是否有意義。
cells
參數(shù)指定用于繪圖的具有最高負或正 PCA 分數(shù)的細胞數(shù)怎虫。
# 利用熱圖探索 PCs
DimHeatmap(seurat_integrated,
dims = 1:9,
cells = 500,
balanced = TRUE)
如果我們想探索大量的PC暑认,這種方法可能會很慢并且難以可視化單個基因困介。同樣,為了探索大量 PC蘸际,我們可以通過驅(qū)動 PC 的 PCA 分數(shù)打印出前 10 個(或更多)陽性和陰性基因座哩。
# 打印出驅(qū)動 PC 的可變基因
print(x = seurat_integrated[["pca"]],
dims = 1:10,
nfeatures = 5)
(b) elbow
圖是確定用于聚類 PC 數(shù)量的另一種有用方法,以便我們捕獲數(shù)據(jù)中的大部分變化粮彤。elbow
圖可視化了每個 PC 的標準偏差根穷,我們正在尋找標準偏差開始穩(wěn)定的位置。本質(zhì)上导坟,elbow
出現(xiàn)的位置通常是識別大部分變化的閾值缠诅。但是,這種方法可能非常主觀乍迄。
讓我們使用前 40 PCs 繪制elbow
圖:
# 繪制 elbow 圖
ElbowPlot(object = seurat_integrated,
ndims = 40)
基于此圖,我們可以通過elbow
出現(xiàn)在 PC8 - PC10 附近的位置粗略確定大部分變化士败,或者有人可能認為應(yīng)該是當數(shù)據(jù)點開始接近 X 軸時闯两,PC為30 左右。這讓我們對需要包含的 PC 數(shù)量有了一個非常粗略的了解谅将,我們可以以更準確的方式提取此處可視化的信息漾狼,這可能更可靠一些。
雖然上述 2 種方法通常與 Seurat
的舊方法一起用于標準化和識別可變基因饥臂,但它們不再像以前那樣重要逊躁。這是因為 SCTransform
方法比舊方法更準確。
- 為什么選擇 PC 對舊方法更重要隅熙?
較舊的方法將一些變異的技術(shù)來源結(jié)合到一些較高的 PC 中稽煤,因此 PC 的選擇更為重要。SCTransform
可以更好地估計方差囚戚,并且不會經(jīng)常在更高的 PC 中包含這些技術(shù)變異來源酵熙。
理論上,使用 SCTransform
驰坊,我們選擇的 PC 越多匾二,執(zhí)行聚類時考慮的變化就越多,但是執(zhí)行聚類需要更長的時間拳芙。因此察藐,對于此分析,我們將使用前 40 PCs 來生成細胞簇舟扎。
6. 聚類
Seurat
使用基于圖的聚類方法分飞,將細胞嵌入到圖結(jié)構(gòu)中,使用 K 近鄰 (KNN) 圖(默認情況下)睹限,在具有相似基因表達模式的細胞之間繪制邊緣浸须。然后惨寿,它試圖將該圖劃分為高度互連的quasi-cliques
”或communities
.
我們將使用 FindClusters()
函數(shù)來執(zhí)行基于圖的聚類。分辨率是設(shè)置下游聚類granularity
的一個重要參數(shù)删窒,需要單獨進行優(yōu)化裂垦。對于 3,000 - 5,000 個細胞的數(shù)據(jù)集,設(shè)置在 0.4-1.4 之間的分辨率通常會產(chǎn)生較好的聚類結(jié)果肌索。增加的分辨率值會導(dǎo)致更多的簇蕉拢,這對于更大的數(shù)據(jù)集通常是必需的。
FindClusters()
函數(shù)允許我們輸入一系列分辨率诚亚,并將計算聚類的granularity
晕换。這對于測試哪個分辨率更合適,非常有幫助站宗,而無需為每個分辨率單獨運行該函數(shù)闸准。
# 確定 K 近鄰圖
seurat_integrated <- FindNeighbors(object = seurat_integrated,
dims = 1:40)
# 確定各種分辨率的簇
seurat_integrated <- FindClusters(object = seurat_integrated,
resolution = c(0.4, 0.6, 0.8, 1.0, 1.4))
如果我們查看 Seurat
對象的元數(shù)據(jù)(seurat_integrated@meta.data),則計算出的每個不同分辨率都有一個單獨的列梢灭。
# 分辨率探索
seurat_integrated@meta.data %>%
View()
開始選擇的分辨率夷家,我們通常會選擇范圍中間的值,例如 0.6 或 0.8敏释。我們將從 0.8 的分辨率開始库快,使用 Idents()
函數(shù)分配簇的標識。
# 分配簇的標識
Idents(object = seurat_integrated) <- "integrated_snn_res.0.8"
為了可視化細胞簇钥顽,有一些不同的降維技術(shù)可能會有所幫助义屏。最流行的方法包括 t-SNE
和 UMAP
技術(shù)。
這兩種方法都旨在將具有相似局部鄰域的細胞從高維空間降至低維空間中蜂大。這些方法將要求您輸入用于可視化的 PCA 維度的數(shù)量闽铐,我們建議使用相同數(shù)量的 PC 作為聚類分析的輸入。在這里奶浦,我們將繼續(xù)使用 UMAP
方法來可視化細胞簇阳啥。
# UMAP的計算
# seurat_integrated <- RunUMAP(seurat_integrated,
# reduction = "pca",
# dims = 1:40)
# UMAP 可視化
DimPlot(seurat_integrated,
reduction = "umap",
label = TRUE,
label.size = 6)
探索其他分辨率也很有用。它將讓您快速了解簇將如何根據(jù)分辨率參數(shù)發(fā)生變化财喳。例如察迟,讓我們切換到 0.4 的分辨率:
# 分配簇的標識
Idents(object = seurat_integrated) <- "integrated_snn_res.0.4"
# UMAP 可視化
DimPlot(seurat_integrated,
reduction = "umap",
label = TRUE,
label.size = 6)
歡迎Star -> 學(xué)習(xí)目錄
國內(nèi)鏈接 -> 學(xué)習(xí)目錄