Clustree (0.5.0)-聚類(clustering)層次化的好物!

前言

Clustree是一個基於R語言的套件,用於可視化聚類樹 (clustering tree) 的結構和層次。該套件提供了一個簡單而直觀的方式,讓研究人員能直觀探索聚類分析的結果。

如何下載Clustree套件?

在R或者RStudio中執行以下指令便可以安裝clustree套件:

# 下載套件
install.packages("clustree")
# 加載套件
library(clustree)
# 檢查版本
packageVersion("clustree")

範例數據

在這次的範例中,我們將分析來自10X Genomics的周邊血(PBMC)單細胞數據集,這是一個包含2700個單細胞的數據集,採用Illumina NextSeq 500進行测序,原始數據可以在這裡下載

Seurat V4.9.9 – 一個強大的單細胞分析R套件中我們已經了解到單細胞分析的基礎步驟,如下方指令所示:

# 加載套件
library(Seurat)
library(dplyr)
library(patchwork)

# 載入PBMC數據集,需用電腦中的正確路徑,須將"\"更改為"/"
pbmc.data <- Read10X(data.dir = "C:/Users/Administrator/Desktop/hg19")
# 創建Seurat對象
pbmc <- CreateSeuratObject(counts = pbmc.data, project = "pbmc3k", min.cells = 3, min.features = 200)
# 細胞粒線體分析
pbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern = "^MT-")
# 使用小提琴圖將QC指標視覺化
VlnPlot(pbmc, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)
# QC step
pbmc <- subset(pbmc, subset = nFeature_RNA > 200 & nFeature_RNA < 2500 & percent.mt < 5)
# 標準化
pbmc <- NormalizeData(pbmc, normalization.method = "LogNormalize", scale.factor = 10000)
# 選擇高度變異的特徵
pbmc <- FindVariableFeatures(pbmc, selection.method = "vst", nfeatures = 2000)
# 特徵縮放
all.genes <- rownames(pbmc)
pbmc <- ScaleData(pbmc, features = all.genes)
# PCA 降維分析
pbmc <- RunPCA(pbmc, features = VariableFeatures(object = pbmc))
# 確定降維結果
ElbowPlot(pbmc)
# 確定細胞聚集結果
pbmc <- FindNeighbors(pbmc, dims = 1:10)
pbmc <- FindClusters(pbmc, resolution = 0.5)
# 使用UMAP或tSNE聚類
pbmc <- RunUMAP(pbmc, dims = 1:10)
pbmc <- RunTSNE(pbmc, dims = 1:10)
圖例為UMAP結果圖

當執行完標準分析程序後,我們便可以得出上述結果。但是細胞聚類(cluster)並不是一成不變的,它可以是三群、五群、甚至是十群,那我們該如何選擇一個最適當的cluster數量來進行下一步的分析呢?這時候Clustree這個R套件就可以幫忙我們做一個恰當的選擇。

Clustree的使用方式

將clustree套件以library()函數加載入R環境內,並以FindClusters()函數多做幾次聚類,接著以clustree()函數將所有聚類結果顯示出來:

library(clustree)
pbmc <- FindClusters(pbmc, resolution = c(0,0.1,0.5,1,2))
clustree(pbmc@meta.data, prefix = "RNA_snn_res.")

我們可以看到clustree得出的結果,與本文內容中的第二個圖例的結果一致,解析度為0.1時有4種細胞群,解析度為0.5時有9種細胞群,解析度為2時有16種細胞群

到這裡clustree的重點功能便已經教完,如果大家只是想要觀察細胞聚類的變化,分析到這裡其實就已經非常足夠。當然,clustree套件還有很多附屬功能,例如:

1. 查看各個細胞族群的粒線體信息

clustree(pbmc@meta.data, prefix = "RNA_snn_res.", node_colour = "percent.mt", node_colour_aggr = "mean")

2. 添加標識

clustree(pbmc, prefix = "RNA_snn_res.", node_label = "RNA_snn_res.")

3. 查看各細胞群的基因表現量

clustree(pbmc, prefix = "RNA_snn_res.", node_colour = "MS4A1", node_colour_aggr = "median")

4. 將聚類樹疊加到可視化分析結果上

使用clustree_overlay()函數,可以將聚類樹的結構信息疊加在數據的其他可視化分析結果上,以便更好地理解聚類樹與其他維度之間的分佈、集中度或類別等特徵的相關聯。

pbmc <- AddMetaData(pbmc,pbmc@reductions$umap@cell.embeddings, col.name = c("UMAP_1","UMAP_2"))
pbmc <- AddMetaData(pbmc,pbmc@reductions$pca@cell.embeddings, col.name = colnames(pbmc@reductions$pca@cell.embeddings))
clustree_overlay(pbmc, prefix = "RNA_snn_res.", x_value = "UMAP_1", y_value = "UMAP_2")

為分析結果上色:

clustree_overlay(pbmc, prefix = "RNA_snn_res.", x_value = "UMAP_1", y_value = "UMAP_2", use_colour = "points", alt_colour = "blue") 

標註結果節點的訊息:

clustree_overlay(pbmc, prefix = "RNA_snn_res.", x_value = "UMAP_1", y_value = "UMAP_2", label_nodes = TRUE)

顯示側視圖結果:

overlay_list <- clustree_overlay(pbmc, prefix = "RNA_snn_res.", x_value = "PC_1", y_value = "PC_2", plot_sides = TRUE)
names(overlay_list)
> [1] "overlay" "x_side"  "y_side" 
#顯示x_side結果
overlay_list$x_side
#顯示y_side結果
overlay_list$y_side

結語

Clustree是一個功能強大且易於使用的R套件,它提供了直觀的方法來可視化聚類樹的結構和層次。透過Clustree,我們可以更好地理解和解釋聚類分析的結果,並且可以很快地發現數據中的細胞聚集模式和關係,是分析單細胞數據時的必備套件。

參考文獻

1. Zappia L, Oshlack A. Clustering trees: a visualization for evaluating clusterings at multiple resolutions. Gigascience. 2018;7. DOI:gigascience/giy083.

您的分享,我非常感激!!!
MillionQuesn
MillionQuesn

一個旅居台灣的異鄉人,分享突然靈光一現的亮點。

文章: 46

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

error: Alert: Content selection is disabled!!