前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Seurat软件学习9-sctransform的使用

Seurat软件学习9-sctransform的使用

原创
作者头像
小胡子刺猬的生信学习123
发布2023-01-10 17:23:43
7710
发布2023-01-10 17:23:43
举报

Seurat软件学习1-多个模型得数据进行整合:https://cloud.tencent.com/developer/article/2130078

Seurat软件学习2-scrna数据整合分析:https://cloud.tencent.com/developer/article/2131431

Seurat软件学习3-scrna数据整合分析注释数据集:https://cloud.tencent.com/developer/article/2133583

Seurat软件学习4-使用RPCA进行快速整合数据集:https://cloud.tencent.com/developer/article/2134684

Seurat软件学习5-scRNA-Seq和scATAC-Seq数据整合:https://cloud.tencent.com/developer/article/2136814

Seurat软件学习6-多模型参考映射的方法:https://cloud.tencent.com/developer/article/2144475

Seurat软件学习7-同胞多组学结合方法-WNN:https://cloud.tencent.com/developer/article/2152008

Seurat软件学习8-不同细胞类型样本的分析流程:https://cloud.tencent.com/developer/article/2191271

单细胞 RNA-seq 数据中的异质性通常是由测序深度等技术原因造成的,这样使得每个细胞检测到的表达量变化差别很大,无论是在相同的细胞还是不同的细胞中。因此在进行单细胞分析的时候,需要去除和标准化这种异质性。

在 Hafemeister 和 Satija(2019年),通过引入了一个计算方法,用于对来自 scRNA-seq 数据中的细胞表达量进行归一化,并改进了常见的下游分析任务,例如可变基因选择、降维和差异表达。

并且这一个函数可以代替三个函数(NormalizeData, ScaleData, FindVariableFeatures)的运行。 且其对测序深度的校正效果要好于log标准化。(10万以内的细胞都建议使用SCT标准化) ️SCTransform对测序深度的校正效果很好,也可用于矫正线粒体等因素的影响,但不能用于批次矫正。

因此选用pbmc的数据进行test尝试。

首先是R包的加载。

代码语言:javascript
复制
library(Seurat)
library(ggplot2)
library(sctransform)

加载pbmc数据和创建seurat数据。

代码语言:javascript
复制
pbmc_data <- Read10X(data.dir = "../data/pbmc3k/filtered_gene_bc_matrices/hg19/")
pbmc <- CreateSeuratObject(counts = pbmc_data)

这时可以选用sct的矫正,通过一个函数代替了三个函数的运行方式,同时选用的降维的对象范围多了1000个细胞。这一步进行sct矫正后,可以在defaultassay中进行不同的矩阵的变换,来进行后面的计算。

在在这一步的归一化过程中,还可以去除变异的混杂来源,例如线粒体映射的占比。

代码语言:javascript
复制
# store mitochondrial percentage in object meta data
pbmc <- PercentageFeatureSet(pbmc, pattern = "^MT-", col.name = "percent.mt")

# run sctransform,vars.to.regress:这个可以根据自己的数据内容进行相应的更改,如想去除细胞周期效应
pbmc <- SCTransform(pbmc, vars.to.regress = "percent.mt", verbose = FALSE)

最近更新的seurat中可以引入glmGamPoi 包来提高sct的归一化速度, 可以通过指定 method="glmGamPoi" 来调用它。

代码语言:javascript
复制
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")

BiocManager::install("glmGamPoi")
pbmc <- SCTransform(pbmc, method = "glmGamPoi", vars.to.regress = "percent.mt", verbose = FALSE)

下面进行经典的umap及pca 的降维。

代码语言:javascript
复制
# These are now standard steps in the Seurat workflow for visualization and clustering
pbmc <- RunPCA(pbmc, verbose = FALSE)
pbmc <- RunUMAP(pbmc, dims = 1:30, verbose = FALSE)

pbmc <- FindNeighbors(pbmc, dims = 1:30, verbose = FALSE)
pbmc <- FindClusters(pbmc, verbose = FALSE)
DimPlot(pbmc, label = TRUE) + NoLegend()
image.png
image.png

这时会发现一个问题,sct的归一化中的pca选择的数量会很多,通常是为了消除数据之间的技术差异影响。

即使在标准对数归一化之后,测序深度的影响仍然是一个很重要的因素(参见图 1),因此当选择更高的pcs时,会降低这种影响效应, 这意味着更高的 PC 更有可能代表微妙但与生物学相关的异质性来源—因此包括它们可能会改善下游分析。

同时运用管道符也可以将上述的过程进行一次性运算。

代码语言:javascript
复制
pbmc <- CreateSeuratObject(pbmc_data) %>%
    PercentageFeatureSet(pattern = "^MT-", col.name = "percent.mt") %>%
    SCTransform(vars.to.regress = "percent.mt") %>%
    RunPCA() %>%
    FindNeighbors(dims = 1:30) %>%
    RunUMAP(dims = 1:30) %>%
    FindClusters()

在归一化中,产生了一个新的SCT矩阵,“更正”的 UMI 计数存储在 pbmc["SCT"]@counts 中。 对数归一化版本存储在 pbmc["SCT"]@data 中,在后续的可视化中可以用到相关的内容。

然而,与标准的 Seurat 工作流程相比,sctransform 规范化揭示了更明显的生物学差异,每个细胞亚群可以更清晰的划分到一些更细的亚群结果,也是符合研究中的生物学现象的。

代码语言:javascript
复制
# These are now standard steps in the Seurat workflow for visualization and clustering
# Visualize canonical marker genes as violin plots.
VlnPlot(pbmc, features = c("CD8A", "GZMK", "CCL5", "S100A4", "ANXA1", "CCR7", "ISG15", "CD3D"),
    pt.size = 0.2, ncol = 4)
image.png
image.png
代码语言:javascript
复制
# Visualize canonical marker genes on the sctransform embedding.
FeaturePlot(pbmc, features = c("CD8A", "GZMK", "CCL5", "S100A4", "ANXA1", "CCR7"), pt.size = 0.2,
    ncol = 3)
image.png
image.png
代码语言:javascript
复制
FeaturePlot(pbmc, features = c("CD3D", "ISG15", "TCL1A", "FCER2", "XCL1", "FCGR3A"), pt.size = 0.2,
    ncol = 3)
image.png
image.png

最后总结一下,一般的研究时seurat标准的流程和sct的归一化的方法都做,因为在后面的很多分析中有的时侧重用rna矩阵的数据的,比如做单细胞的WGCNA分析的时候,软件说明中说的尽量是用的rna的矩阵。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档