跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
R算法

GO与KEGG富集分析实战:从差异基因到功能注释

在进行差异表达分析后,如何利用 GO(Gene Ontology)和 KEGG(Kyoto Encyclopedia of Genes and Genomes)富集分析来解读差异基因的生物学意义。文章阐述了 GO 的三个维度(细胞组分、分子功能、生物学过程)以及 KEGG 在信号通路描绘中的作用。实战部分详细演示了使用 R 语言及 clusterProfiler 包进行数据准备和基因 ID 转换的具体步骤,强调了 Entrez ID 的重要性及代码实现方法,旨在帮助研究者将基因列表转化为可解释的生物学故事。

小熊软糖发布于 2026/3/29更新于 2026/9/1075 浏览

1. 从差异基因到功能注释:为什么我们需要 GO 和 KEGG?

如果你刚做完差异表达分析,手里拿到了一长串几百甚至上千个'差异基因'的列表,是不是有点懵?心里肯定在想:这些基因是干嘛的?它们凑在一起,到底在细胞里搞什么'大项目'?这感觉就像你拿到了一份零件清单,但完全不知道它们能组装成什么机器。这时候,GO(Gene Ontology,基因本体论) 和 KEGG(Kyoto Encyclopedia of Genes and Genomes,京都基因与基因组百科全书) 富集分析,就是你手里的'说明书'和'装配图'。

简单来说,GO 就像一个给基因功能分门别类的'图书馆目录系统'。它从三个维度描述基因:

  • 细胞组分(Cellular Component, CC):这个基因的产物(通常是蛋白质)在细胞的哪个位置干活?是在线粒体里提供能量,还是在细胞核里调控 DNA?
  • 分子功能(Molecular Function, MF):这个基因产物具体能做什么?是能结合 DNA,还是具有酶的催化活性,或者是负责运输物质?
  • 生物学过程(Biological Process, BP):这个基因参与了一个什么样的'连续剧'?比如'细胞周期调控'、'炎症反应'或'葡萄糖代谢'。

而 KEGG 呢,更像是一张张描绘具体'生产线'或'信号通路'的地图。它告诉你,这些差异基因共同参与了哪些已知的、完整的生物学通路。比如'p53 信号通路'、'MAPK 信号通路'或者'癌症中的转录调控异常'。如果说 GO 告诉你零件是'螺丝刀'(功能)和'在工具箱里'(位置),那么 KEGG 就告诉你这些零件是用来组装'一台自行车'(通路)的。

所以,做富集分析的根本目的,是把冷冰冰的基因 ID 列表,转化为有血有肉的生物学故事。你的差异基因如果显著富集在'细胞外基质组织'和'TGF-β信号通路'上,那很可能暗示你的实验条件影响了纤维化或组织重塑过程。这个从数据到生物学洞察的飞跃,正是富集分析的价值所在。接下来,我就手把手带你走一遍完整的实战流程,并分享一些我总结出来的、能让结果更可靠的技巧和避坑指南。

2. 实战第一步:数据准备与基因 ID 转换

拿到差异基因列表后,千万别急着往富集分析工具里扔。第一步的预处理,直接决定了后续分析的成功率。这里最常见的坑就是基因 ID 格式不匹配。

2.1 理解你的输入:基因标识符的'黑话'

差异分析的结果,基因名可能是各种格式:Gene Symbol(如 TP53, ACTB)、Ensembl ID(如 ENSG00000141510)、Entrez ID(如 7157),或者 RefSeq ID(如 NM_000546)。大多数富集分析工具,尤其是 R 包 clusterProfiler,其核心计算需要的是Entrez ID(一种数字型的稳定 ID)。而 GO 注释数据库本身则关联着各种 ID。

