如何完成GO富集分析并绘制柱状图?
之前在《案例复现(一):表达数据的下载与差异分析》、《如何获取感兴趣通路相关的基因集?》和《如何绘制好看的差异基因热图?》这3篇文章中介绍了如何从GEO数据库和GO数据库下载挖掘数据,并得到84个“oxidative stress”功能相关的差异基因。
接下来,对这84个OS-DEGs进行GO富集分析。原文中,作者使用的是DAVID (version 6.8),还是2016年的版本。不过,DAVID最近又开始更新了,我们这里使用最新的版本(v2022q3)。
DAVID链接:
https://david.ncifcrf.gov/home.jsp
GO富集分析
首先,点击Start Analysis选项按钮,进入分析页面,如下图,然后将84个“oxidative stress”功能相关的差异基因复制粘贴到输入框中(Step1: Enter Gene list);然后,选择基因ID类型为基因Symbol号 (Step2: Select Identifier);物种输入Homo Sapiens;基因List类型选择Gene List (Step3: List Type),最后,点击Submit List按钮提交任务。
接着,点击Functional Annotation Tool进行富集分析。
在富集分析结果列表中,点击加号按钮,可展开列表,这里仅选择GOTERM_BP_DIRECT、GOTERM_CC_DIRECT、GOTERM_MF_DIRECT三个选项。
然后,点击Functional Annotation Chart按钮进行富集分析,如下。
在弹出的分析结果表格中,点击Download File按钮下载表格。在弹出的网页中右键,另存为文本文件,默认为制表符分隔的文本文件,将拓展名改为“.xls”可直接用Excel打开。
当然,如果想查看单个GO分类(比如GOTERM_BP_DIRECT)的富集分析结果,可直接点击Chart按钮进行查看。
展开Options选项,可对分析结果进行设置,比如Count这里设置为5 (GO Term中至少富集到5个目的基因),勾选Fold Enrichment、FDR,点击Download File按钮下载表格。
在表格中,可选择自己感兴趣的GO term进行图表绘制,这里仅按文献中图表进行选择。这里的Fold Enrichment即富集因子,以第1行的数据为例,Fold Enrichment=(28/84)/(1714/18869)= 3.669584。
接下来,只需将三个分类的数据整合到一个表格中,如下表,然后将表格另存为csv格式的文件。
柱状图的绘制
对GO富集分析结果的可视化,这里选择使用R语言进行绘制柱状图,具体的绘图脚本如下。
#读入数据;
dt <- read.csv("GO_plotdata.csv",header = T)
#提取前3列数据用于作图;
df <- dt[,1:3]
#预览数据;
print(df)
#载入相关的R包;
library(ggplot2)
library(dplyr)
library(tidyr)
#重新生成分组标签;
Category <- c(rep("Biological Process",5),
rep("Cellular Component",5),
rep("Molecular Function",5))
#替换Category;
df$Category <-Category
#对Term列的GO id 和GO term 进行拆分;
df <- separate(df, Term, sep = "~", into = c("GO_id", "GO_term"))
#转成因子,防止重新排序;
df$GO_term <- factor(df$GO_term,levels=df$GO_term,ordered=TRUE)
#预览数据;
print(df)
#建立数据(ratio, id)与图形(点)的映射关系,即确定点的(x,y)坐标,绘制散点图;
p1<-ggplot(df, aes(Count,GO_term,fill=Category))+
geom_bar(stat="identity",width = 0.6)
p1
#设置坐标轴的标题;
p2<-p1+labs(x="Num of Genes",y="GO term")
p2
#自定义颜色;
mycolor <- c("#0077c1","#00a99e","#6bc72b","#ff5a20","#ff1620","#752995")
scolor <- mycolor[c(1,3,4)]
p3 <- p2+scale_fill_manual(values = scolor)
p3
#应用自带主题;
p3+theme_light()
#自定义图表主题,对图表做精细调整;
top.mar=0.2
right.mar=0.2
bottom.mar=0.2
left.mar=0.2
#隐藏坐标轴,并对字体样式、颜色、刻度长度等进行限定;
mytheme<-theme_light()+
theme(axis.text=element_text(family = "sans",colour ="gray20",size = 11),
panel.grid = element_blank(),
axis.ticks = element_line(size = 0.6,colour = "gray20"),
axis.ticks.length = unit(1.2,units = "mm"),
plot.margin=unit(x=c(top.mar,right.mar,bottom.mar,left.mar),
units="inches"))
p3+mytheme
当然,如果觉得以上的内容比较难的话,我这里推荐大家直接使用OmicShare的GO富集分析工具,只需上传目的基因列表即可轻松完成GO富集分析和图表绘制,更多详细的教程可参考《GO、KEGG富集分析如何显示上下调基因?》一文。
好啦,本次的分享就到这里啦!
*未经许可,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权所有,侵权必究。
基迪奥旗下绘图公众号
分享科研绘图技能与工具
欢迎关注与转发~
你的好友拍了拍你
并请你帮她点一下“分享”~