富集分析——GO、KEGG

一、 富集分析的基础认知

在生物信息学研究领域,基因功能解析及通路阐释是众多分析流程中的关键环节,富集分析(Enrichment Analysis)是将基因或蛋白列表按照功能进行分类的统计方法,目的是找出在特定基因集中显著富集的功能类别或通路。通过这种方法,研究人员可以理解一组基因(如差异表达基因)在哪些生物学过程、分子功能或通路中代表。

1.富集分析分类

基因本体论富集分析(Gene Ontology Enrichment Analysis):这是最常用的富集分析类型,用于检验基因集合中基因本体论(GO)条目的富集情况。这可以帮助研究者了解基因集合中的基因在生物学过程、分子功能和细胞组成方面的共同特征。分类:分子功能(Molecular Function, MF):描述基因产物在分子水平上的活性;生物学过程(Biological Process, BP):描述基因产物参与的有序生物学过程;细胞组分(Cellular Component, CC):描述基因产物活跃的细胞位置。Gene Ontology Resource

通路富集分析(Pathway Enrichment Analysis):这种类型的富集分析主要关注基因在代谢途径和信号传导通路中的作用。通过检测基因集合中通路的富集情况,研究者可以了解这些基因在生物体内的功能和调控机制。通路数据库如KEGG(Kyoto Encyclopedia of Genes and Genomes)和Reactome是进行通路富集分析的常用资源。KEGG: Kyoto Encyclopedia of Genes and Genomes

KEGG(Kyoto Encyclopedia of Genes and Genomes)不仅包含通路信息,还整合了基因组、化学和系统功能信息。KEGG Pathway是最常用的子数据库,存储不同物种中基因通路的信息。在实际研究中,我们通常会得到一组差异表达的基因,比如通过比较疾病样本和正常样本的基因表达谱得到的。富集分析会将这些基因与 KEGG 数据库中的通路进行比对,计算每个通路中基因的出现频率,并与随机情况下的预期频率进行比较。如果某个通路中基因的实际出现频率显著高于随机预期,那么我们就认为这个通路在当前研究中是显著富集的,可能与所研究的生物学现象密切相关。

基因集富集分析(Gene Set Enrichment Analysis,GSEA):GSEA是一种旨在检测一个基因集合(如差异表达基因)与某些生物学特征(如基因本体论、通路、疾病、表型等)之间的关联的方法。GSEA可以帮助研究者了解基因集合与生物学功能和过程之间的关联,从而揭示潜在的生物学意义。

蛋白质-蛋白质相互作用富集分析(Protein-Protein Interaction Enrichment Analysis):这种类型的富集分析关注蛋白质之间的相互作用,帮助研究者了解基因集合中蛋白质在细胞信号和代谢过程中的功能。

基因表达调控富集分析:这种类型的富集分析关注转录因子、miRNA等调控因子对基因表达的调控作用。通过这种富集分析,研究者可以了解基因表达的调控机制和相互关系

其中 GO(Gene Ontology)与 KEGG(Kyoto Encyclopedia of Genes and Genomes)富集分析扮演着举足轻重的角色。随着研究的深入,无论是基因表达差异分析、蛋白质组学探索,还是单细胞测序研究等,最终往往都会导向富集分析这一重要步骤,以便从海量的数据中挖掘出具有生物学意义的信息。

鉴于此,我们特别开辟这一章节,聚焦 GO 与 KEGG 分析,深入探讨它们如何助力科研人员拨开数据迷雾,直击生物学过程、分子功能及细胞组分等关键要点,进而揭示生命活动背后的深层机制,为前沿科学研究与实际应用开发筑牢根基。

2.在线工具

  1. OmicShare:提供交互式GO/KEGG富集分析工具,支持多种可视化形式(柱状图、气泡图、网络图等),已被4500多篇SCI文章引用2

  2. g:Profiler:支持多种功能注释数据库,包括GO、KEGG、Reactome等

  3. Metascape:提供一站式分析流程,支持多种ID类型转换

  4. DAVID:经典富集分析工具,医学研究中广泛使用

  5. IMP平台:专为植物研究设计,集成了GO/KEGG富集分析模块

二、借助 R 语言分析绘图

我们将使用 R 语言和一些常用的生物信息学包来进行 KEGG 富集分析。这里我们会用到 clusterProfilerorg.Hs.eg.db(人类基因注释数据库,如果研究其他物种,需要替换相应的数据库)和 enrichplot(用于可视化分析结果)等包。

1. 准备工作

首先安装并加载必要的R包:

# 安装必要的包(如果尚未安装)
if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install(c("clusterProfiler", "org.Hs.eg.db", "DOSE", "ggplot2"))

# 加载包
library(clusterProfiler)
library(org.Hs.eg.db)  # 人类基因注释数据库,其他物种需替换
library(DOSE)
library(ggplot2)

2. 数据准备

假设我们已经有了差异表达基因列表:

# 示例基因列表(使用基因Symbol)
gene_list <- c("BRCA1", "TP53", "EGFR", "MYC", "CDK2", "VEGFA", "AKT1", "PTEN")
# 创建示例基因列表(使用基因Symbol标识),这里使用了一些著名的癌症相关基因作为示例


