在單細胞數(shù)據(jù)分析中,在確定細胞類型后,除了可以進行差異表達基因分析外,還可以針對單個細胞類型進行分析特定分析,這時就需要我們提取細胞子集分開處理了。
一、Seurat數(shù)據(jù)格式
首先我們需要先對Seurat生成的數(shù)據(jù)格式有所了解:

圖片來源:周運來老師的簡書:為什么要以數(shù)據(jù)庫的思維來理解單細胞數(shù)據(jù)

解釋:
Assays
默認情況下,Seurat對象是一個叫RNA的Assay。在我們處理數(shù)據(jù)的過程中,做整合(integration),或者做變換(SCTransform),或者做去除污染(SoupX),或者是融合velocity的數(shù)據(jù)等,都會生成新的相關(guān)的Assay,用于存放這些處理之后的矩陣。
在之后的處理中,我們可以根據(jù)情況使用指定Assay下的數(shù)據(jù)。不指定Assay使用數(shù)據(jù)的時候,Seurat調(diào)用的是Default Assay下的內(nèi)容。我們可以通過對象名@active.assay查看當前Default Assay,通過DefaultAssay函數(shù)更改當前Default Assay。
Assay數(shù)據(jù)中,counts為raw原始數(shù)據(jù),data為normalized(歸一化),scale.data matrix為scaled(標準化的數(shù)據(jù)矩陣)。
調(diào)用方法: PBMC@assays$RNA@data :調(diào)用normalized后數(shù)據(jù)
meta.data
元數(shù)據(jù),對每個細胞的描述。一般計算的nFeature_RNA等信息就以metafeature的形式存在Seurat對象的metadata中。計算的分類信息一般以RNA_snn_res.x(x指使用的resolution)存放在metadata中。
orig.ident nCount_RNA nFeature_RNA percent.mito percent.HB RNA_snn_res.0.6 seurat_clusters
AAACCCAAGCGTATGG-1 pbmc 13509 3498 10.659560 0 1 1
AAACCCAGTCCTACAA-1 pbmc 12637 3382 5.610509 0 1 1
AAACGCTAGGGCATGT-1 pbmc 5743 1798 10.691276 0 7 7
AAACGCTGTAGGTACG-1 pbmc 13107 2888 7.866026 0 9 9
AAACGCTGTGTCCGGT-1 pbmc 15510 3807 7.446809 0 3 3
AAACGCTGTGTGATGG-1 pbmc 6131 2348 9.982058 0 5 5
調(diào)用方法:pbmc$orig.ident 或pbmc[["orig.ident"]]
active.assay和active.ident
前者是查看當前使用的assays,后者是查看當前的使用分群方式(可使用levels函數(shù))
reduction
用于儲存降維之后的每個細胞的坐標信息。
調(diào)用方法:
每個細胞在PC軸上的坐標
head(pbmc@reductions$pca@cell.embeddings)每個基因?qū)γ總€PC軸的貢獻度(loading值)
head(pbmc@reductions$pca@feature.loadings)
二、提取數(shù)據(jù)的函數(shù)
對Seurat對象結(jié)構(gòu)有所了解之后,我們其實可以直接在Seurat對象中提取數(shù)據(jù)??赡転榱朔奖悖琒eurat也提供了一些函數(shù)來幫助我們提取一些我們想要的數(shù)據(jù)。例如:
提取基因ID和細胞ID
-
獲取全部基因ID:
rownames(object) -
獲取整個object的細胞ID:
Cells(object),colnames(object) - 按照idents獲取部分細胞ID:
WhichCells(object, idents = c(1, 2)) - 按照基因表達獲取部分細胞ID:
WhichCells(object, expression = gene1 > 1)
WhichCells(object, expression = gene1 > 1, slot = "counts")
提取降維之后的坐標信息
Embeddings(object = object[["pca"]])Embeddings(object = object[["umap"]])
提取包含部分細胞的對象
- 按照細胞ID提?。?br>
subset(x = object, cells = cells) -
按照idents提取:
subset(x = object, idents = c(1, 2))
WhichCells(object, idents = 1)
subset(x=object, idents = "root")#對細胞簇重新命名后為root - 想要排除1、2細胞類型,可以這樣:
subset(pbmc, idents = c(1, 2), invert = TRUE) - 按照meta.data中設(shè)置過的stim信息提取:
subset(x = object, stim == "Ctrl") -
按照某一個resolution下的分群提取:
subset(x = object, RNA_snn_res.2 == 2) - 當然還可以根據(jù)某個基因的表達量來提?。?br>
subset(x = object, gene1 > 1)
subset(x = object, gene1 > 1,slot = "counts")
三、應用方法
查看每個聚類包含多少細胞?
table(Idents(pbmc))或table(pbmc$RNA_snn_res.0.3)
每個聚類細胞數(shù)占比
prop.table(table(Idents(pbmc)))或
prop.table(table(pbmc$RNA_snn_res.0.3))
提取表達矩陣
raw.data <- as.matrix(GetAssayData(pbmc, slot = "counts")或
raw.data <- as.matrix(pbmc@assays$RNA@counts)
提取某種細胞的表達矩陣
raw.data <- as.matrix(GetAssayData(pbmc, slot = "counts")[, WhichCells(pbmc, ident = "1")])
計算平均表達量
cluster.averages <- AverageExpression(pbmc)
獲得所有的HVGsID
pbmc[["RNA"]]@var.features或pbmc@assays$RNA@var.features
pbmc[["RNA"]]@var.features[1:10]:獲得前十個
修改聚類后的因子水平
Idents(pbmc) <- factor(Idents(pbmc), levels= c(1,2,3,4,9,8,7,6,5,0))
參考:
Seurat Weekly NO.2 || 我該如何取子集?
Seurat v3.0命令列表
10xGenomics單細胞轉(zhuǎn)錄組亞群細分策略
Seurat V3 學習(二)
Seurat3.1的靈活操作指南