Seurat取子集时会用到的函数和方法

在单细胞数据分析中,在确定细胞类型后,除了可以进行差异表达基因分析外,还可以针对单个细胞类型进行分析特定分析,这时就需要我们提取细胞子集分开处理了。

一、Seurat数据格式

首先我们需要先对Seurat生成的数据格式有所了解:


单细胞数据格式思维导图

图片来源:周运来老师的:为什么要以数据库的思维来理解单细胞数据

解释:

Assays

默认情况下,Seurat对象是一个叫RNA的Assay。在我们处理数据的过程中,做整合(integration),或者做变换(SCTransform),或者做去除污染(SoupX),或者是融合velocity的数据等,都会生成新的相关的Assay,用于存放这些处理之后的矩阵。

在之后的处理中,我们可以根据情况使用指定Assay下的数据。不指定Assay使用数据的时候,Seurat调用的是Default Assay下的内容。我们可以通过对象名@active.assay查看当前Default Assay,通过DefaultAssay函数更改当前Default Assay。

Assay数据中,counts为raw原始数据,data为normalized(归一化),scale.data matrix为scaled(标准化的数据矩阵)。

调用方法: PBMC@assays$RNA@data :调用normalized后数据

meta.data

元数据,对每个细胞的描述。一般计算的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

调用方法:pbmc$orig.identpbmc[["orig.ident"]]

active.assay和active.ident

前者是查看当前使用的assays,后者是查看当前的使用分群方式(可使用levels函数)

reduction

用于储存降维之后的每个细胞的坐标信息。
调用方法:

二、提取数据的函数

对Seurat对象结构有所了解之后,我们其实可以直接在Seurat对象中提取数据。可能为了方便,Seurat也提供了一些函数来帮助我们提取一些我们想要的数据。例如:

提取基因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提取:
    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中设置过的stim信息提取:
    subset(x = object, stim == "Ctrl")
  • 按照某一个resolution下的分群提取
    subset(x = object, RNA_snn_res.2 == 2)
  • 当然还可以根据某个基因的表达量来提取:
    subset(x = object, gene1 > 1)
    subset(x = object, gene1 > 1,slot = "counts")

三、应用方法

查看每个聚类包含多少细胞?
table(Idents(pbmc))table(pbmc$RNA_snn_res.0.3)

每个聚类细胞数占比
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.featurespbmc@[email protected]
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单细胞转录组亚群细分策略
Seurat V3 学习(二)
Seurat3.1的灵活操作指南

你可能感兴趣的:(Seurat取子集时会用到的函数和方法)