# 将基因Symbol转换为Entrez ID(KEGG分析需要)
gene_entrez <- bitr(gene_list, fromType = "SYMBOL", 
                    toType = "ENTREZID", 
                    OrgDb = org.Hs.eg.db)
#bitr函数进行基因ID转换,SYMBOL(基因符号)转换为ENTREZID(KEGG分析需要的ID类型)
# 参数说明: gene_list - 输入基因列表;fromType - 输入ID类型; toType - 输出ID类型;OrgDb - 使用的注释数据库(这里使用人类数据库)

# 查看转换结果
head(gene_entrez)

3. GO富集分析

# GO富集分析
ego <- enrichGO(gene = gene_entrez$ENTREZID,
                OrgDb = org.Hs.eg.db,
                keyType = "ENTREZID",
                ont = "ALL",  # 可指定BP、MF或CC
                pAdjustMethod = "BH",
                pvalueCutoff = 0.05,
                qvalueCutoff = 0.05)
#参数说明:gene - 输入基因列表(需要Entrez ID); OrgDb - 使用的注释数据库;keyType - 输入基因ID类型;ont - 指定GO类别:ALL(全部)、BP(生物过程)、MF(分子功能)、CC(细胞组分);pAdjustMethod - p值校正方法(BH = Benjamini-Hochberg);pvalueCutoff - p值阈值;qvalueCutoff - q值阈值(FDR校正后的p值)


# 查看结果
head(ego)

# 绘制点图
dotplot(ego, showCategory=15) +                 
  ggtitle("GO Enrichment Analysis") +
  theme(plot.title = element_text(hjust = 0.5))
# dotplot函数参数: ego - 富集结果对象;showCategory - 显示的条目数量

4. KEGG富集分析

# KEGG富集分析
kk <- enrichKEGG(gene = gene_entrez$ENTREZID,
                 organism = "hsa",  # 人类代码,其他物种需更改
                 keyType = "kegg",
                 pvalueCutoff = 0.05,
                 pAdjustMethod = "BH",
                 qvalueCutoff = 0.05)

# 查看结果
head(kk)

# 绘制气泡图
dotplot(kk, showCategory=15) + 
  ggtitle("KEGG Pathway Enrichment") +
  theme(plot.title = element_text(hjust = 0.5))

5. 富集结果可视化进阶

# 富集圈图(需要安装ggnewscale包)
if (!require("ggnewscale")) install.packages("ggnewscale")
library(ggnewscale)

cnetplot(kk, categorySize="pvalue", foldChange=gene_list)

# 通路图可视化(需要安装pathview包)
BiocManager::install("pathview")
library(pathview)

# 可视化hsa04110(细胞周期)通路
pathview(gene.data = gene_entrez$ENTREZID,
         pathway.id = "hsa04110",
         species = "hsa",
         limit = list(gene=max(abs(gene_list)), cpd=1))

通过掌握GO/KEGG富集分析,研究人员可以更深入地理解组学数据背后的生物学故事,推动研究进展,这也是富集分析备受研究人员青睐的原因。

其他富集分析方法我们有时间再更。谢谢大家啦

参考资料:

生信学习之通路富集一(GO分析)_go富集分析-CSDN博客

Gene Ontology Resource

KEGG: Kyoto Encyclopedia of Genes and Genomes

### R语言中的GOKEGG富集分析 #### 数据准备 为了在R中执行GOKEGG富集分析,数据通常需要经过预处理阶段。这涉及收集基因列表并将其转换成适合用于富集分析的形式。可以利用Excel来整理这些初步的数据文件[^1]。 #### 安装必要的包 要开始GOKEGG富集分析,在R环境中安装几个重要的库是必不可少的: ```r if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install(c("clusterProfiler", "org.Hs.eg.db")) ``` #### 加载所需的库 一旦上述包被成功安装,下一步就是加载它们以便后续操作能够顺利进行: ```r library(clusterProfiler) library(org.Hs.eg.db) ``` #### 执行富集分析 下面是一个简单的例子展示如何使用`enrichGO()`函数来进行GO术语上的富集测试;对于KEGG路径,则可采用类似的逻辑调用相应的API接口如`enrichKEGG()`: ```r # 假设我们有一个差异表达基因(DEGs) ID 列表 deg_ids <- c("7089", "5643", ...) ego <- enrichGO(gene = deg_ids, universe = keys(org.Hs.eg.db, keytype="ENTREZID"), OrgDb = org.Hs.eg.db, ont = "BP", pAdjustMethod= "BH", qvalueCutoff = 0.05) ekg <- enrichKEGG(gene = deg_ids, organism = 'hsa', pAdjustMethod= "BH", qvalueCutoff = 0.05) ``` 以上代码片段展示了基本的工作流程,其中包含了设置参数以调整p值的方法(这里选择了Benjamini-Hochberg校正),以及指定显著性的阈值(q-value cutoff)。 #### 结果可视化 最后一步是对获得的结果进行解释和呈现。ClusterProfiler提供了多种绘图选项帮助理解所得结论: ```r dotplot(ego, showCategory=20) barplot(ego, showCategory=20) cnetplot(ego, categorySize='medium') ``` 通过这种方式,不仅可以直观地看到哪些生物过程受到了影响,还可以进一步探索不同类别之间的关系网络结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值