5.3 识别混淆因子
5.3.1 简介
ScRNA-seq数据中存在大量潜在的混杂因素和误差。分析scRNA-seq数据的主要挑战之一在于难以进行真正的技术重复来区分生物和技术差异。在前面的章节中,我们考虑了批次效应,在本章中,我们将继续探索如何识别和消除实验误差。我们将继续使用scater
包,因为它提供了一组专门对实验变量和解释变量质控的方法。此外,我们将继续使用上一章中使用的数据。
umi.qc
数据包含经过筛选的细胞和基因。我们的下一步是探索数据差异的技术驱动因素,以便在下游分析之前为数据标准化提供信息。
5.3.2 与PC的相关性
首先再看一下QC过滤后数据集的PCA图:
> umi.qc <- runPCA(umi.qc, exprs_values = "logcounts_raw")
> dim(reducedDim(umi.qc, "PCA"))
[1] 670 50
> plotPCA(umi.qc, colour_by = "batch", size_by = "sum", shape_by = "individual")
scater
允许识别与感兴趣的实验和QC变量相关的主成分(根据将PC值与感兴趣的变量进行回归的线性模型,通过对主成分进行排序)。
让我们测试一下某些变量是否与PC相关。
5.3.2.1 检测基因
> logcounts(umi.qc) <- assay(umi.qc, "logcounts_raw")
> getExplanatoryPCs(umi.qc,variables = "sum")
sum
PC1 8.663924e+01
PC2 5.690259e+00
PC3 1.709921e-01
PC4 4.579854e-01
PC5 1.919373e-04
PC6 6.802925e-01
PC7 1.058071e-01
PC8 2.044979e-01
PC9 5.651763e-01
PC10 4.713398e-03
> plotExplanatoryPCs(umi.qc,variables = "sum")
> logcounts(umi.qc) <- NULL
我们可以看到PC1几乎可以完全(86%)通过总UMI计数(测序深度)来解释。事实上,在上面的PCA图上也可以看出。这是scRNA-seq中一个众所周知的问题,并在文章(https://doi.org/10.1093/biostatistics/kxx053)中进行了描述。
5.3.3 解释变量
当用线性模型对每个基因的表达值与每个变量进行回归拟合时,scater
还可以计算该变量的边际,并显示变量的基因边际的密度图。
> plotExplanatoryVariables(umi.qc,exprs_values = "logcounts_raw",
variables = c("detected","sum","batch",
"individual","altexps_ERCC_percent",
"subsets_Mito_percent"))
该分析表明,检测到的基因数量(橙线)以及测序深度(蓝线)对许多基因具有相当大的解释力,因此,这些变量非常适合在标准化步骤中进行调整,或纳入下游统计模型中。ERCC的表达似乎也是一个重要的解释变量(红线),上图的一个显著特点是批次(绿线)解释能力比个体(紫线)更强。这在有关数据的技术和生物变异方面能带给我们什么启发呢?
5.3.4 其他混杂因素
除了批次校正外,还需要消除其他因素的影响,这些调整需要外部信息。一种流行的方法是scLVM,它允许识别和消除细胞周期或细胞凋亡等过程的影响。
此外,不同实验方法可能在每个转录本的覆盖率、GC偏好或捕获短转录本的能力等方面有所不同。理想情况下,我们希望消除所有这些差异和偏好。
往期内容:
重生之我在剑桥大学学习单细胞RNA-seq分析——4. 使用Bioconductor进行scRNA-seq分析(1)
重生之我在剑桥大学学习单细胞RNA-seq分析——4. 使用Bioconductor进行scRNA-seq分析(2)
重生之我在剑桥大学学习单细胞RNA-seq分析——5. scRNA-seq数据的基本质量控制 (QC) 和探索(1)
重生之我在剑桥大学学习单细胞RNA-seq分析——5. scRNA-seq数据的基本质量控制 (QC) 和探索(2)