01. 前言

在不久的将来,预计新兴的数字基因表达(DGE) 技术在许多功能基因组学应用方面将超越微阵列技术。其中的一个基础数据分析任务,尤其是基因表达研究,涉及确定是否有证据表明对于转录本或外显子在实验中显著不同。

edgeR 是用于检查的 Bioconductor 软件包重复计数数据的差异表达。过度分散的泊松模型用于解释生物学和技术变化性。经验贝叶斯方法用于调节度数跨转录本的过度分散,提高可靠性推理。该方法甚至可以使用最小的复制水平,提供至少一种表型或实验条件被复制。该软件可能有其他应用程序超越测序数据,例如蛋白质组肽计数数据。

本篇继续展示 R 包 edgeR 的差异基因分析流程。类似 limma, DESeq2,edgeR 作为被广泛使用的 R 包,文献中经常能看到它的身影。基于转录组测序获得的定量表达值,识别差异表达变化的基因或其它非编码 RNA 分子,实际上方法还是非常多的。

02. 数据文件读取

数据的读取我们仍然使用的是 TCGA-COAD 的数据集,表达数据的读取以及临床信息分组的获得我们上期已经提过,不过这里还是附上源代码,方便大家对整体分析有个全面的理解,如下:

library(TCGAbiolinks)
query <- GDCquery(project ="TCGA-COAD",data.category = "Transcriptome Profiling",data.type ="Gene Expression Quantification" ,workflow.type="HTSeq - Counts")samplesDown <- getResults(query,cols=c("cases"))  dataSmTP <- TCGAquery_SampleTypes(barcode = samplesDown,typesample = "TP")dataSmNT <- TCGAquery_SampleTypes(barcode = samplesDown,typesample = "NT")group<-as.data.frame(list(Sample=c(dataSmTP,dataSmNT),Group=c(rep("TP",length(dataSmTP)),rep("NT",length(dataSmNT)))))###设置barcodes参数
queryDown <- GDCquery(project = "TCGA-COAD",data.category = "Transcriptome Profiling",data.type = "Gene Expression Quantification", workflow.type = "HTSeq - Counts", barcode = c(dataSmTP, dataSmNT))# 首次下载数据需要执行,这里已经下载过了,不在执行,默认存放位置为当前工作目录下的GDCdata文件夹中。
#GDCdownload(queryDown,method = "api",
#            directory = "GDCdata",#           files.per.chunk = 10)# GDCprepare():Prepare GDC data,准备GDC数据,使其可用于R语言中进行分析
dataPrep1 <- GDCprepare(query = queryDown, save = TRUE, save.filename = "COAD_case.rda")# 函数功能描述:Array Array Intensity correlation (AAIC) and correlation boxplot to define outlierdataPrep2 <- TCGAanalyze_Preprocessing(object = dataPrep1,cor.cut = 0.6,datatype = "HTSeq - Counts")
dim(dataPrep2)

03. 数据预处理

在数据处理这部分,我们使用 edgeR 的数据过滤模式,该文章提到的过滤 low count 数据,例如 CPM 标准化(推荐),然后标准化,以 TMM 标准化为例,如下:

library(edgeR)
#(1)构建表格
dgelist <- DGEList(counts = dataPrep2, group = group$Group)#(2)过滤
keep <- rowSums(cpm(dgelist) > 1 ) >= 2
dgelist <- dgelist[keep, , keep.lib.sizes = FALSE]#(3)标准化
dgelist_norm <- calcNormFactors(dgelist, method = 'TMM')

04. 差异表达分析

首先根据分组信息构建试验设计矩阵,分组信息中一定要是对照组在前,处理组在后,然后)估算基因表达值的离散度,模型拟合,edgeR 提供了2种拟合算法包括:

  1. 负二项广义对数线性模型;

  2. 拟似然负二项广义对数线性模型。

design <- model.matrix(~group$Group)#install.packages("statmod")
library(statmod)
dge <- estimateDisp(dgelist_norm, design, robust = TRUE)#(2)模型拟合,edgeR 提供了多种拟合算法
#负二项广义对数线性模型
fit1 <- glmFit(dge, design, robust = TRUE)
lrt1 <- topTags(glmLRT(fit1), n = nrow(dgelist$counts))
lrt1<-as.data.frame(lrt1)
head(lrt1)##                     logFC      logCPM        LR        PValue           FDR
## ENSG00000142959 -5.924830  3.20085238 1457.1137 8.159939e-319 2.592984e-314
## ENSG00000163815 -4.223787  2.59792097 1145.7948 3.679815e-251 5.846674e-247
## ENSG00000107611 -5.131288  1.71477711 1122.0643 5.289173e-246 5.602468e-242
## ENSG00000162461 -4.101967  1.51480635 1085.9423 3.752089e-238 2.980753e-234
## ENSG00000163959 -4.295806  3.39558390 1080.7407 5.067873e-237 3.220836e-233
## ENSG00000144410 -6.284258 -0.02616284  916.3497 2.739233e-201 1.450744e-197#拟似然负二项广义对数线性模型
fit2 <- glmQLFit(dge, design, robust = TRUE)
lrt2 <- topTags(glmQLFTest(fit2), n = nrow(dgelist$counts))