我个人的经验是,始终从最稳定的标识符开始转换。Entrez ID 或 Ensembl ID 通常比 Gene Symbol 更稳定,因为后者可能存在同名(一个 Symbol 对应多个基因)或更新(旧的 Symbol 被废止)的问题。在原始文章复现时,经常因为 Symbol 对不上而导致富集结果为空或很奇怪,第一步就要检查这里。

2.2 手把手进行 ID 转换

这里我们用 R 语言和 clusterProfiler 系列包来操作,这是目前最主流、最强大的工具集。假设你有一个差异基因列表,基因名是 Gene Symbol,保存在 DEG_list.txt 文件中。

# 加载必要的 R 包
library(clusterProfiler)
library(org.Hs.eg.db) # 如果你是人源数据,这里是人的数据库。小鼠用 org.Mm.eg.db
librarydplyr
libraryreadr


diff_genes  read.table header   stringsAsFactors  
headdiff_genes 



gene_df  bitrgeneID  diff_genes
                fromType   
                toType    
                OrgDb  org.Hs.eg.db 


headgene_df
gene_df 
(
)
(
)
# 1. 读入差异基因列表(假设文件只有一列基因名,没有表头)
<-
(
"DEG_list.txt"
,
=
FALSE
,
=
FALSE
)
[
,
1
]
(
)
# 查看前几个基因,确认是 Symbol,例如 "TP53", "BRCA1"
# 2. 进行 ID 转换:从 Symbol 到 Entrez ID
# 使用 bitr 函数,这是 clusterProfiler 里的转换神器
<-
(
=
,
=
"SYMBOL"
,
# 你输入的 ID 类型
=
c
(
"ENTREZID"
,
"ENSEMBL"
)
,
# 你想转换成的 ID 类型,至少需要 ENTREZID
=
)
# 指定物种注释数据库
# 查看转换结果
(
)
dim
(
)
# 看看转换成功了多少个基因

运行后,gene_df 这个数据框里就有每个基因对应的 SYMBOL、ENTREZID 和 ENSEMBL 了。关键点来了:`bi

目录

  1. 1. 从差异基因到功能注释:为什么我们需要 GO 和 KEGG?
  2. 2. 实战第一步:数据准备与基因 ID 转换
  3. 2.1 理解你的输入:基因标识符的“黑话”
  4. 2.2 手把手进行 ID 转换
  5. 加载必要的 R 包
  6. 1. 读入差异基因列表(假设文件只有一列基因名,没有表头)
  7. 2. 进行 ID 转换:从 Symbol 到 Entrez ID
  8. 使用 bitr 函数,这是 clusterProfiler 里的转换神器
  9. 查看转换结果

更多推荐文章

查看全部
  • Stable Diffusion 3.5 FP8 模型架构解析与优化技巧
  • 数据库迁移 TCO 分析:MySQL 替代隐性成本与工具链实测
  • 前端面试复盘:场景题与架构思维的重要性
  • C++ 模板初阶:泛型编程核心解析
  • ReactiveCocoa 2 核心概念与实战指南
  • 扩散模型(Diffusion Model)原理与图像生成实战
  • 传统线程同步通讯技术实现
  • uniapp+python微信小程序毕业生招聘平台
  • RabbitMQ 事务机制与消息限流实战详解
  • VS Code 远程 SSH 连接下 Copilot 无法使用 Claude Agent 问题修复
  • Java 8 Lambda 表达式与 Stream 流实战解析
  • Spring Boot 实现通用 HTTP 代理服务
  • 使用 wxauto 结合 AI 大模型实现智能微信聊天机器人
  • Spring Boot 远程调试配置方法
  • Go2 机器人 ROS2 与 Gazebo 仿真环境搭建指南
  • C++ 类与对象全面剖析:构造函数深化与静态成员特性
  • MySQL 索引原理:B+ 树演进与操作实战
  • Flutter eip55 库鸿蒙适配指南:以太坊地址校验与验证
  • Obsidian Text Generator 插件使用指南
  • Python 数据结构详解:序列与集合

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online