Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一文厘清富集分析:GroupGO、enrichGO、gseGO、enrichKEGG、gseKEGG、enrichMKEGG

一文厘清富集分析:GroupGO、enrichGO、gseGO、enrichKEGG、gseKEGG、enrichMKEGG

作者头像
生信菜鸟团
发布于 2025-04-06 14:31:17
发布于 2025-04-06 14:31:17
46200
代码可运行
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团
运行总次数:0
代码可运行

写在开头

生物学研究中,我们常常面对成百上千的基因数据,例如转录组或蛋白质组数据。在基因差异表达分析之后,你得到了差异基因,可能几个到上百个不等,单纯分析单个基因的意义有限,而从庞大的基因关系网络中提取有效信息也十分耗时。

富集分析应运而生,它就像生物学研究的“数据库字典”,将不同生物学现象与基因的对应关系整理成册,帮助我们快速识别基因数据中的关键信息。

富集分析的核心思想是:如果某个生物学功能(例如通路、GO术语)中的基因在我们的数据中明显比随机情况下更“活跃”,那么该功能就很有可能与我们研究的表型或疾病相关。

富集分析方法原理

富集分析方法可分为过表达分析 (ORA) 和基因集富集分析 (GSEA) 方法。【还有上图中的PT方法,但这种方法不是特别常用。PT利用现有的全基因组范围的生物网络,提取数据库的基因相互作用关系(如:基因连接度、基因在网络中的距离),把基因的生物学属性整合到功能分析。利用网络拓扑结构来计算基因对特定生物通路的重要性并给予相应的权重,再利用传统的ORA 或 FCS 方法来评估特定生物通路的富集程度,如GANPA 和 LEGO。缺点就是算法太复杂,计算速度慢。】

ORA方法与GSEA方法不同,因为它们只考虑感兴趣的查询基因集,并且需要严格的截止值才能将基因分类为上调和下调;因此,当临界值不确定时,建议选择GSEA方法。

ORA将查询基因列表中富集的所有通路作为一个整体输出,主要使用非排名列表(使用基于最小超几何值的方法)。因此,ORA方法的重点是基因集,而GSEA技术的重点是排名通路列表。

GO、KEGG区别与联系

GO是一种用于描述基因和蛋白质功能的标准化系统,主要专注于定义基因和蛋白质的分子功能、生物学过程和细胞组分。它通过层次化的术语和注释关系来帮助研究人员理解基因和蛋白质在生物体内的功能和相互作用。

KEGG是一个综合性的生物信息学数据库,使用节点来表示基因或基因产物。KEGG集成了基因组学、代谢组学和系统生物学的信息,提供了关于基因功能、代谢通路和疾病等方面的详细信息。KEGG的重点是描述生物体内的代谢通路和相关基因,以及这些通路在不同生物体系中的变化和调控。

KEGG侧重于生物体内代谢通路和相关基因的描述,而GO则更专注于基因和蛋白质功能的标准化描述和分类。两者在生物信息学研究中通常会结合使用,以全面理解基因和蛋白质的功能及其在生物体内的作用。

对GO的的富集分析方法常用的有两种:ORA(clusterProfiler包中的enrichGO)和GSEA(clusterProfiler包中的 gseGO)

对KEGG的的富集分析方法常用的也有两种:ORA(clusterProfiler包中的enrichGO)和GSEA(clusterProfiler包中的 gseGO)

GO 相关的富集分析

GO(Gene Ontology)是用于对不同物种的基因和基因产物进行功能描述的标准化资源。它包含三个独立的本体:

  • 分子功能 (MF):描述单个基因产物在分子水平上的活性。
  • 生物过程 (BP):描述涉及多个基因产物的广泛生物过程。
  • 细胞成分 (CC):指基因产物在细胞内发挥功能的位置。

这三个层面具体是指:

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

1.GO 分类

clusterProfiler 中的 groupGO() 函数旨在根据基因在特定级别的 GO 分布对基因进行分类。(虽然作者没有指出,但是我觉得groupGO用的也是ORA方法)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(clusterProfiler)
data(geneList, package="DOSE")
gene <- names(geneList)[abs(geneList) > 2]

# Entrez gene ID
head(gene)

ggo <- groupGO(gene     = gene,
               OrgDb    = org.Hs.eg.db,
               ont      = "CC",
               level    = 3,
               readable = TRUE)

head(ggo)

2.GO富集分析

clusterProfiler 包提供 enrichGO() 函数用于 GO 超代表分析。其实是fisher检验

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gene.df <- bitr(gene, fromType = "ENTREZID",
        toType = c("ENSEMBL", "SYMBOL"),
        OrgDb = org.Hs.eg.db)

