單細胞分析:細胞聚類(十)

導(dǎo)讀

前面我們已經(jīng)整合了高質(zhì)量的細胞,現(xiàn)在我們想知道細胞群中存在的不同細胞類型 ,因此下面將進行細胞聚類分析

全部流程

學(xué)習(xí)目標

  1. 描述評估用于聚類的主成分數(shù)量的方法

  2. 根據(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圖

基于此圖,我們可以通過elbow出現(xiàn)在 PC8 - PC10 附近的位置粗略確定大部分變化,或者有人可能認為應(yīng)該是當(dā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-SNEUMAP 技術(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)
UMAP可視化

探索其他分辨率也很有用。它將讓您快速了解簇將如何根據(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)
UMAP可視化

歡迎Star -> 學(xué)習(xí)目錄

國內(nèi)鏈接 -> 學(xué)習(xí)目錄


?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

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