您好,登录后才能下订单哦!
这篇文章主要讲解了“DESeq2有什么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“DESeq2有什么用”吧!
对于RNA_Seq而言,得到基因/转录本的定量结果仅仅是第一步, 只是对测序数据的汇总, 相同的工作也可以通过芯片直接得到。
无论是芯片也好,测序也罢,定量只不过是量化生物体内转录本的表达丰度,仅仅一个定量的结果并不能得到有效的生物学结论。为了回答生物学问题,还需要进行后续的差异分析。
由于定量的方式有很多种,比如raw count, TPM, RPKM/FPKM 等,不同的定量方式其表达量的分布是不同的,所以差异分析时采用的软件与算法也会不同。本文介绍DESeq2这个R包,主要是针对raw count的定量结果,进行差异分析。
DESeq2要求输入的定量结果为raw count形式,raw count其实是根据reads数计算得到,所以要求必须全部是整数。
由于不同样本的测序量不完全相同,所以raw count无法在样本间直接比较,就是说同一个基因在样本A中的raw count大于样本B中的raw count , 并不意味这在A中的表达量就高,数值大可能是由于样本A测序的reads 总数大造成的。
为了在样本间进行差异分析,首先就需要对原始的raw count 表达量数据进行归一化。在DESeq2中,通过estimateSizeFactors
函数为每个样本计算一个系数,称之为sizefactor, 示意如下
> dds <- makeExampleDESeqDataSet(n=1000, m=4) > dds <- estimateSizeFactors(dds) > sizeFactors(dds) sample1 sample2 sample3 sample4 1.010543 1.033960 1.023026 1.001038
具体的计算过程如下:
原始的表达量矩阵每一行代表一个基因,每一列代表一个样本,用counts
表示,先进行log转换,转换之后,计算每个基因在所有样本中的均值,代码如下
loggeomeans <- rowMeans(log(counts))
计算单个样本的sizafactor时,将该样本中每个基因的表达量减去对应的所有样本中的均值,然后取中位数。由于开始进行了log转换,最后在转换回来。 假定一个样本中所有基因的表达量为cnts
, 代码如下
exp(median((log(cnts) - loggeomeans)[is.finite(loggeomeans) & cnts > 0]))
需要注意的时,在计算中位数时,对基因进行了过滤,需要满足以下两个条件
1.在该样本中该基因的表达量大于0
2.在所有样本中该基因的表达量都大于0,而且取log之后的和不为0
实际上第二个条件已经包含第一个条件了,在原始的表达量矩阵中,肯定会有基因在部分样本表达量为0的情况,所以最终计算中位数时,只会用到部分基因。
计算出每个样本的sizefactor之后,将该样本原始的表达量除以该样本的sizefactor, 就得到了归一化之后的表达量。
对于raw count 的归一化,本质是消除不同样本测序总量不同的影响,反应到表达量矩阵上,就是每列的总和不同。DESeq2计算得到的sizefactor和每列的总和之间是一个线性关系,示意如下
所以sizefactors 能够用来进行归一化。
感谢各位的阅读,以上就是“DESeq2有什么用”的内容了,经过本文的学习后,相信大家对DESeq2有什么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。