ego2 <- enrichGO(gene         = gene.df$ENSEMBL,
                OrgDb         = org.Hs.eg.db,
                keyType       = 'ENSEMBL',
                ont           = "CC",
                pAdjustMethod = "BH",
                pvalueCutoff  = 0.01,readable      = TRUE,
                qvalueCutoff  = 0.05)
head(ego2, 3)

3.GO基因集富集分析

gseGO() 函数利用基因本体论进行基因集富集分析。函数中用到的geneList必须是降序排列的基因名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
##GSEA分析,所以geneList必须是降序排列的基因名
ego3 <- gseGO(geneList     = geneList,
              OrgDb        = org.Hs.eg.db,
              ont          = "CC",
              minGSSize    = 100,
              maxGSSize    = 500,
              pvalueCutoff = 0.05,
              verbose      = FALSE)

KEGG 相关的富集分析

KEGG富集分析

KEGG FTP服务自2012年以来不再免费提供给学术机构使用,并且许多软件包使用的是过时的KEGG注释数据。clusterProfiler 软件包支持使用免费的 KEGG 网站下载最新版本的在线数据,该网站对学术用户开放。clusterProfiler 同时支持 KEGG 通路和模块分析。

1.KEGG通路富集分析(KEGG pathway over-representation analysis,ORA

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(clusterProfiler)
data(geneList, package="DOSE")
gene <- names(geneList)[abs(geneList) > 2]

kk <- enrichKEGG(gene         = gene,
                 organism     = 'hsa',
                 pvalueCutoff = 0.05)
head(kk)

2.KEGG通路基因集富集分析(KEGG pathway gene set enrichment analysis,GSEA)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
##GSEA分析,所以geneList必须是降序排列的基因名
kk2 <- gseKEGG(geneList     = geneList,
               organism     = 'hsa',
               minGSSize    = 120,
               pvalueCutoff = 0.05,
               verbose      = FALSE)
head(kk2)

KEGG模块分析

KEGG 模块的优势:

  • 模块化: KEGG 模块聚焦于通路中的特定功能单元,而不是整个通路。这可以让你更精准地定位感兴趣的生物过程。
  • 人工定义: KEGG 模块由专家手工定义,确保了其准确性和生物学相关性。

1.KEGG模块富集分析(ORA

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkk <- enrichMKEGG(gene = gene,
                   organism = 'hsa',
                   pvalueCutoff = 1,
                   qvalueCutoff = 1)
head(mkk)    
       

2.KEGG模块基因集富集分析(GSEA

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#GSEA分析,所以geneList必须是降序排列的基因名
mkk2 <- gseMKEGG(geneList = geneList,
                 organism = 'hsa',
                 pvalueCutoff = 1)
head(mkk2)

多个基因集的富集分析

上述所有的方法都是针对一组基因做的富集分析,如果有多组基因的话,如何批量做富集分析呢?clusterProfiler (version 3.0.4)包中提供了compareCluster函数。这个函数可以批量实现多个组别的富集分析,其方法可选择"groupGO", "enrichGO", "enrichKEGG", "enrichDO" or "enrichPathway" 之一。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#这里的gcSample是个列表

#这里的基因名通常为entrez gene id

data(gcSample)

xx <- compareCluster(gcSample, fun="enrichKEGG",
                     organism="hsa", pvalueCutoff=0.05)
summary(xx)
# plot(xx, type="dot", caption="KEGG Enrichment Comparison")

#也可以使用公式来构建类似于列表的内容,进行富集分析

## formula interface
mydf <- data.frame(Entrez=c('1', '100', '1000', '100101467',
                            '100127206', '100128071'),
                   group = c('A', 'A', 'A', 'B', 'B', 'B'),
                   othergroup = c('good', 'good', 'bad', 'bad', 'good', 'bad'))
xx.formula <- compareCluster(Entrez~group, data=mydf, fun='groupGO', OrgDb='org.Hs.eg.db')
summary(xx.formula)

## formula interface with more than one grouping variable
xx.formula.twogroups <- compareCluster(Entrez~group+othergroup, data=mydf, fun='groupGO', OrgDb='org.Hs.eg.db')
summary(xx.formula.twogroups)

全文总结

下面函数主要用于进行基因集或基因组的功能富集分析和通路富集分析。以下是它们之间的区别:

  1. GroupGO(): 该函数设计用于基于特定水平的GO分布进行基因分类。
  2. enrichGO(): 该函数用于进行单个基因列表的Gene Ontology(GO)富集分析,即确定输入的基因列表中是否显著富集了某些GO术语。
  3. gseGO(): 该函数用于进行GO富集分析,采用基因集富集分析(GSEA)方法,考虑基因之间的排序信息,以发现在基因列表中聚集的GO术语。
  4. enrichKEGG(): 该函数用于进行KEGG通路的富集分析,类似于enrichGO(),但针对的是KEGG数据库中的代谢通路、信号通路等信息。
  5. gseKEGG(): 该函数用于进行KEGG通路的基因集富集分析,类似于gseGO(),但是针对的是KEGG数据库中的通路信息。
  6. enrichMKEGG(): 该函数用于进行基于模块的KEGG通路富集分析,帮助用户识别代谢通路中的模块化结构,并进行富集分析。
  7. gseMKEGG(): 该函数用于进行基于模块的KEGG通路的基因集富集分析,类似于gseKEGG(),但专注于基于模块的富集分析。
  8. compareCluster:用于比较不同基因集群(cluster)之间的差异,可以帮助揭示不同生物条件下基因功能的差异性。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
参考:
https://yulab-smu.top/biomedical-knowledge-mining-book/clusterprofiler-kegg.html
https://yulab-smu.top/biomedical-knowledge-mining-book/clusterprofiler-go.html
https://rdocumentation.org/packages/clusterProfiler/versions/3.0.4
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信菜鸟团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
生物信息数据分析教程视频——15-clusterProfiler包+ClueGO做富集分析
生物信息数据分析教程视频——10-TCGA数据库:mi NA的表达探索
DoubleHelix
2022/12/16
2.2K0
生物信息数据分析教程视频——15-clusterProfiler包+ClueGO做富集分析
差异分析得到的结果注释一文就够
通过前面的讲解,我们顺利的了解了GEO数据库以及如何下载其数据,得到我们想要的表达矩阵,也学会了两个常用的套路分析得到的表达矩阵,就是GSEA分析和差异分析。 历史目录: 解读GEO数据存放规律及下载,一文就够 解读SRA数据库规律一文就够 从GEO数据库下载得到表达矩阵 一文就够 GSEA分析一文就够(单机版+R语言版) 根据分组信息做差异分析- 这个一文不够的 但是差异分析通过自定义的阈值挑选了有统计学显著的基因列表后我们其实是需要对它们进行注释才能了解其功能,最常见的就是GO/KEGG数据库注释咯,
生信技能树
2018/03/29
4K0
差异分析得到的结果注释一文就够
GO、GSEA富集分析一网打进
富集分析是生物信息分析中快速了解目标基因或目标区域功能倾向性的最重要方法之一。其中代表性的计算方式有两种: 一是基于筛选的差异基因,采用超几何检验判断上调或下调基因在哪些GO或KEGG或其它定义的通路富集。假设背景基因数目为m,背景基因中某一通路pathway中注释的基因有n个;上调基因有k个,上调基因中落于通路pathway的数目为l。简单来讲就是比较l/k是否显著高于n/m,即上调基因中落在通路pathway的比例是否高于背景基因在这一通路的比例。(实际计算时,是算的odds ratio的差异,l/(k
生信宝典
2018/02/05
4.5K0
GO、GSEA富集分析一网打进
R|clusterProfiler-富集分析
简单总结clusterProfiler包进行GO、KEGG的富集分析方法,结果输出及内置的图形展示。
生信补给站
2020/08/06
2.2K0
go富集分析和kegg富集分析的区别_非模式生物怎么做GO富集
关于clusterProfiler这个R包就不介绍了,网红教授宣传得很成功,功能也比较强大,主要是做GO和KEGG的功能富集及其可视化。简单总结下用法,以后用时可直接找来用。
全栈程序员站长
2022/09/20
2K0
RNA-seq入门实战(六):GO、KEGG富集分析与enrichplot超全可视化攻略
连续两次求贤令:曾经我给你带来了十万用户,但现在祝你倒闭,以及 生信技能树知识整理实习生招募,让我走大运结识了几位优秀小伙伴!大家开始根据我的ngs组学视频进行一系列公共数据集分析实战,其中几个小伙伴让我非常惊喜,不需要怎么沟通和指导,就默默的完成了一个实战!
生信技能树
2022/07/26
14.1K0
RNA-seq入门实战(六):GO、KEGG富集分析与enrichplot超全可视化攻略
生信技能树-day20 转录组下游分析-富集分析
今天的是三周合计15天的数据挖掘授课学员一点一滴整理的授课知识点笔记哦,还有互动练习题哈,欢迎大家点击文末的阅读原文去关注我们学员的公众号哦!
生信菜鸟团
2024/06/25
4103
生信技能树-day20 转录组下游分析-富集分析
单细胞功能注释和富集分析(GO、KEGG、GSEA)(2021公开课配套笔记)
在前面几节我们已经知道各个细胞亚群的maerker基因,接下来我们对这些marker基因进行功能注释和富集分析。
生信技能树
2021/07/06
18.4K1
clusterProfiler|GSEA富集分析及可视化
GSEA(Gene Set EnrichmentAnalysis),即基因集富集分析,无需设定阈值来区分上调下调基因,使用所有的基因进行分析。
生信补给站
2021/06/24
25.1K4
clusterProfiler|GSEA富集分析及可视化
对单细胞每个cluster进行批量富集分析
这里有三个cluster,接下来找其marker基因,并合并成大的dataframe
生信菜鸟团
2023/09/24
1K0
对单细胞每个cluster进行批量富集分析
跟小新老师学转录组的第五天
1.差异分析筛选基因:MAOA(按照FC排序取top10)(NCBI-GeneID :4128)
贝诺酯
2023/04/03
5100
富集分析常见类型
前期主要是以医学统计和临床预测模型为主,关于生信挖掘和机器学习的内容偏少,所以后面会逐渐增加这方面的内容,除了常见的生信分析外,还会涉及一些SCI图表学习等内容。
医学和生信笔记
2023/08/30
1.1K0
富集分析常见类型
不要怀疑,你的基因就是没办法富集到统计学显著的通路
另外,插一个题外话,因为黑粉瞎举报,我们生信技能树已经被取消了半个月的原创标识功能,让我很不爽。
生信技能树
2020/05/25
6.7K0
RNA-seq入门实战(七):GSEA——基因集富集分析
连续两次求贤令:曾经我给你带来了十万用户,但现在祝你倒闭,以及 生信技能树知识整理实习生招募,让我走大运结识了几位优秀小伙伴!大家开始根据我的ngs组学视频进行一系列公共数据集分析实战,其中几个小伙伴让我非常惊喜,不需要怎么沟通和指导,就默默的完成了一个实战!
生信技能树
2022/07/26
15.1K0
RNA-seq入门实战(七):GSEA——基因集富集分析
上下调基因各自独立进行GO数据库的3分类富集(求美图代码)
我们通常呢,挑选差异基因,会选择那些log2FC比较大而且具有统计学显著性的上下调基因,不过加上MA图,就可以进一步挑选那些表达量也比较高的,因为这样的基因呢,容易去实验验证。而且呢,通常情况下常识会告诉我们高表达量基因更容易发挥作用。
生信技能树
2021/07/29
5K0
转录组分析—再谈GSEA
Gene Set Enrichment Analysis (GSEA) 是一种生物信息学方法,用于确定基因集合(gene sets)在基因表达数据中的显著性变化。它广泛应用于基因表达数据的功能解释,帮助研究者理解在特定实验条件下哪些生物学通路或功能类别是活跃的。以下是GSEA的相关知识点:
sheldor没耳朵
2024/08/05
2530
转录组分析—再谈GSEA
富集分析-KEGG/GO
是系统分析基因功能、基因组 信息数据库,它有助于研究者把基因及表达信息作为一个整体 网络进行研究,以“理解生物系统的高级功能和实用程序资源库”著称。
用户10412487
2023/03/28
2.7K0
转录组测序分析——差异表达分析2
yurric
2023/11/03
3791
GEO数据挖掘5
KEGG全称 Kyoto Encyclopedia of Genes and Genomes,由日本京都大学生物信息学中心的Kanahisa 实验室于1995年建立根据基因组中的信息,原理是用计算机计算或者预测出比较复杂的细胞中的通路或者生物的复杂行为。数据库能够把基因及表达信息作为一个整体的网络进行研究,通俗点讲就是通过基因寻找通路
火星娃统计
2020/09/15
1.2K0
GEO数据挖掘5
单细胞亚群合理命名是数据分析基石啊
其实这样的笑话在单细胞数据挖掘文章里面层出不穷,比如另外一个数据挖掘文章;《Identification of Five Hub Genes Based on Single-Cell RNA Sequencing Data and Network Pharmacology in Patients With Acute Myocardial Infarction》,链接是:https://www.frontiersin.org/articles/10.3389/fpubh.2022.894129/full ,里面的bug就更可怕了,居然是把成纤维细胞错误的命名成为了单核细胞。如下所示:
生信技能树
2024/06/08
2240
单细胞亚群合理命名是数据分析基石啊
推荐阅读
相关推荐
生物信息数据分析教程视频——15-clusterProfiler包+ClueGO做富集分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验