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包的加载。
library(Seurat)
library(ggplot2)
library(sctransform)
加载pbmc数据和创建seurat数据。
pbmc_data <- Read10X(data.dir = "../data/pbmc3k/filtered_gene_bc_matrices/hg19/")
pbmc <- CreateSeuratObject(counts = pbmc_data)
这时可以选用sct的矫正,通过一个函数代替了三个函数的运行方式,同时选用的降维的对象范围多了1000个细胞。这一步进行sct矫正后,可以在defaultassay中进行不同的矩阵的变换,来进行后面的计算。
在在这一步的归一化过程中,还可以去除变异的混杂来源,例如线粒体映射的占比。
# 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" 来调用它。
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 的降维。
# 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()
这时会发现一个问题,sct的归一化中的pca选择的数量会很多,通常是为了消除数据之间的技术差异影响。
即使在标准对数归一化之后,测序深度的影响仍然是一个很重要的因素(参见图 1),因此当选择更高的pcs时,会降低这种影响效应, 这意味着更高的 PC 更有可能代表微妙但与生物学相关的异质性来源—因此包括它们可能会改善下游分析。
同时运用管道符也可以将上述的过程进行一次性运算。
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 规范化揭示了更明显的生物学差异,每个细胞亚群可以更清晰的划分到一些更细的亚群结果,也是符合研究中的生物学现象的。
# 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)
# Visualize canonical marker genes on the sctransform embedding.
FeaturePlot(pbmc, features = c("CD8A", "GZMK", "CCL5", "S100A4", "ANXA1", "CCR7"), pt.size = 0.2,
ncol = 3)
FeaturePlot(pbmc, features = c("CD3D", "ISG15", "TCL1A", "FCER2", "XCL1", "FCGR3A"), pt.size = 0.2,
ncol = 3)
最后总结一下,一般的研究时seurat标准的流程和sct的归一化的方法都做,因为在后面的很多分析中有的时侧重用rna矩阵的数据的,比如做单细胞的WGCNA分析的时候,软件说明中说的尽量是用的rna的矩阵。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。