edgeR:Empirical Analysis of Digital Gene Expression Data in R
一个R包,用于RNA-seq或相关技术分析中,基因差异性表达的read count的分析。(read count 已通过HTseq-count等工具得到)。
read counts的来源可以htseq-count等计算原始count的结果,不可以是cufflinks等计算normalization count的结果。
counts数据格式:至少为两列,一列为基因类表,一列为raw counts。如果数据存储在不同的文件中,则应该将其合并。可以用readDGE函数。
edgeR是以DEGList的格式储存数据,DEGList是一个以list为基础的数据格式,list的所有方法其都可以使用。
1.构建DEGList:用DEGList()构建。
>y<-DGEList(counts=x) #x是read counts的matrix或data.flame。 >group<-c(1,1,2,2) #关于sample属于哪一个group。 >y<-DGEList(counts=x,group=group)
DEGList中主要包括一个counts matrix,一个 samples data.frame,还有一个可选的genes data.frame(注释)。
sample data.frame 主要包括library的size或sample的sequencing depth,如果没给,则会默认按counts的总和来计算。但是必须 sample data.frame必须包含一个列group,用于区分samples属于哪一个group。
2。过滤:
生物学上看,一个基因要被表达成蛋白或是其他的生物功能,则它的表达量应该达到一个最低的水平。
所以在进一步分析前,应该过滤掉一些low counts的基因。这里用cpm(count per million)来表示基因的counts水平。
>keep<-rowSums(cpm(y)>1)>=2 #>=2表示每个group中的samples数最少是2. >y<-y[keep, ,keep.lib.sizes=FALSE]
3.TMM标准化:
在treated和untreated样品中,常常会有少量的基因在treated样品中高表达,但在untreated样品则正常。在treated样品中,高表达的基因的reads会占据一大部分的library size,
而导致剩余基因被错误的判断为下调。
>y<-calcNormFactors(y) >y$samples
4.离散度的检测(dispersion)
design<-model.matrix(~group)
y<-estimateGLMCommonDisp(y,design,verbose=TRUE)
y<-estimateGLMTrendedDisp(y, design)
y<-estimateGLMTagwiseDisp(y, design)
5.差异性基因分析
to perform quasi-likelihood F-tests:
fit <- glmQLFit(y,design)
qlf <- glmQLFTest(fit,coef=2)
topTags(qlf)
to perform likelihood ratio tests:
fit<-glmFit(y, design)
lrt<-glmLRT(fit)
topTags(lrt)#前10个差异表达基因,内容分别为:genes:logFC:logCPM:F:PValue:FDR
#FC:fold change,,一般取两个样本的比值的均值,由于两个样本之间差异过大,为了缩小数值之间的差异,做对数转换。
P VALUE:统计学检验变量,代表差异显著性,一般认为p值小于0.05代表具有显著性差异。
参考:
http://blog.sina.com.cn/s/blog_5d188bc40102vwci.html
http://blog.sciencenet.cn/blog-508298-776802.html