打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
GO、KEGG富集分析(一)有参情况

一、GO分析的理论知识

what is Gene Ontology(GO)? 基因'本体论'
Gene Ontology中最基本的概念是 term。GO里面的每一个entry都有一个唯一的数字标记,形如 GO: nnnnnnn,还有一个term名,比如 'cell', 'fibroblast growth factor receptor binding',或者 'signal transduction'。每个term都属于一个ontology,总共有三个ontology,它们分别是molecular function, cellular component和biological process。

对基因的描述一般从三个层面进行:

Cellular component,CC 细胞成分Biological process, BP 生物学过程Molecular function,MF 分子功能

这三个层面具体是指:

Cellular component:解释的是基因存在在哪里,在细胞质还是在细胞核?如果存在细胞质那在哪个细胞器上?如果是在线粒体中那是存在线粒体膜上还是在线粒体的基质当中?这些信息都叫Cellular component。Biological process:是在说明该基因参与了哪些生物学过程,比如,它参与了rRNA的加工或参与了DNA的复制,这些信息都叫Biological processMolecular function:在讲该基因在分子层面的功能是什么?它是催化什么反应的?

得到GO注释

模式生物 ---> 有标准的注释数据库;非模式生物 ---> 自己搜注释数据库(怎们搜后面具体介绍),搜不到就用blast的办法解决。

做GO分析的思路:

gene expression distribution --->control VS treatment ---> DEG ---> GO enrichment analysis

也就是RNA-Seq先测出各组的基因表达分布:通过比较 control 和 treatment 得到差异表达基因再去做GO富集分析:用找到的差异基因去做GO富集分析,希望能从这三方面找到和我们背景不一样的地方。

比如,在疾病研究的时候,进行药物治疗之后某些基因的表达量明显的发生了变化,拿这些基因去做GO分析发现在Biological process过程当中集中在RNA修饰上,然后在此基础上继续进行挖掘。这个例子就是想启示大家拿到差异表达基因DEG只是一个开始,接下来就应该去做GO注释,之后需要进行一个分析看这些注释主要集中在哪个地方。假如我们有100个差异表达基因其中有99个都集中在细胞核里,那我们通过GO分析就得到了一个显著的分布。

GO富集分析原理:
有一个term注释了100个差异表达基因参与了哪个过程,注释完之后(模式生物都有现成的注释包,不用我们自己注释),计算相对于背景它是否显著集中在某条通路、某一个细胞学定位、某一种生物学功能。

二、使用clusterProfiler进行GO/KEGG富集分析

clusterProfiler是一个功能强大的R包,同时支持GO和KEGG的富集分析,而且可视化功能非常的优秀,本章主要介绍利用这个R包来进行Gene Ontology的富集分析。
进行GO分析时,需要考虑的一个基础因素就是基因的GO注释信息从何处获取。Bioconductor上提供了以下19个物种的Org类型的包,包含了这些物种的GO注释信息

packages organismorg.Ag.eg.db Anophelesorg.At.tair.db Arabidopsisorg.Bt.eg.db Bovineorg.Ce.eg.db Wormorg.Cf.eg.db Canineorg.Dm.eg.db Flyorg.Dr.eg.db Zebrafishorg.EcK12.eg.db E coli strain K12org.EcSakai.eg.db E coli strain Sakaiorg.Gg.eg.db Chickenorg.Hs.eg.db Humanorg.Mm.eg.db Mouseorg.Mmu.eg.db Rhesusorg.Pf.plasmo.db Malariaorg.Pt.eg.db Chimporg.Rn.eg.db Ratorg.Sc.sgd.db Yeastorg.Ss.eg.db Pigorg.Xl.eg.db Xenopus

对于以上19个物种,只需要安装对应的org包,clusterProfile就会自动从中获取GO注释信息,我们只需要差异基因的列表就可以了,使用起来非常方便。

clusterProfiler包的安装
#bioconductor 安装#install.packages('BiocManager')  #需要首先安装 BiocManager,如果尚未安装请先执行该步BiocManager::install('clusterProfiler')
1. GO富集分析

1.1 准备输入数据
待分析的数据就是一串基因名称了,可以是ensembl id、entrze id或者symbol id等类型都可以。把基因名称以一列的形式排开,放在一个文本文件中(例如命名“gene.txt”)。Excel中查看,就是如下示例这种样式。


