5.4 標準化理論
5.4.1 簡介
在上一章中瞎疼,我們確定了重要的混雜因素和解釋變量。scater
允許在后續(xù)的統(tǒng)計模型中考慮這些變量撇眯,或者根據(jù)需要使用normaliseExprs()
將它們標準化。
我們將探索如何通過簡單的尺度因子(size-factor)標準化來校正文庫大小,以消除一些混雜因素和解釋變量的影響会涎。
5.4.2 文庫大小
ScRNA-seq數(shù)據(jù)的文庫大小各異,來自每個細胞的總read量可能存在很大差異瑞凑。一些定量方法(如Cufflinks末秃、RSEM)在確定基因表達量時考慮了文庫大小,因此不需要標準化籽御。但是练慕,如果使用其他定量方法惰匙,則必須通過將表達矩陣的每一列乘以或除以相對于其他細胞的文庫大小估計出的“標準化因子”來校正。Bulk RNA測序已經(jīng)開發(fā)了許多用于校正文庫大小的方法铃将,并且可以同樣應用于scRNA測序(例如UQ项鬼、SF、CPM劲阎、RPKM绘盟、FPKM、TPM)悯仙。
5.4.3 標準化
5.4.3.1 CPM
標準化數(shù)據(jù)的最簡單方法是將其轉(zhuǎn)換為每百萬計數(shù)(counts per million, CPM)龄毡,即將每列中的值除以其該列總和,然后乘以1,000,000锡垄。請注意沦零,為了校正細胞RNA總量,應將ERCC排除在總表達量的計算之外货岭,因此我們將僅使用內(nèi)源基因路操。R中CPM函數(shù)的示例:
> function (expr_mat, spikes = NULL)
{
norm_factor <- colSums(expr_mat[-spikes, ])
return(t(t(expr_mat)/norm_factor)) * 10^6
}
CPM的一個潛在缺點是如果樣本包含高表達且在細胞間差異表達的基因,細胞中的分子總數(shù)可能取決于這些基因在細胞中是表達還是關(guān)閉茴她,通過總分子數(shù)進行標準化可能會隱藏這些基因的差異表達和/或錯誤地為其他基因創(chuàng)建差異表達寻拂。
RPKM、FPKM和TPM是根據(jù)基因/轉(zhuǎn)錄本的長度進一步調(diào)整CPM的變型丈牢。
5.4.3.2 相對對數(shù)表達(Relative Log Expression, RLE)
尺度因子由DESeq(Anders and Huber 2010)提出并推廣祭钉。首先計算每個基因在所有細胞中的幾何平均值,每個細胞的尺度因子是基因表達與基因幾何平均值之比的中位數(shù)己沛。該方法的缺點是慌核,由于它使用幾何平均值,因此只能使用所有細胞中具有非零表達值的基因進行計算申尼,因此不適用于大型低深度scRNA-seq垮卓。edgeR
&scater
將此方法稱為“相對對數(shù)表達”(RLE)。R中的SF函數(shù)示例:
> function (expr_mat, spikes = NULL)
{
geomeans <- exp(rowMeans(log(expr_mat[-spikes, ])))
SF <- function(cnts) {
median((cnts/geomeans)[(is.finite(geomeans) & geomeans > 0)])
}
norm_factor <- apply(expr_mat[-spikes, ], 2, SF)
return(t(t(expr_mat)/norm_factor))
}
5.4.3.3 上四分位數(shù)(UQ)標準化
上四分位數(shù)(upper quartile, UQ)由(Bullard等师幕,2010)提出粟按,為每列除以每個文庫count數(shù)的75%分位數(shù)。通常霹粥,計算出的分位數(shù)會根據(jù)細胞間的中位數(shù)進行縮放灭将,以保持表達的絕對水平相對一致。該方法的一個缺點是后控,對于低深度scRNA-seq庙曙,大量未檢測到的基因可能導致75%分位數(shù)為零(或接近于零)『铺裕可以通過擴展該思路并使用更高的分位數(shù)(99%分位數(shù)是scater
中的默認值)或在計算75%分位數(shù)之前排除零來克服這一限制捌朴。R中的UQ函數(shù)示例:
> function (expr_mat, spikes = NULL)
{
UQ <- function(x) {
quantile(x[x > 0], 0.75)
}
uq <- unlist(apply(expr_mat[-spikes, ], 2, UQ))
norm_factor <- uq/median(uq)
return(t(t(expr_mat)/norm_factor))
}
5.4.3.4 M值的修剪平均值 (Trimmed Mean of M-values, TMM)
另一種方法稱為TMM吴攒,是(Robinson and Oshlack 2010)提出的M值的加權(quán)修剪平均值。M值是基因在細胞間的log2倍數(shù)變化砂蔽。以一個細胞作為參考洼怔,計算其他細胞與該細胞的M值,然后去掉最高和最低的30%來進行修剪左驾,并對剩余值計算加權(quán)平均值茴厉,以解釋對數(shù)變換對方差的影響。每個非參考細胞都乘以計算出的因子什荣。此方法的兩個潛在問題是修剪后剩余的非零基因不足,以及大多數(shù)基因沒有差異表達的假設怀酷。
5.4.3.5 scran
scran
包是CPM的變型稻爬,專門用于單細胞數(shù)據(jù)(L. Lun、Bach和Marioni蜕依,2016)桅锄。簡言之,該方法通過將細胞合并(pooling)計算標準化因子來解決大量零值的問題样眠。由于每個細胞存在于不同的集合中友瘤,因此可以使用線性代數(shù)方法從集合特異因子中反卷積出細胞特異因子。
5.4.3.6 下采樣(Downsampling)
最后檐束,校正文庫大小的一個簡單方法是對表達矩陣進行下采樣辫秧,使每個細胞具有大致相同的分子總數(shù)。該方法的好處是被丧,通過下采樣將引入零值盟戏,從而消除由于檢測到的基因數(shù)量不同而導致的偏差。但缺點是該過程是不確定的甥桂,因此每次運行下采樣時柿究,得到的表達矩陣都會略有不同。因此黄选,通常必須對多次下采樣進行分析以確保結(jié)果的魯棒性蝇摸。R中的下采樣函數(shù)示例:
> function (expr_mat)
{
min_lib_size <- min(colSums(expr_mat))
down_sample <- function(x) {
prob <- min_lib_size/sum(x)
return(unlist(lapply(x, function(y) {rbinom(1, y, prob)})))
}
down_sampled_mat <- apply(expr_mat, 2, down_sample)
return(down_sampled_mat)
}
5.4.4 性能
為了比較不同標準化方法的效果,我們使用PCA圖查看并通過scater
的plotRLE()
函數(shù)計算每個細胞的相對對數(shù)表達办陷。Read較多(較少)的細胞大多數(shù)基因表達量高于(低于)中位數(shù)貌夕,導致整個細胞的RLE為正(負),而標準化后細胞的RLE接近于零懂诗。R中RLE函數(shù)的示例:
> function (expr_mat, spikes = NULL)
{
RLE_gene <- function(x) {
if (median(unlist(x)) > 0) {
log((x + 1)/(median(unlist(x)) + 1))/log(2)
}
else {
rep(NA, times = length(x))
}
}
if (!is.null(spikes)) {
RLE_matrix <- t(apply(expr_mat[-spikes, ], 1, RLE_gene))
}
else {
RLE_matrix <- t(apply(expr_mat, 1, RLE_gene))
}
cell_RLE <- apply(RLE_matrix, 2, median, na.rm = T)
return(cell_RLE)
}
注意:<
- RLE蜂嗽、TMM和UQ方法是為Bulk RNA測序數(shù)據(jù)開發(fā)的并依賴實驗背景,可能不適用于scRNA測序數(shù)據(jù)殃恒,因為它們的基本假設可能被推翻植旧。
-
scater
充當edgeR
中calcNormFactors
函數(shù)的功能辱揭,它實現(xiàn)幾種文庫大小標準化方法,可以輕松地將這些方法中的任何一種應用于我們的數(shù)據(jù)病附。 -
edgeR
對一些標準化方法進行了調(diào)整问窃,這可能會導致與原始方法的結(jié)果略有不同,例如完沪,edgeR
和scater
的“RLE”方法使用基于DESeq
的“尺度因子”域庇,可能會產(chǎn)生與DESeq/DESeq2
包中的estimateSizeFactorsForMatrix
方法不同的結(jié)果。此外覆积,除非將所有細胞的lib.size
設置為1听皿,否則某些版本的edgeR
將無法正確計算標準化因子。 - 對于CPM標準化宽档,我們使用
scater
的calculateCPM()
函數(shù)尉姨。對于RLE、UQ和TMM吗冤,我們過去使用scater
的normaliseExprs()
函數(shù)(但該函數(shù)現(xiàn)已棄用)又厉。對于scran,我們使用scran
包來計算尺度因子(也可對SingleCellExperiment
進行操作)并使用scater
的normalize()
來標準化數(shù)據(jù)椎瘟。所有這些標準化函數(shù)都將結(jié)果保存到SCE對象的logcounts
槽中覆致。對于下采樣,我們使用上方的函數(shù)肺蔚。
往期內(nèi)容:
重生之我在劍橋大學學習單細胞RNA-seq分析——5. scRNA-seq數(shù)據(jù)的基本質(zhì)量控制 (QC) 和探索(1)
重生之我在劍橋大學學習單細胞RNA-seq分析——5. scRNA-seq數(shù)據(jù)的基本質(zhì)量控制 (QC) 和探索(2)
重生之我在劍橋大學學習單細胞RNA-seq分析——5. scRNA-seq數(shù)據(jù)的基本質(zhì)量控制 (QC) 和探索(3)