第06期 ⭐⭐ 进阶

通路富集分析秒出图

使用KEGG、Reactome、STRING进行通路富集和蛋白质互作网络分析

📚 学习时间: 约15分钟

⚠️
免责声明: 本内容仅供科研学习参考,不作为临床诊断依据。 通路富集分析结果需结合生物学背景知识解读,建议通过实验验证关键发现。
🎯

技能简介

差异基因分析完成后,下一步就是回答"这些基因参与什么生物学通路?"。 传统通路富集分析流程繁琐:上传基因列表 → 等待 → 下载结果 → 手动画图, 一套流程下来,半天时间没了

本教程教你使用三大通路数据库—— KEGG(京都基因与基因组百科全书)、Reactome(反应组通路数据库)、STRING(蛋白质互作网络), 通过Scientific Skills MCP自动化完成从差异基因到发表级气泡图的全流程。 将分析时间从半天缩短至10分钟

半天
传统富集分析
10分钟
AI辅助分析
30倍
效率提升

🧬 富集分析前先检查这 4 件事

输入列表来源

先说清楚这份列表来自差异基因、蛋白组还是代谢组,并保留阈值、比较组和方向信息。

ID 体系统一

Gene Symbol、Entrez、Ensembl、UniProt 不能混用;如果是代谢物,也要提前统一 HMDB、KEGG 或标准化名称。

背景集合

ORA 需要合理的背景基因/代谢物集合;RNA-seq 场景通常用实际检测到的基因,而不是整个人类基因组。

分析目标

你要的是探索机制、找图表,还是为后续实验缩小范围?目标不同,输出排序和解释深度都不同。

📦 一次像样的富集分析至少交付这 4 样

显著通路结果表

至少保留通路名称、数据库来源、基因集大小、重叠基因、P 值/FDR 和方向性信息。

可复核图表

气泡图、柱状图或网络图必须能回溯到原始结果表,避免只留一张“漂亮但不可追踪”的图。

核心基因名单

对每条重点通路,标出驱动富集的关键基因或代谢物,后续验证通常就是从这里开始。

解释边界说明

明确哪些结论属于“机制假说”,哪些只是解释层线索,避免在摘要或讨论中写成因果证明。

💡 使用场景

🧬

差异基因功能解读

RNA-seq或芯片数据分析后,快速了解差异基因参与的生物学通路

🔍

疾病机制研究

发现疾病相关的异常通路,为疾病机制研究提供线索

💊

药物作用机制

分析药物处理后差异基因的通路变化,揭示药物作用机制

🕸️

关键调控因子发现

通过蛋白质互作网络发现hub基因,识别关键调控因子

🛠️ 核心技能调用

通过Scientific Skills MCP,可以一键调用三大通路分析工具:

🔗 KEGG Database - 通路富集分析

KEGG是最常用的通路富集数据库,涵盖代谢通路、信号通路、疾病通路等。支持气泡图、条形图等多种可视化方式。

# 调用 KEGG Database 技能
# scientific-skills:kegg-database

