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

作者: BINBINCC | 来源:发表于2020-12-27 17:07 被阅读0次

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

一、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

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

  • 每个细胞在PC轴上的坐标
    head(pbmc@reductions$pca@cell.embeddings)

  • 每个基因对每个PC轴的贡献度(loading值)
    head(pbmc@reductions$pca@feature.loadings)

二、提取数据的函数

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

提取细胞ID和基因

  • 获取全部基因IDrownames(object)
  • 获取整个object的细胞IDCells(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)
  • 想要排除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@assays$RNA@var.features
pbmc[["RNA"]]@var.features[1:10]:获得前十个

参考:
Seurat Weekly NO.2 || 我该如何取子集?
Seurat v3.0命令列表
10xGenomics单细胞转录组亚群细分策略
Seurat V3 学习(二)
Seurat3.1的灵活操作指南

相关文章

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

    在单细胞数据分析中,在确定细胞类型后,除了可以进行差异表达基因分析外,还可以针对单个细胞类型进行分析特定分析,这时...

  • 方法和函数的区别

    日常写代码中经常用到方法和函数,但是可能常常搞混,下面具体说下:1、方法是特殊的函数,可以说是函数的子集2、方法常...

  • R语言-列表

    生成列表list函数 取一个子集 取子集的子集 转换为列表及解除列表 列表的转换

  • 递归函数取子集

  • 利用subset函数取子集

    subset 第一个要输入的参数是你的数据框,第二个要输入的参数是你对于观测(行)的筛选,可以用逻辑运算符串联,第...

  • Python爬虫学习笔记(二)

    爬取多个url页面时常用到的方法: 1、定义get_page_link(函数): page_link = [] ...

  • 细胞通讯-4数据读取及创建对象

    很多帖子教如何用Seurat和Scanpy工具中提取的数据矩阵创建CellChat对象。我这里只用到Seurat,...

  • 方法

    用到的一些函数 1.取随机数的函数 这是一个取1--100的随机数2.取绝对值的函数 表示取a和b 的绝对值3.开...

  • 数学运算

    Math类中定义了许多数学函数方法,如三角函数、指数函数、取整函数、取最大值、取最小值以及平均值函数方法。这些方法...

  • Seurat Weekly NO.2 || 我该如何取子集?

    Seurat Weekly NO.0 || 开刊词Seurat Weekly NO.1 || 到底分多少个群是合适...

网友评论

    本文标题:Seurat取子集时会用到的函数和方法

    本文链接:https://www.haomeiwen.com/subject/ihponktx.html