Seurat單細胞數據分析經常使用的5個指令

前言

Seurat官網上的教學,主要是將單細胞分析流程的核心帶使用者跑過一遍,但是裡面有許多小技巧,卻沒有對使用者詳細說明,往往導致使用者在分析自己的數據時,會有種力不從心的感覺。例如,要如何將需要的特定細胞從結果中提取出來、要如何對多組單細胞數據進行命名、要如何計算組與組之間的百分比等等,這些操作在教學中都沒有明說,需要自己摸索或從網路上尋找大神們放出來的指令。所以我根據自身的經驗和理解,整理了我認為最常會用到的幾個指令,提供大家參考。

單細胞數據分析初學者必讀文章:

範例數據

在這次的範例中,我們將分析來自10X Genomics的周邊血(PBMC)的兩組單細胞數據集,分別包含了2700和5025顆單細胞的數據集,原始數據的.rds儲存檔可以在我的雲端下載。如果對檔案有疑慮,可以到10X Genomics數據庫自行下載,然後按照單細胞數據分析:批次效應與Seurat Integration分析詳解這篇文章進行分析。

數據集下載位置:

3k PBMCs from a Healthy Donor

5k Peripheral Blood Mononuclear Cells (PBMCs) from a Healthy Donor (v3 chemistry)

1. 加載套件和載入.rds儲存檔

加載所需套件進入R環境,並將pbmc3k5K_final.rds數據載入R中,這裡使用的指令是readRDS()函數,代碼中提供的路徑只是一個示例路徑,需要根據電腦實際文件所在的路徑進行修改

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

# 需用電腦中的正確路徑,須將"\"更改為"/"
pbmc.combined <- readRDS(file = "C:/Users/Administrator/Desktop/pbmc3k5K_final.rds")

# 檢查輸入結果
DimPlot(pbmc.combined, reduction = "umap", group.by = "orig.ident")
DimPlot(pbmc.combined, reduction = "umap")
DimPlot(pbmc.combined, reduction = "umap",label = TRUE, split.by = "orig.ident")

結果確認無誤後,我們就開始來玩各種有趣的指令囉~~~

2. 獲取細胞資訊

# 獲取細胞資訊
# 提取pbmc.combined基本資訊
pbmc.combined

# 結果中共有多少細胞群
levels(pbmc.combined)

pbmc.combined可以輸出基本信息,包括數據的維度、變量和屬性等。若要確定pbmc.combined中有多少個細胞群,可以使用levels()函數來獲取細胞群的資訊,結果如下 :

3. 各細胞群的細胞數和百分比

# 每個細胞群的數量 
table(Idents(pbmc.combined))

# 不同組別細胞群中的數量
head(pbmc.combined)
table(Idents(pbmc.combined), pbmc.combined$orig.ident)

# 計算細胞組別的百分比
prop.table(table(Idents(pbmc.combined), pbmc.combined$orig.ident), margin = 2)

結果如下:

  • 要查看每個細胞群的數量,可以結合使用table()函數和Idents()函數。
  • 如果想查看不同組別細胞群中的數量,可以結合使用table()函數和Idents()函數,同時指定pbmc.combined中的orig.ident變數做區別兩組數據的依據。
  • 如果想計算細胞組各別的百分比,可以使用prop.table()函數來進行分析,這將返回一個表格,顯示每個細胞群在不同組別中的百分比。

4. 提取某一種細胞群

# 抽取一種或多種細胞群
# 每個細胞群的數量 
table(Idents(pbmc.combined))

# 抽取cluster 0
cluster0 <- subset(pbmc.combined, idents = "0")
table(Idents(cluster0), cluster0$orig.ident)

# 抽取cluster 0 以及cluster 9
cluster0_9 <- subset(pbmc.combined, idents = c("0", "9"))
table(Idents(cluster0_9), cluster0_9$orig.ident)

# 抽取除了cluster 0 以及cluster 9以外的所有細胞群
cluster <- subset(pbmc.combined, idents = c("0", "9"), invert = TRUE)
table(Idents(cluster), cluster$orig.ident)

結果如下 :

  • 要抽取特定的細胞群,可以使用subset()函數並指定idents()函數提取想要的細胞群。
  • 如果想提取多個細胞群,可以在idents()函數中指定包含多個標識的向量。
  • 如果想提取除了特定細胞群以外的所有細胞群,可以使用invert()函數反向提取。

5. 用基因表達量來提取細胞群

# 以表達量的方式提取細胞群
MS4A1_cells1 <- subset(pbmc.combined, subset = MS4A1 > 2)
table(Idents(MS4A1_cells1), MS4A1_cells1$orig.ident)

# 以表達量的方式提取細胞群,並針對某一群細胞群進行提取
MS4A1_cells2 <- subset(pbmc.combined, subset = MS4A1 > 2, idents = "4")
table(Idents(MS4A1_cells2), MS4A1_cells2$orig.ident)

# 設定多項變數提取特定細胞群
MS4A1_cells3 <- subset(pbmc.combined, subset = MS4A1 > 2 & CD79A > 2, idents = c("4", "7"))
table(Idents(MS4A1_cells3), MS4A1_cells3$orig.ident)

結果如下:

6. 變更數據名稱

# 變更細胞名稱
head(pbmc.combined)
new_obj <- RenameCells(pbmc.combined, new.names=gsub("-1", "_1", colnames(pbmc.combined)))
head(new_obj)

結果如下:

gsub()函數是R語言中的一個常用函數,用於替換字串中的內容。在上述程式碼中,利用gsub()函數可以將細胞名稱中的”-1″替換為”_1″,至於更進一步的gsub()函數使用方法,就要請各位自行上網查詢了。

結語

上述五種指令,是我最常使用到的指令。當然,我也是大數據分析小白,不像大神們能把R語言用得出神入化,如果各位有甚麼神奇的指令,也歡迎大家留言分享,互相學習!

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

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

文章: 46

發佈留言

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

error: Alert: Content selection is disabled!!