# 示例:差异基因KEGG通路富集
kegg_enrichment(
  gene_list = ["TP53", "EGFR", "MYC", "KRAS", "PIK3CA", # ... 差异基因列表],
  organism = "hsa", # 人类
  pvalue_cutoff = 0.05,
  fdr_cutoff = 0.05,
  top_n = 20 # 返回top 20通路
)

# 返回结果包含:
# - 通路ID和名称
# - 基因数量(输入基因/背景基因)
# - p值和FDR(Benjamini-Hochberg校正)
# - 富集因子
# - 涉及的基因列表

# 自动生成气泡图
plot_enrichment_bubble(
  kegg_results,
  x = "GeneRatio", # x轴:基因比例
  y = "Pathway",   # y轴:通路名称
  size = "Count",   # 气泡大小:基因数量
  color = "p.adjust" # 气泡颜色:FDR值
)

💡 KEGG气泡图解读:

  • 气泡大小:该通路中差异基因的数量
  • 气泡颜色:FDR值,红色越深表示显著性越高
  • 横轴位置:基因比例,反映富集程度
Reactome Database - 反应组通路分析

Reactome是高质量的反应组通路数据库,包含细胞信号、代谢、转录调控等通路。支持层级结构可视化。

# 调用 Reactome Database 技能
# scientific-skills:reactome-database

# Reactome通路富集分析
reactome_enrichment(
  gene_list = ["TP53", "EGFR", "MYC", "KRAS", "PIK3CA"],
  species = "Homo sapiens",
  include_low_levels = False, # 只返回高层级通路
  pvalue_cutoff = 0.05
)

# 返回结果包含:
# - 通路ID、名称、层级
# - p值和FDR
# - 富集统计信息
# - 通路层级结构

# 生成条形图
plot_enrichment_bar(
  reactome_results,
  top_n = 15,
  color_by = "p.adjust",
  show_counts = True
)

📌 KEGG vs Reactome:

  • KEGG:覆盖更广,包含代谢通路、疾病通路
  • Reactome:更精细的反应级描述,适合信号转导研究
  • 推荐:两个数据库同时使用,交叉验证结果
🕸️ STRING Database - 蛋白质互作网络

STRING数据库包含已知和预测的蛋白质互作关系,可以构建PPI网络并识别hub基因。

# 调用 STRING Database 技能
# scientific-skills:string-database

# 构建蛋白质互作网络
string_network(
  gene_list = ["TP53", "EGFR", "MYC", "KRAS", "PIK3CA"],
  species = 9606, # 人类
  confidence_threshold = 0.7, # 互作置信度阈值
  add_nodes = 50 # 添加额外互作蛋白
)

# 返回结果包含:
# - 蛋白质互作网络(节点和边)
# - 互作分数(综合分数)
# - 互作证据类型(实验、数据库、共表达等)

# 识别hub基因
hub_genes = identify_hub_genes(
  string_network,
  method = "betweenness", # 或"degree", "closeness"
  top_n = 10
)

# 可视化网络
plot_network(
  string_network,
  layout = "fruchterman_reingold",
  highlight_hubs = True,
  node_size_by = "degree",
  label_hubs = True
)

💡 Hub基因识别方法:

  • Degree:连接数最多的节点
  • Betweenness:最短路径经过次数最多的节点
  • Closeness:到所有其他节点平均距离最短的节点
  • • Hub基因通常是关键调控因子,是进一步研究的候选靶点

📖 实战示例:癌症差异基因通路分析

以下是完整的差异基因通路富集分析流程,从KEGG/Reactome富集到STRING网络构建:

1 数据准备

准备差异基因列表(通常来自RNA-seq差异分析):

# 示例差异基因列表(假设来自癌症vs正常组织对比)
differential_genes = [
  "TP53", "EGFR", "MYC", "KRAS", "PIK3CA",
  "PTEN", "AKT1", "MTOR", "CDK4", "CCND1",
  "RB1", "MDM2", "BCL2", "BAX", "CASP3",
  # ... 总共200个差异基因
]

# 基因ID转换(如需要)
convert_gene_ids(
  gene_list = differential_genes,
  from_type = "symbol", # 基因符号
  to_type = "entrez",  # Entrez ID
  species = "human"
)

# 过滤背景基因(用于富集分析)
background_genes = get_background_genes(
  species = "human",
  gene_type = "protein_coding"
)
2 KEGG通路富集

使用KEGG数据库进行通路富集分析:

# Step 2: KEGG富集
kegg_results = kegg_enrichment(
  gene_list = differential_genes,
  background = background_genes,
  organism = "hsa",
  pvalue_cutoff = 0.05,
  fdr_method = "BH"
)

# 查看显著富集的通路
print(kegg_results[head(10)])

# 示例输出:
# ID     Description         GeneRatio BgRatio pvalue p.adjust
# hsa05200  Pathways in cancer      45/200  500/20000 1.2e-15 3.4e-12
# hsa04151  PI3K-Akt signaling pathway 28/200  350/20000 5.6e-12 8.9e-09
# hsa05206  MicroRNAs in cancer     32/200  400/20000 2.1e-10 2.7e-07
# hsa04068  FoxO signaling pathway   18/200  200/20000 4.5e-08 4.8e-05

# 生成气泡图
plot_enrichment_bubble(
  kegg_results,
  title = "KEGG通路富集分析",
  x = "GeneRatio",
  size = "Count",
  color = "p.adjust"
)
3 Reactome通路富集

使用Reactome数据库进行交叉验证:

# Step 3: Reactome富集
reactome_results = reactome_enrichment(
  gene_list = differential_genes,
  species = "Homo sapiens",
  pvalue_cutoff = 0.05
)

# 对比KEGG和Reactome结果
common_pathways = find_common_pathways(
  kegg_results,
  reactome_results
)

print(f"共同富集的通路数: {len(common_pathways)}")

# 示例共同通路:
# - PI3K-Akt signaling (KEGG) / Signaling by PI3K (Reactome)
# - Cell cycle (KEGG) / Cell Cycle (Reactome)
# - p53 signaling (KEGG) / p53 dependent DNA damage (Reactome)

# 生成对比条形图
plot_comparison_bar(
  kegg_results,
  reactome_results,
  top_n = 15
)
4 STRING蛋白互作网络

构建蛋白质互作网络并识别hub基因:

# Step 4: STRING网络构建
string_net = string_network(
  gene_list = differential_genes,
  species = 9606,
  confidence_threshold = 0.7,
  network_type = "full" # 包含所有证据类型
)

# 计算网络拓扑参数
network_stats = calculate_network_stats(string_net)
print(network_stats)

# 示例输出:
# - 节点数: 185
# - 边数: 1247
# - 平均度: 13.5
# - 网络密度: 0.073
# - 聚类系数: 0.42

# 识别hub基因(使用多种指标)
hub_genes = identify_hub_genes(
  string_net,
  methods = ["degree", "betweenness", "closeness"],
  top_n = 10
)

# Top hub基因示例:
# Rank Gene  Degree Betweenness Closeness
# 1   TP53  67   0.234    0.512
# 2   MYC   54   0.187    0.489
# 3   EGFR  48   0.156    0.467
# 4   AKT1  45   0.142    0.451
# 5   PIK3CA 42   0.128    0.438

# 可视化网络
plot_network(
  string_net,
  highlight_genes = hub_genes['Gene'].head(5),
  node_color = 'betweenness',
  node_size = 'degree',
  title = "差异基因蛋白互作网络"
)
5 整合可视化与报告

生成整合的多图报告:

# Step 5: 整合可视化
generate_enrichment_report(
  kegg_results = kegg_results,
  reactome_results = reactome_results,
  string_network = string_net,
  hub_genes = hub_genes,
  output_format = "pdf"
)

# 报告包含:
# 1. KEGG气泡图 (Top 20通路)
# 2. Reactome条形图 (Top 15通路)
# 3. 共同富集通路对比图
# 4. STRING蛋白互作网络图
# 5. Hub基因统计表
# 6. 通路-基因对应表

# 导出数据表格(用于论文补充材料)
export_tables(
  kegg_results,
  file = "kegg_enrichment.xlsx"
)
export_tables(
  hub_genes,
  file = "hub_genes.xlsx"
)

🧯 最容易误读的 4 类通路结论

把富集当成因果证据

Pathway enrichment 只是解释层工具,不能单凭显著通路就断言“该通路导致了疾病表型”。

忽视输入列表质量

如果差异分析本身不稳、阈值过松或批次效应没处理,再高级的富集图也只是放大噪音。

只看通路名字

同名或相近通路经常高度重叠;真正该看的,是重叠基因是谁、方向是否一致、与研究问题是否相关。

数据库结果混着讲

KEGG、Reactome、GO 和 STRING 的定义粒度不同,不能把不同库的排名简单混成一个“最终答案”。

⚠️ 注意事项

基因ID格式

不同数据库使用不同的基因ID格式(Symbol、Entrez、Ensembl)。分析前务必进行ID转换,避免因格式不匹配导致结果错误。

多重检验校正

通路富集涉及大量统计检验,必须进行多重检验校正(如Benjamini-Hochberg FDR校正)。建议使用FDR < 0.05作为显著性阈值。

背景基因选择

背景基因应选择实际检测到的基因(如RNA-seq表达基因),而非全基因组。使用全基因组会低估富集显著性。

通路解读建议

1. 优先关注FDR值最低的通路;2. 查看该通路中涉及的所有差异基因;3. 结合文献验证通路的生物学合理性;4. 使用多个数据库交叉验证结果。

🔗 相关技能链接

📦

下载完整代码包

包含:示例代码、数据文件、结果图表 · 24个文件 · 3.5MB

立即下载

💡 代码包内含 README.md 文档,包含环境配置和运行说明。解压后即可使用。