Seurat24式太极拳之8右揽雀尾---在Seurat中使用sctransform

八、右揽雀尾
后坐扣脚 收脚抱球 转体上步 弓步掤臂 摆臂后捋
转体搭手 弓步前挤 转腕分手 后坐引手 弓步前按

单细胞RNA-seq数据中的生物异质性通常与包括测序深度在内的技术因素混淆。即使在同一细胞类型内,每个细胞中检测到的分子数量也可能在细胞之间发生显着变化。对scRNA-seq数据的解释需要有效的预处理和标准化,以消除这种技术差异。在Hafemeister和Satija,2019年,我们引入了一个建模框架,用于对来自scRNA-seq实验的分子计数数据进行归一化和方差稳定化。此过程省略了对包括伪计数加法或对数转换在内的启发式步骤的需要,并改善了常见的下游分析任务,例如可变基因选择,降维和差异表达。

在此插图中,我们演示了与对数归一化相比,使用基于sctransform的归一化如何能够恢复更清晰的生物学区别。

library(Seurat)
library(ggplot2)
library(sctransform)

加载数据并创建Seurat对象

pbmc_data <- Read10X(data.dir = "../data/pbmc3k/filtered_gene_bc_matrices/hg19/")
pbmc <- CreateSeuratObject(counts = pbmc_data)

应用sctransform规范化

  • 请注意,这个单一命令替换NormalizeData()ScaleData()FindVariableFeatures()`。
  • 转换后的数据将在SCT分析中提供,运行sctransform后将其设置为默认值
  • 在标准化期间,我们还可以删除混杂的变异源,例如线粒体作图百分比
# store mitochondrial percentage in object meta data
pbmc <- PercentageFeatureSet(pbmc, pattern = "^MT-", col.name = "percent.mt")

# run sctransform
pbmc <- SCTransform(pbmc, vars.to.regress = "percent.mt", verbose = FALSE)

最新版本sctransform还支持使用glmGamPoi软件包,从而大大提高了学习过程的速度。可以通过指定调用它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)

通过PCA和UMAP嵌入执行降维

# 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

标准的Seurat工作流程中,我们重点关注此数据集的10个PC,尽管我们强调指出,此参数的设置较高时,结果相似。有趣的是,我们发现使用sctransform时,通常可以通过将此参数推得更高来受益。我们认为这是因为sctransform工作流程执行了更有效的规范化,从而从数据中强烈消除了技术影响。

即使经过标准的对数归一化后,测序深度的变化仍然是一个混杂因素(请参见图1),并且这种影响会微妙地影响更高的PC。在sctransform中,此效果已大大减轻(请参见图3)。这意味着更高的PC更可能代表微妙的但与生物学相关的异质性来源-因此包括它们可能会改善下游分析。

此外,默认情况下,sctransform返回3,000个可变功能,而不是2,000。基本原理相似,其他可变特征不太可能受细胞间技术差异的驱动,而可能代表更微妙的生物学波动。通常,我们发现用sctransform生成的结果对这些参数的依赖性较小(实际上,在转录组中使用所有基因时,我们获得了几乎相同的结果,尽管这确实降低了计算效率)。这可以帮助用户生成更可靠的结果,此外,还可以使用具有相同参数设置的标准分析管道进行应用,这些参数设置可以快速应用于新的数据集:

例如,以下代码在一个命令中复制了完整的端到端工作流程:

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()

如我们的论文所述,sctransform使用“正负二项式回归”计算scRNA-seq数据中的技术噪声模型。该模型的残差为归一化值,可以为正或负。给定细胞中给定基因的正残基表明,与基因在种群和细胞测序深度中的平均表达相比,我们观察到的UMI比预期多,而负残基则相反。

sctransfrom的结果存储在“ SCT”分析中。您可以在我们的插图命令备忘单开发人员指南中了解有关Seurat中多测定数据和命令的更多信息。

  • pbmc[["SCT"]]@scale.data包含残差(归一化值),并直接用作PCA的输入。请注意,此矩阵是非稀疏的,因此如果为所有基因存储,可能会占用大量内存。为了节省内存,我们仅通过在SCTransform()`函数调用中默认设置return.only.var.genes = TRUE来为变量基因存储这些值。

  • 协助进行可视化和解释。我们还将Pearson残差转换回“校正”的UMI计数。您可以将它们解释为如果所有单元格都测序到相同深度,我们期望观察到的UMI计数。如果您想确切了解我们如何执行此操作,请在此处查看正确的功能。

  • “更正后的” UMI计数存储在中pbmc[["SCT"]]@counts。我们将这些校正后的计数的对数标准化版本存储在中pbmc[["SCT"]]@data,这对可视化非常有帮助。

  • 您可以将校正后的对数归一化计数用于差异表达和积分。但是,原则上,最好直接对(存储在scale.data插槽中的)残差本身执行这些计算。Seurat v3当前不支持此功能,但很快就会支持。

    • *</details>

用户可以基于规范标记单独注释集群。但是,与标准的Seurat工作流程相比,sctransform归一化方法在生物学上有更明显的区别,其中包括:

  • 基于CD8A,GZMK,CCL5,GZMK表达,至少3个CD8 T细胞群体(幼稚,记忆,效应子)的清晰分离
  • 基于S100A4,CCR7,IL32和ISG15的三个CD4 T细胞群体(天然,记忆,IFN激活)的清晰分离
  • 基于TCL1A,FCER2的B细胞簇中的其他发育子结构
  • 根据XCL1和FCGR3A,将NK细胞进一步分离为CD56dim与明亮簇
# 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
# 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
FeaturePlot(pbmc, features = c("CD3D", "ISG15", "TCL1A", "FCER2", "XCL1", "FCGR3A"), pt.size = 0.2, 
    ncol = 3)
image

说明一个样本也可以使用sctransform处理的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容