1.2 加载参考物种的基因注释数据库
#(1)对于常见物种,例如人类,有些专门的 R 包数据库,例如人类参考基因组 hg19 的library(org.Hs.eg.db)#(2)对于不常见的物种,但却是存在参考基因组的情况#通过 AnnotationHub 包索引基因组,例如期望找绵羊(Ovis aries)的注释库library(AnnotationHub)hub <- AnnotationHub()query(hub, 'Ovis aries') #输入绵羊(Ovis aries)的名称进行匹配sheep <- hub[['AH72269']] #返回了数据库编号 AH72269,就可以加载该库

1.3 GO富集分析
加载了注释库之后,读取基因列表文件,并使用clusterProfiler的内部函数enrichGO()即可完成GO富集分析。

library(clusterProfiler)#读取基因列表文件中的基因名称genes <- read.delim('gene.txt', header = TRUE, stringsAsFactors = FALSE)[[1]]#GO富集分析#对于加载的注释库的使用,以上述为例,就直接在 OrgDb 中指定人(org.Hs.eg.db)或绵羊(sheep)enrich.go <- enrichGO(gene = genes,  #基因列表文件中的基因名称    OrgDb = 'sheep',  #指定物种的基因数据库,示例物种是绵羊(sheep)    keyType = 'ENTREZID',  #指定给定的基因名称类型,例如这里以 entrze id 为例    ont = 'ALL',  #可选 BP、MF、CC,也可以指定 ALL 同时计算 3 者    pAdjustMethod = 'fdr',  #指定 p 值校正方法    pvalueCutoff = 0.05,  #指定 p 值阈值,不显著的值将不显示在结果中    qvalueCutoff = 0.2,  #指定 q 值阈值,不显著的值将不显示在结果中    readable = FALSE)#例如上述指定 ALL 同时计算 BP、MF、CC,这里将它们作个拆分后输出BP <- enrich.go[enrich.go$ONTOLOGY=='BP', ]CC <- enrich.go[enrich.go$ONTOLOGY=='CC', ]MF <- enrich.go[enrich.go$ONTOLOGY=='MF', ]write.table(as.data.frame(BP), 'go.BP.txt', sep = '\t', row.names = FALSE, quote = FALSE)write.table(as.data.frame(CC), 'go.CC.txt', sep = '\t', row.names = FALSE, quote = FALSE)write.table(as.data.frame(MF), 'go.MF.txt', sep = '\t', row.names = FALSE, quote = FALSE)
GO富集分析结果表格
2. KEGG富集分析

读取基因列表文件,并使用clusterProfiler的内部函数enrichKEGG()即可完成KEGG富集分析。

library(clusterProfiler)#读取基因列表文件中的基因名称,注意这里只能用 entrze idgenes <- read.delim('gene.txt', header = TRUE, stringsAsFactors = FALSE)[[1]]#每次打开R计算时,它会自动连接kegg官网获得最近的物种注释信息,因此数据库一定都是最新的kegg <- enrichKEGG( gene = genes, #基因列表文件中的基因名称 keyType = 'kegg', #kegg 富集 organism = 'oas', #例如,oas 代表绵羊,其它物种更改这行即可 pAdjustMethod = 'fdr', #指定 p 值校正方法 pvalueCutoff = 0.05, #指定 p 值阈值,不显著的值将不显示在结果中 qvalueCutoff = 0.2, #指定 q 值阈值,不显著的值将不显示在结果中)#输出结果write.table(kegg, 'kegg.txt', sep = '\t', quote = FALSE, row.names = FALSE)
3. clusterProfiler的作图功能

此外,clusterProfiler中也额外提供了一系列的可视化方案用于展示本次富集分析结果,具有极大的便利。

#clusterProfiler 包里的一些默认作图方法,例如barplot(ego, showCategory = 10)#散点图dotplot(ego, showCategory = 10)#气泡图plotGOgraph(ego)#无环图1goplot(ego)#无环图2emapplot(ego, showCategory = 30)#对于富集到的GO terms之间的基因重叠关系进行展示,如果两个GO terms系的差异基因存在重叠,说明这两个节点存在overlap关系,在图中用线条连接起来cnetplot(ego, showCategory = 5)#对于基因和富集的GO terms之间的对应关系进行展示,如果一个基因位于一个GO Terms下,则将该基因与GO连线

参考:
https://www.jianshu.com/p/47b5ea646932?utm_source=desktop&utm_medium=timeline

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【R】clusterProfiler的GO/KEGG富集分析用法小结
从基因名到GO注释一步到位
使用clusterProfiler进行GO、KEGG富集分析(有参情况)
转录组学习八(功能富集分析)
RNA-seq入门实战(六):GO、KEGG富集分析与enrichplot超全可视化攻略
补充更新:GO、KEGG(批量分组)分析及可视化
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服