基本上RNA-Seq等等各种测序手段都需要计算差异表达
通常大家常用的软件不外乎cufflinks和几个R包DESeq、EBSeq、edgeR、ballgown。
值得一提的是现在的软件和R包大多需要有生物学重复才能准确计算差异表达情况
目前,我只了解edgeR可以在无生物学重复的情况下计算差异表达。
edgeR 官方发布页[中科大镜像]:http://mirrors.ustc.edu.cn/bioc/packages/release/bioc/html/edgeR.html
简单写一下edgeR的用法
首先,安装edgeR包
source('https://www.bioconductor.org/biocLite.R')
biocLite('edgeR')
随后,读取数据,修饰成如图的模样,列名自己随意定义能够识别对应什么样本就好,行名需要为对应的转录本或者基因的可识别的ID或者名称
无生物学重复
library(edgeR) # 加在edgeR
# counts就是上图的dataframe
# group就是分组,数据来源为几组,就对应的分成几组
# 如果有6组数据,分别来自于三组数据,那么group=c(1, 1, 2, 2, 3, 3),123分别对应来源
y <- DGEList(counts=counts, group=1:2)
# bcv是官方文档的推荐数值(对应人的,对应其他物种的值不清楚),可以自己调整
bcv = 0.1
et <- exactTest(y, dispersion=bcv^2)
results = et$table
以上,即完成了无生物学重复的差异表达的计算
结果中,有三列
- logFC是treat/control的log2(Fold Change),并不是简单的count值的对比,而是分别计算了两组的CPM值然后计算的logFC
- logCPM是CPM值的log2
- PValue,差异表达的p值
补充,CPM(count per million)CPM = 每个转录本的count值/某样本总count值 * 10^6
如果,还需要计算q值,自行通过R的p.adjust计算一下就好
results$q = p.adjust(results$PValue, method = 'fdr')