05. 绘制火山图

火山图的绘制仍然使用 EnhancedVolcano 包,因为非常好用,只需要修改几个参数,比如输入矩阵的变量,x, y 变量所使用的列名称即可,输出火山图,这里我们使用的是负二项广义对数线性模型获得的差异基因结果,如下:

require(EnhancedVolcano)
EnhancedVolcano(lrt1,lab = rownames(lrt1),labSize = 2,x = "logFC",y = "PValue",#selectLab = rownames(lrt)[1:4],xlab = bquote(~Log[2]~ "fold change"),ylab = bquote(~-Log[10]~italic(P)),pCutoff = 0.001,## pvalue闃堝€?FCcutoff = 1,## FC cutoffxlim = c(-5,5),ylim = c(0,5),colAlpha = 0.6,legendLabels =c("NS","Log2 FC"," p-value"," p-value & Log2 FC"),legendPosition = "top",legendLabSize = 10,legendIconSize = 3.0,pointSize = 1.5,title ="edgeR results",subtitle = 'Differential Expression Genes',
)

06. 筛选差异基因

筛选差异基因,首先对表格排个序,按 FDR 值升序排序,相同 FDR 值下继续按 log2FC 降序排序,然后标记三种情况的基因:

  1. 上调的基因:log2FC≥1 & FDR<0.01 标识 up;

  2. 下调的基因:log2FC≤-1 & FDR<0.01 标识 down;

  3. 非差异的基因:其余标识 none。

lrt1 <- lrt1[order(lrt1$FDR, lrt1$logFC, decreasing = c(FALSE, TRUE)), ]lrt1[which(lrt1$logFC >= 1 & lrt1$FDR < 0.01),'sig'] <- 'up'
lrt1[which(lrt1$logFC <= -1 & lrt1$FDR < 0.01),'sig'] <- 'down'
lrt1[which(abs(lrt1$logFC) <= 1 | lrt1$FDR >= 0.01),'sig'] <- 'none'
#输出选择的差异基因总表
res <- subset(lrt1, sig %in% c('up', 'down'))
head(res)##                     logFC      logCPM        LR        PValue           FDR  sig
## ENSG00000142959 -5.924830  3.20085238 1457.1137 8.159939e-319 2.592984e-314 down
## ENSG00000163815 -4.223787  2.59792097 1145.7948 3.679815e-251 5.846674e-247 down
## ENSG00000107611 -5.131288  1.71477711 1122.0643 5.289173e-246 5.602468e-242 down
## ENSG00000162461 -4.101967  1.51480635 1085.9423 3.752089e-238 2.980753e-234 down
## ENSG00000163959 -4.295806  3.39558390 1080.7407 5.067873e-237 3.220836e-233 down
## ENSG00000144410 -6.284258 -0.02616284  916.3497 2.739233e-201 1.450744e-197 down

差异基因个数, 还是蛮多的,估计是正常样本的数据量挺少的,导致偏向性非常高。

table(res$sig)
##
## down   up
## 3308 8164

基于基因表达的三个软件包 limma, DESeq2,edgeR 都已经介绍了,筛选自己的数据用起来吧,后面在讲文章中差异表达的数据在 SCI 文章中怎样展示给出大家,敬请期待!

关注公众号,每日有更新!

桓峰基因

生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你

40篇原创内容

公众号

Reference:

  1. Robinson MD, McCarthy DJ, Smyth GK. edgeR: a Bioconductor package for differential expression analysis of digital gene expression data. Bioinformatics. 2010;26(1):139-140.

  2. Agarwal A, Koppstein D, Rozowsky J, et al. Comparison and calibration of transcriptome data from RNA-Seq and tiling arrays. BMC Genomics. 2010;11:383.

  3. Love MI, Huber W, Anders S. Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2. Genome Biol. 2014;15(12):550.

  4. Maurya NS, Kushwaha S, Chawade A, Mani A. Transcriptome profiling by combined machine learning and statistical R analysis identifies TMEM236 as a potential novel diagnostic biomarker for colorectal cancer. Sci Rep. 2021;11(1):14304.

