5.5 标准化实践
我们继续使用Tung数据(下载地址:https://singlecellcourse.cog.sanger.ac.uk/index.html?shared=data/)。
> library(scRNA.seq.funcs)
> library(scater)
> library(scran)
>
> set.seed(1234567)
> umi <- readRDS("data/tung/umi.rds")
> umi.qc <- umi[! rowData(umi)$discard, ! colData(umi)$discard]
5.5.1 对logcounts_raw
进行PCA分析
对数变换使数据分组直观(例如,按个体),但对测序深度的依赖性明显。
> umi.qc <- runPCA(umi.qc, exprs_values = "logcounts_raw")
> plotPCA(umi.qc, colour_by = "batch", size_by = "detected", shape_by = "individual")
5.5.2 对CPM标准化数据进行PCA分析
名为logcounts
的assay是大多数绘图和降维函数的默认设置。我们将用各种标准化来填充它并比较结果。每次重新进行标准化或运行PCA时,logcounts
和PCA
reducedDim对象都会被替换。
> logcounts(umi.qc) <- log2(calculateCPM(umi.qc) + 1)
> umi.qc <- runPCA(umi.qc)
> plotPCA(umi.qc, colour_by = "batch", size_by = "detected", shape_by = "individual")
相对对数表达(RLE)图对于评估标准化过程是否成功非常有用。
> plotRLE(umi.qc, exprs_values = "logcounts_raw",colour_by = "batch") +
ggtitle("RLE plot for logcounts_raw")
> plotRLE(umi.qc, exprs_values = "logcounts",colour_by = "batch") +
ggtitle("RLE plot for log2(CPM) counts")
5.5.3 对scran
标准化数据进行PCA分析
基于CPM和其他类似的方法都假设所有细胞都含有相似数量的RNA,因此应该产生相似的UMI数。这并不总是正确的。以下方法可在scran
和其他几个bioconductoR
包中使用,使用聚类来实现标准化,有时被称为通过反卷积进行标准化。首先,让我们进行快速而粗略的聚类。这些聚类看起来与我们的批次非常相似!
> qclust <- quickCluster(umi.qc, min.size = 30)
> table(qclust)
qclust
1 2 3 4 5 6 7 8
86 77 81 94 90 88 66 88
接下来,使用聚类来计算尺度因子。第一个函数向colData
添加一个名为sizeFactor
的列,随后logNormCounts
使用了这些值。
> umi.qc <- computeSumFactors(umi.qc, clusters = qclust)
Warning message:
In .guessMinMean(x, min.mean = min.mean, BPPARAM = BPPARAM) :
assuming UMI data when setting 'min.mean'
> umi.qc <- logNormCounts(umi.qc)
我们现在可以看到对于单个个体和批次具有更高分辨率。
> umi.qc <- runPCA(umi.qc)
> plotPCA(umi.qc, colour_by = "batch",size_by = "detected", shape_by = "individual")
RLE图也显示出很好的规则图形。
> plotRLE(umi.qc, exprs_values = "logcounts",colour_by = "batch")
有时scran
会产生负或零尺寸因子。这将完全扭曲标准化表达矩阵。我们可以像这样检查scran
计算的尺度因子:
> summary(sizeFactors(umi.qc))
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.3820 0.7712 0.9525 1.0000 1.1477 3.2692
对于此数据集,所有尺度因子都表现良好;我们将使用此标准化进行进一步分析。如果您发现scran
计算出负尺度因子,请尝试增加聚类和池化大小,直到它们全部为正。
5.5.4 对下采样数据进行PCA分析
> logcounts(umi.qc) <- log2(Down_Sample_Matrix(counts(umi.qc)) + 1)
> umi.qc <- runPCA(umi.qc)
> plotPCA(umi.qc,colour_by = "batch",size_by = "detected", shape_by = "individual")
> plotRLE(umi.qc, exprs_values = "logcounts",colour_by = "batch")
往期内容:
重生之我在剑桥大学学习单细胞RNA-seq分析——5. scRNA-seq数据的基本质量控制 (QC) 和探索(1)
重生之我在剑桥大学学习单细胞RNA-seq分析——5. scRNA-seq数据的基本质量控制 (QC) 和探索(2)
重生之我在剑桥大学学习单细胞RNA-seq分析——5. scRNA-seq数据的基本质量控制 (QC) 和探索(3)
重生之我在剑桥大学学习单细胞RNA-seq分析——5. scRNA-seq数据的基本质量控制 (QC) 和探索(4)