2、Normalization
2020-09-19 本文已影响0人
小贝学生信
1、目的
- 每个细胞可能因为测序深度的差异,而导致sum、detected的差异。
typically arise from technical differences in cDNA capture or PCR amplification efficiency across cells - 因而为了下游分析的准确性,必须去除这种基因文库差异。
ensures that any observed heterogeneity or differential expression within the cell population are driven by biology and not technical biases.
#加载第一步的QC数据
load("fluidigm_qc.Rdata")
fluidigm_qc
library(scater)
#scater常用函数默认使用名为counts的原始矩阵,为了方便,copy、rename第三个矩阵
counts(fluidigm_qc) <- assay(fluidigm_qc, 3)
2、size factor
- size factor是评价每个细胞sum counts的指标。
- 计算方法为:每个细胞sum counts/所有细胞sum counts的均值,得到的值为均值为1,附近波动的具体值。
#计算size.factor
lib.sf.fluidigm <- librarySizeFactors(fluidigm_qc)
summary(lib.sf.fluidigm)
head(lib.sf.fluidigm)
head(fluidigm_qc$sum)
#or
lib.sf <- fluidigm_qc$sum/mean(fluidigm_qc$sum)
2-1
- 我的理解,测序counts的大小都是相对的,size factor即旨在把所有细胞文库大小拉到统一尺度的媒介,便于后续的分析。
- 矫正后的细胞sum counts=原始sum counts/size factor。
The size factor for each cell represents the estimate of the relative bias in that cell, so division of its counts by its size factor should remove that bias.
3、log-transforming
- 一般进行normalization后,就进行log2转换
The log-transformation is useful as differences in the log-values represent log-fold changes in expression. - 得到的结果的gene在不同细胞的差值就是log-fold changes,便于下游分析。
- log转换时一般会给矩阵所有值,加上 a pseudo-count to avoid undefined values at zero
4、实现方法
-
scater
包的logNormCounts
可对并仅对提供的counts矩阵直接进行上述所有的操作,并将结果命名为logcounts添加到sce对象的assay slot
fluidigm_lgnm <- logNormCounts(fluidigm_qc)
assays(fluidigm_lgnm)
logcounts(fluidigm_lgnm)[1:4,1:4]
save(fluidigm_lgnm, file = "fluidigm_lgnm.Rdata")
logcounts(fluidigm_lgnm)[1:4,1:4]
- 自己写了一遍实现上述操作的代码,效率较低(10+s),结果基本一致
dim(counts(fluidigm_qc))
res <- matrix(nrow=26255,ncol=127)
Sys.time()
for(i in 1:length(lib.sf.fluidigm)){
cell <- counts(fluidigm_qc)[,i]
#cell <- counts(fluidigm_qc)[,1]
x=cell/lib.sf.fluidigm[i] #向量化操作
x=x+1
x=log2(x)
res[,i]=x
}
Sys.time()
res[1:4,1:4]
res[1:4,1:4]
以上是第七章Normalization部分的简单流程笔记。原文还介绍了Normalization by deconvolution or spike-ins两种方法,详见Chapter 7 Normalization
本系列笔记基于OSCA全流程的大致流程梳理,详细原理可参考原文。如有错误,恳请指正!
此外还有刘小泽老师整理的全文翻译笔记,详见目录