OSCA单细胞数据分析笔记-6、Normalization
笔记要点
1、背景知识
1.1为什么要标准化
1.2标准化≠批次校正
2、标准化最常见流程
2.1假设
2.2计算细胞⽂库sizefactor
2.3log转换
3、标准化特殊情形
3.1细胞⽂库标准化之平衡的差异基因?
3.2根据外参转录本的标准化
1、背景知识
1.1为什么要标准化
因为在制备单细胞⽂库时,排除低质量细胞的前提下,最理想的测序结果就是每个细胞的⽂库⼤⼩均相同,这样不同细胞的相同基因⽔平才具
有可⽐性。
但由于客观原因(cDNA捕获、PCR复制)等技术误差的存在,细胞间的⽂库⼤⼩会存在⼀定差异。造成的后果就是某⼀基因在细胞间的表达差
异就由技术误差和⽣物⽔平差异构成。从⽽可能导致错误的结论。
标准化这⼀步简单来说就是消除细胞⽂库⼤⼩的差异性。
1.2标准化≠批次校正
标准化的前提是认为细胞间的⽂库差异性完全由测序时的技术误差造成的。⽽这种技术误差总体是可消除的。因为我们常常假设技术误差对所
有的基因表达有相同⽅向/模式的影响。例如技术误差使基因A的表达量降低10%,那么其它所有基因的表达量都会降低10%。
批次效应则不仅仅意味着批次之间有更为明显的技术误差存在,⽽且各个批次的取样细胞的⽣理状态不同所造成的额外⽣物⽔平误差往往是难
以预测的,因此需要采取不同于标准化的思路进⾏校正。
关于批次效应的校正⽅法,在之后章节会有说明。这⾥只是想强调下标准化与批次校正是两个不同的概念。
2、标准化最常见流程
2.1假设
每⼀个细胞测序时受到的的技术误差,对其内的所有基因表达有相同模式的影响。
⽤⼀个指标(sizefactor)评价每⼀个细胞受到的技术误差⼤⼩、⽅向(相对所有细胞⽂库的均值,⽽不是绝对意义上的偏离标准⽂库的距离)。
然后分别根据每个细胞的指标的值进⾏对该细胞的标准化。最后使基因在不同细胞间的表达具有可⽐性。可能说的⽐较抽象,下⾯举例⼦应该
会好理解些。
2.2计算细胞⽂库sizefactor
#dim:198392816
#assays(1):counts
(1)⾸先计算每个细胞⽂库的⼤⼩
=apply(counts(),2,sum)
head()
#1772071015_C_G7_A_B_H_E02
#223542286932594335252169425919
(2)计算所有细胞⽂库均值【参考标准】
mean()
#15550.11
(3)计算每个细胞的细胞⽂库
=/mean()
head()
#1772071015_C_G7_A_B_H_E02
#1.4375461.4706642.0960622.1559331.3951021.666805
如上结果表⽰相对每个细胞⽂库相对于平均细胞⽂库⼤⼩的⽐例。
library(scater)#⼀步计算
<-librarySizeFactors()
summary()
#.
#0.17570.56800.86801.00001.27834.0839
#均值⼀定为0
#值⼤于1的需要缩⼩;⼩于1的需要放⼤
(4)然后根据每个细胞的细胞⽂库sizefactor对该细胞的所有基因表达进⾏归⼀化处理,即基因表达量除以细胞⽂库因⼦。这⾥的“⼀”就代
表平均细胞⽂库⼤⼩。
#以第⼀个细胞为例
normalized<-counts([,1])/[1]
2.3log转换
log转换最主要的⽬的是我们在之后计算细胞的距离时主要想依据细胞间基因表达差异倍数变化⽽不是简单的差值。试想细胞1的基因A表达量
为50,B的表达量为1000;细胞2的基因A表达量为10,B的表达量1000。那个基因变化最明显的,显然使⽤差异倍数更有意义。⽽取log之
后的减法即为除法,可以表⽰logFoldChange
由于单细胞测序结果的稀疏性,很多基因的表达值为0,⽆法取log。所以会为所有细胞的基因加⼀个pudo-count表达(⼀般取1,log后还
是为0,未改变稀疏性)。
#⼀般取log2
log_normalized=log2(normalized+1)
如上就得到了最终标准化后的表达矩阵。
2.4logNormCounts⼀步完成
<-logNormCounts()
assays()
#Listoflength2
#names(2):countslogcounts
counts()[1:4,1:4]
logcounts()[1:4,1:4]
如上结果,标准化后的结果保存在logcountsassay⾥⾯
3、标准化特殊情形
3.1细胞⽂库标准化之平衡的差异基因?
(1)在使⽤⽂库标准化sizefactor时,有⼀个潜在的假设就是balanceddifferentially
expresdgenes,在某⼀细胞中若存在某些基因表达上调,那么⼀定会存在某些基因下调。
举例1:假设⼀个细胞测序表达有100个基因,⽂库⼤⼩为100。基因2-99表达量均为1,⽽基因1表达量为1.5;⽽基因100的表达量为0.5(对
照细胞100个基因表达全为1)。就可以说是balancedDE,符合我们预期的假设。因为不影响剩下的98个non-DEG
(2)但是单细胞测序中,往往会出现imbalancedDEG,即⽐较多的出现上调基因或者下调基因,从
⽽使原本的non-DEG变成DEG。术语称之为compositionbias
举例2:假设⼀个细胞测序表达有100个基因,⽂库⼤⼩为101。基因2-100表达量均为1,⽽基因1表达量为2(对照细胞100个基因表达全为
1)。
举例3:假设⼀个细胞测序表达有100个基因,⽂库⼤⼩为100。基因1表达量为2,基因2-100表达量为0.99,⽽(对照细胞100个基因表达全
为1)。
⽆论是例2,还是例3,在经过标准化之后的差异分析结果就是基因1真实相对上调;基因2-99表⾯相对下调,其实本质为non-DEG。
(3)从对之后的分析影响来看,作者认为compositionbias对于单细胞之后的聚类分群、Topmarker
gene结影响不会很⼤。但如果想进⾏单基因⽔平的分析,还是最好相除这种误差。
(4)如何最⼤化避免compositionbias
对于传统的BulkRNA-q数据,
DESeq2
包的
estimateSizeFactorsFromMatrix()
函数、
edgeR
包的
calcNormFactors()
函数会考虑到这种误差。它
们主要是假设⼤部分的基因均为non-DEG,所以当⼀个测序结果⾥的⼤部分基因出现相对于对照组的系统偏移时,会认为是
composition
bias
,计算合适的sizefactor予以去除。
对于单细胞测序结果来说,因为表达矩阵的稀疏性,上述的函数⽅法不太适合。可以设置
calculateSumFactors()
函数的
cluster
参数。主要是假设
每个cluster间为non-DE,先对cluster总体的pool-badsizefactor的标准化;再对每个cluster⾥的细胞分别进⾏cell-badsize
factor标准化。
library(scran)
(100)
<-quickCluster()
table()
<-calculateSumFactors(,cluster=)
<-computeSumFactors(,cluster=,=0.1)
<-logNormCounts()
3.2根据外参转录本的标准化
(1)前提假设
每个细胞初始⽔平添加的spike-in转录本的含量是⼀致的;
测序技术误差⽆论对于内源基因还是外参转录本都有相同的模式的表达影响。
(2)适⽤情形
之前提到的细胞⽂库sizefactor标准化相当于是把所有细胞的⽂库⼤⼩拉到同⼀⽔平进⾏基因的⽐较;
但是如果观察的⽬的之⼀就是细胞内基因表达总量的变化,例如T细胞激活前后等,具体要结合⽣物背景知识了;
相关函数有
computeSpikeFactors()
,⽰例在原教程⾥有,这⾥就不多展开了。
本文发布于:2023-01-01 16:57:12,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/73117.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |