Reactome通路数据库
一句话概述:Reactome是经过人工审核的开放获取通路数据库,以反应(reaction)为核心单元组织生物学通路,涵盖代谢、信号转导、免疫等过程,是KEGG之外最重要的通路数据库。
核心知识点速查表
| 概念 | 说明 |
|---|
| Reactome | 人工审核的通路数据库(白话:专家手动整理的"反应路线图") |
| Reaction | Reactome的基本单位,描述一个具体的生化反应 |
| Pathway | 一组相关反应的集合 |
| 人工审核 | 每条通路都经专家审查,比自动化数据库更可靠 |
| ReactomePA | R语言Reactome富集分析包 |
| 物种覆盖 | 主要基于人类数据,通过直系同源推广到其他物种 |
一、Reactome与KEGG对比
| 特性 | Reactome | KEGG |
|---|
| 数据审核 | 人工审核 | 部分自动化 |
| 开放获取 | 完全免费开放 | 学术免费,商业收费 |
| 更新频率 | 每季度 | 持续更新 |
| 核心单位 | 反应(Reaction) | 通路(Pathway) |
| 物种覆盖 | 人类为主,推广到其他物种 | 广泛覆盖各物种 |
| 适用场景 | 人类/模式动物研究 | 所有物种,尤其非模式生物 |
二、在线使用Reactome
# === Reactome在线分析 ===
# 访问: https://reactome.org/PathwayBrowser/
# 1. 点击"Analyze Data"
# 2. 输入基因列表(HGNC symbol或UniProt ID)
# 3. 选择分析类型:
# - Over-representation analysis(富集分析)
# - Expression analysis(表达分析,需要表达值)
# 4. 点击"Submit"
# 5. 结果显示在通路浏览器中,可交互浏览
三、R语言ReactomePA分析
# === 安装ReactomePA ===
if (!requireNamespace("BiocManager", quietly=TRUE))
install.packages("BiocManager")
BiocManager::install("ReactomePA")
# === Reactome ORA富集分析 ===
library(ReactomePA)
# 准备差异基因(需要ENTREZID)
gene_list <- c("7157", "675", "672", "5925", "4609") # 示例
# 富集分析
reactome_enrich <- enrichPathway(
gene = gene_list, # 差异基因列表
organism = "human", # 物种(human/rat/mouse/celegans/yeast/zebrafish/fly)
pAdjustMethod = "BH", # 多重检验校正
pvalueCutoff = 0.05, # p值阈值
readable = TRUE # 将ENTREZID转为基因符号(便于阅读)
)
# 查看结果
head(as.data.frame(reactome_enrich))
# 可视化
dotplot(reactome_enrich, showCategory=15) # 点图
barplot(reactome_enrich, showCategory=15) # 柱状图
cnetplot(reactome_enrich, showCategory=5) # 基因-通路网络图
emapplot(pairwise_termsim(reactome_enrich)) # 通路相似性网络
# === Reactome GSEA ===
# 准备排序的基因列表
geneList <- sort(gene_rank$logFC, decreasing=TRUE)
names(geneList) <- gene_rank$ENTREZID
# GSEA分析
gsea_reactome <- gsePathway(
geneList = geneList, # 排序的基因列表
organism = "human", # 物种
pAdjustMethod = "BH", # FDR校正
pvalueCutoff = 0.05 # 阈值
)
# 可视化
gseaplot2(gsea_reactome, geneSetID=1:3) # GSEA曲线
viewPathway(
"Cell Cycle", # 通路名称
readable=TRUE, # 显示基因符号
foldChange=geneList # 表达值着色
)
四、Reactome API使用
# === Python调用Reactome API ===
import requests
import json
# 基因列表富集分析
genes = ["TP53", "BRCA1", "BRCA2", "RB1", "MYC"] # 基因列表
url = "https://reactome.org/AnalysisService/identifiers/projection" # API端点
# 提交分析
response = requests.post(
url,
headers={"Content-Type": "text/plain"},
data="\n".join(genes) # 基因列表,换行分隔
)
result = response.json() # 解析JSON结果
token = result["summary"]["token"] # 获取分析token
# 查看富集的通路
for pathway in result["pathways"][:10]: # 前10条通路
print(f"{pathway['name']}: p={pathway['entities']['pValue']:.2e}, "
f"FDR={pathway['entities']['fdr']:.2e}")
# 下载结果
# 用token下载完整结果
download_url = f"https://reactome.org/AnalysisService/download/{token}/pathways/TOTAL/result.csv"
# === 命令行调用Reactome API ===
# 基因列表富集分析
curl -X POST "https://reactome.org/AnalysisService/identifiers/projection" \
-H "Content-Type: text/plain" \
-d "TP53
BRCA1
BRCA2
RB1" | python3 -m json.tool | head -50
五、面试高频考点
Q1: 为什么同时用Reactome和KEGG?
- Reactome人工审核,更可靠,但主要覆盖人类/模式动物
- KEGG覆盖物种更广,适合非模式生物
- 两个数据库通路定义不同,互相补充
- 发表文章时两者结果互相验证更有说服力
Q2: Reactome的独特优势?
- 完全开放:学术和商业都免费
- 人工审核:每条通路都经过专家验证
- 反应粒度:以单个反应为基本单位,比KEGG更精细
- 可视化好:交互式通路浏览器,支持叠加实验数据
常见报错与解决
| 报错 | 原因 | 解决方案 |
|---|
No enrichment | 基因ID不匹配 | 确保使用ENTREZID |
API timeout | 网络不稳定 | 重试或使用R包本地分析 |
Species not supported | 物种不在支持列表 | 用人类同源基因做分析 |
ReactomePA安装失败 | Bioconductor版本不对 | 更新R和BiocManager |
速查表
# === Reactome分析速查 ===
library(ReactomePA)
# ORA富集
rpa <- enrichPathway(gene=gene_list, organism="human", readable=TRUE)
dotplot(rpa, showCategory=15)
# GSEA
gsea_rpa <- gsePathway(geneList=sorted_genes, organism="human")
gseaplot2(gsea_rpa, geneSetID=1:3)
# 通路可视化
viewPathway("Cell Cycle", readable=TRUE, foldChange=geneList)
# 支持物种: human, rat, mouse, celegans, yeast, zebrafish, fly