RNA 4. SCI 文章中基于TCGA 差异表达之 edgeR相关推荐

  1. RNA 24. SCI文章中基于TCGA的免疫浸润细胞分析的在线小工具——TIMER

    点击关注,桓峰基因 桓峰基因 生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你 135篇原创内容 公众号 今天来介绍一个使 ...

  2. RNA 30. SCI文章中基于TCGA和GTEx数据挖掘神器(GEPIA2)

    这期介绍一个基于TCGA和GTEx数据挖掘神器(GEPIA2),个人觉得如果没有编程基础的可以直接利用这个在线小工具分析自己的研究的单个基因或者多个基因,效果还是蛮好的! 桓峰基因公众号推出转录组分析 ...

  3. RNA 29. SCI文章中基于TCGA的免疫浸润细胞分析 (TIMER2.0)

    桓峰基因公众号推出转录组分析教程,有需要生信的老师可以联系我们!转录分析教程整理如下: RNA 1. 基因表达那些事--基于 GEO RNA 2. SCI文章中基于GEO的差异表达基因之 limma ...

  4. RNA 2. SCI文章中基于GEO的差异表达基因之 limma

    01. 前言 目前随着测序成本的降低,越来越多的文章中都将使用基因的表达数据,那么就会涉及到差异基因,最基础的思路就是获得表达数据,根据临床信息进行分组,利用各种软件计算出差异表达基因,这里主要基于G ...

  5. RNA 27 SCI文章中转录因子结合motif富集到调控网络 (RcisTarget)

    点击关注,桓峰基因 桓峰基因公众号推出转录组分析和临床预测模型教程,有需要生信的老师可以联系我们!首选看下转录分析教程整理如下: RNA 1. 基因表达那些事–基于 GEO RNA 2. SCI文章中 ...

  6. RNA 25. SCI文章中只有生信没有实验该怎么办?

    今天来介绍一个使用非常方便的在线免疫组化分析工具--PHA (The Human atlas),免疫组化时单基因干湿结合生信中最常见的补充实验的方法之一,性价比较高.但是如果没有条件进行自己样本的免疫 ...

  7. RNA 25. SCI文章中估计组织浸润免疫细胞和基质细胞群的群体丰度(MCP-counter)

    点击关注,桓峰基因 今天来介绍一个利用基因表达估计组织浸润免疫细胞和基质细胞群的群体丰度的软件包--MCP-counter,亲试,非常好用. 桓峰基因的教程不但教您怎么使用,还会定期分析一些相关的文章 ...

  8. RNA 15. SCI 文章中的融合基因之 FusionGDB2

    基于 RNA 数据分析1-13期基本介绍完成,而基因融合同样也是转录组测序中能够获得的对于临床上非常有意义的数据,这期就看看融合基因该怎么分析,增添文章的内容. 一. 融合基因 融合基因就是两个基因& ...

  9. RNA 5. SCI 文章中差异基因表达之 MA 图

    基于 RNA 数据的分析还有很多展示形成,我这里都会一次介绍,以及最后的 SCI 文章中的组图,完成所有分析流程,首先讲下 MA 图形的绘制流程,这里还是非常全面的,仅供参考! MA plot MA- ...

最新文章

  1. C++中的 auto类型详解
  2. Servlet服务器搭建过程中一些经验 Tomcat+Mysql数据库+http传输
  3. ant编译无法依赖rt.jar
  4. Python数据可视化案例二:动态更新数据
  5. 信贷系统学习总结(3)——现金贷之产品架构和信审系统
  6. yaws mysql_MySQL入门之C语言操作MySQL
  7. 大厂面经----接近30场面试分享
  8. Unix环境高级编程代码(实时更新)
  9. MongoDB的安装和基础CRUD
  10. C/C++ 内存对齐原则及作用
  11. python将一个word文档中内容全部复制,添加到另一个word文档末
  12. ZYNQ的Linux Linaro系统镜像制作SD卡启动
  13. 超详细的数据分析职业规划
  14. 董嘉文抵达之谜:真正的努力从来都不动声色
  15. 亚马逊SP-API申请 PII权限申请 ERP开发 开发人员注册
  16. [原]VC极域电子教室相关功能的实现dll(差不多是“外挂”)
  17. 计算机ata分数分配,分数N锁相环发送器ATA5749功能与工作原理
  18. 《屋檐三境》——梦天岚
  19. 湖北恩施高考成绩查询2021,2021年湖北高考成绩什么时候出(附查询入口)
  20. 卫星通信 | 矩阵开关多路耦合器性能参数解读

热门文章

  1. c语言交换瓶子流程图,第七届蓝桥杯第9题:交换瓶子
  2. Strassen 矩阵乘法
  3. iOS内购遇到的问题之返回的response.products为空
  4. Kotlin基本语法 问好(?)与两个叹号(!!)
  5. 数据结构与算法_二叉树遍历
  6. 深度优先与广度优先 java
  7. ch2 计算机的发展史
  8. DHH推荐的五本书(未完待续)
  9. docker run 与 docker start区别
  10. CSS动画——加载的菊花转动画