【康华同学】:优秀生物信息学博客

差异分析|edgeR包

2021-11-30  本文已影响0人  小杜的生信筆記

获取本章节数据和代码:关注微信公众号:小杜的生信筆記(ID:Du_Bioinformatics),回复关键词:edgeR差异分析

简介

edgeR包也是用于做差异分析的包,也算是比较常用的方法。对于我自己来做分析,edgeR包主要是用来做没有重复的数据差异分析。如果你的数据没有重复,那么建议使用edgeR包来做差异,但是在实验设计是没有设置重复,那么你得想清楚哦!(仅个人观点)

edgeR给出的描述如下下,你可以详细阅读edgeR帮助文档。

image.png

1 数据准备

我们使用前面DESeq2差异分析中的数据(注:我们有重复),我们的数据仅是练习数据,没有任何参考价值。

     Control_01 Control_02 Control_03 Treat_01 Treat_02 Treat_03
gene01         11         11         11       10       11       10
gene02         14         14         14       13       14       13
gene03         14         14         14       13       14       13
gene04          7          7          7        6        7        6
gene05         11         11         11       11       11       10
gene06         14         14         14       13       14       12

2 导入相关包

#install.packages("fdrtool")
#install.packages("edgeR")
library(edgeR)
library("fdrtool") 

3 导入数据

rawdata <- read.table("Countdata.txt", header = T, row.names = 1)
head(rawdata)

制作样本文件的注释信息

group <- factor(c(rep("CK",3),rep("Treat",3)))

4 数据处理

过滤与标准化

y <- DGEList(counts = rawdata, genes = rownames(rawdata), group = group)
#过滤
keep <- rowSums(cpm(y)>1) >= 1
y <- y[keep,,keep.lib.sizes=FALSE]
##TMM 标准化
y <- calcNormFactors(y)
y$samples

5 数据分析

###推测离散度,若样本是人,设置bcv = 0.4,模式生物设置0.1(此处是根据有相关教程进行设置,也可以你根据你的结果自行设置,最终得到你的理想值)

bcv <- 0.2
et <- exactTest(y, dispersion=bcv^2)
topTags(et)
summary(de <- decideTestsDGE(et))
###图形展示检验结果
png('0h_vs_2h_MAplot.png')
detags <- rownames(y)[as.logical(de)];
plotSmear(et, de.tags=detags)
abline(h=c(-4, 4), col="blue");
dev.off()
image.png

6 矫正P值

#矫正P值
res <- DE
head(DE)
res$FDRP <- p.adjust(res$PValue,method = "fdr",n=length(res$PValue))
#res$logP <- -log10(res$FDRP)
head(res)

[图片上传失败...(image-909522-1638249704871)]

7 筛选出差异基因

## 筛选出差异基因
## 筛选标准 FDR < 0.05,|logFC| > 1
diffsig <- res[(res$FDRP < 0.05 & abs(res$logFC) > 1),]
dim(diffsig)
###----------
> dim(diffsig)
[1] 751   5

共得到751个差异基因


筛选上调和下调的基因,并进行标识,方法与前面的一致。

## 新增一列,标显著性
res$Group <- "Not"
######
res$Group[which((res$FDRP < 0.05) & (res$logFC > 1))] = "Up"
res$Group[which((res$FDRP < 0.05) & (res$logFC < -1))] = "Down"
#### 查看DE数目
table(res$Group)
#-----------
> table(res$Group)
 Down   Not    Up 
  517 14862   234 

叮! edgeR差异分析到此结束,就是这样的简单。差异火山图和热图,可参考以前的文章即可。


image.png

“小杜的生信筆記” 公众号、知乎、简书、B站平台,主要发表或收录生物信息学的教程,以及基于R的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!

差异分析|使用limma包

差异分析 | DESeq2包

上一篇下一篇

猜你喜欢

热点阅读