mcpField
A
alterlab-reactome

alterlab-reactome

github.com/alterlab-ieu数据与数据库7866 次安装5 周前更新
代码仓库

关于 alterlab-reactome

alterlab-reactome 是使用 Reactome 通路数据库进行查询和分析的技能,面向系统生物学研究者。它通过 REST API 和 Python 客户端支持通路数据检索、基因映射及富集与表达分析。

主要功能

  1. 01查询通路、反应和分子实体
  2. 02将基因或蛋白映射到通路
  3. 03执行通路过度代表分析
  4. 04分析基因表达数据
  5. 05比较不同物种的通路

适用场景

  1. 01从基因列表识别富集通路
  2. 02探索特定通路的分子参与者
  3. 03分析表达数据关联的通路
  4. 04比较不同物种的通路信息

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alterlab-ieu/alterlab-academic-skills --skill alterlab-reactome

安装后在 Claude Code 中输入/alterlab-reactome确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

evals/
evals.json
references/
api_reference.md
scripts/
reactome_query.py

详细介绍

Reactome 数据库

概述

Reactome 是一个免费、开源且经过整理的通路数据库(包含数千条人类通路)。通过 REST API 和 Python 客户端查询生物通路、执行过度富集分析和表达分析、将基因映射到通路,以及探索分子相互作用,助力系统生物学研究。

何时使用此技能

在以下情况下应使用此技能:

  • 对基因或蛋白质列表执行通路富集分析
  • 分析基因表达数据,以识别相关的生物通路
  • 查询特定通路信息、反应或分子相互作用
  • 将基因或蛋白质映射到生物通路和过程
  • 探索与疾病相关的通路和机制
  • 在 Reactome Pathway Browser 中可视化分析结果
  • 跨物种开展比较通路分析
不适用的情况
场景改用
KEGG 通路图、KO 直系同源关系、KEGG 化合物/药物 IDalterlab-kegg
蛋白质互作网络和 STRING 功能富集alterlab-string-db
全基因组尺度的代谢模型和通量平衡分析alterlab-cobrapy
RNA-seq 计数的差异表达统计alterlab-pydeseq2
用于药物发现的靶点-疾病证据评分alterlab-opentargets

核心功能

Reactome 提供两项主要 API 服务和一个 Python 客户端库:

1. 内容服务 - 数据检索

查询和检索生物通路数据、分子相互作用和实体信息。

常见操作:

  • 检索通路信息和层级结构
  • 查询特定实体(蛋白质、反应、复合物)
  • 获取通路中参与的分子
  • 查看数据库版本和元数据
  • 探索通路区室和位置

API 基础 URL: https://reactome.org/ContentService

2. 分析服务 - 通路分析

对基因列表和表达数据执行计算分析。

分析类型:

  • 过度富集分析:从基因/蛋白质列表中识别具有统计学显著性的通路
  • 表达数据分析:分析基因表达数据集,以查找相关通路
  • 物种比较:比较不同生物体的通路数据

API 基础 URL: https://reactome.org/AnalysisService

3. reactome2py Python 包

Python 客户端库,封装了 Reactome API 调用,便于以编程方式访问。

安装:

uv pip install reactome2py

注意: reactome2py 包(版本 3.0.0,于 2021 年 1 月发布)可以使用,但目前未积极维护。如需使用最新功能,可考虑直接调用 REST API。

查询通路数据

使用内容服务 REST API

内容服务使用 REST 协议,并以 JSON 或纯文本格式返回数据。

获取数据库版本:

import requests

response = requests.get("https://reactome.org/ContentService/data/database/version")
version = response.text
print(f"Reactome version: {version}")

查询特定实体:

import requests

entity_id = "R-HSA-69278"  # Example pathway ID
response = requests.get(f"https://reactome.org/ContentService/data/query/{entity_id}")
data = response.json()

获取通路中参与的分子:

import requests

# NOTE: the path is /data/participants/{id}/... (NOT /data/event/{id}/...);
# the older /data/event/.../participatingPhysicalEntities now returns 404.
pathway_id = "R-HSA-69278"
response = requests.get(
    f"https://reactome.org/ContentService/data/participants/{pathway_id}/participatingPhysicalEntities"
)
molecules = response.json()

将基因/蛋白质映射到其参与的通路:

import requests

# /data/mapping/{resource}/{id}/pathways  — resource = UniProt, Ensembl, etc.
response = requests.get(
    "https://reactome.org/ContentService/data/mapping/UniProt/P04637/pathways",
    params={"species": "9606"},  # taxId; 9606 = Homo sapiens
)
pathways = response.json()  # list of {stId, displayName, ...}

对于映射端点,请使用 UniProt 登录号(例如 P04637)或 Ensembl 基因 ID。若从基因符号(例如 TP53)开始,可先将其解析为 UniProt/Ensembl ID,或通过分析服务(/identifiers/)提交,该服务会自动识别符号并返回匹配的通路。

按名称搜索实体(没有稳定 ID 时):

response = requests.get(
    "https://reactome.org/ContentService/search/query",
    params={"query": "glycolysis", "species": "Homo sapiens", "types": "Pathway"},
)
hits = response.json()["results"]  # grouped result clusters
使用 reactome2py 包
import reactome2py
from reactome2py import content

# Query pathway information
pathway_info = content.query_by_id("R-HSA-69278")

# Get database version
version = content.get_database_version()

详细的 API 端点和参数请参阅此技能中的 references/api_reference.md。

执行通路分析

过度富集分析

提交基因/蛋白质标识符列表,以查找富集的通路。

使用 REST API:

import requests

# Prepare identifier list
identifiers = ["TP53", "BRCA1", "EGFR", "MYC"]
data = "\n".join(identifiers)

# Submit analysis
response = requests.post(
    "https://reactome.org/AnalysisService/identifiers/",
    headers={"Content-Type": "text/plain"},
    data=data
)

result = response.json()
token = result["summary"]["token"]  # Save token to retrieve results later

# Access pathways
for pathway in result["pathways"]:
    print(f"{pathway['stId']}: {pathway['name']} (p-value: {pathway['entities']['pValue']})")

通过令牌检索分析结果:

# Token is valid for 7 days
response = requests.get(f"https://reactome.org/AnalysisService/token/{token}")
results = response.json()
表达数据分析

使用定量值分析基因表达数据集。

输入格式(带有以 # 开头的表头的 TSV):

#Gene	Sample1	Sample2	Sample3
TP53	2.5	3.1	2.8
BRCA1	1.2	1.5	1.3
EGFR	4.5	4.2	4.8

提交表达数据:

import requests

# Read TSV file
with open("expression_data.tsv", "r") as f:
    data = f.read()

response = requests.post(
    "https://reactome.org/AnalysisService/identifiers/",
    headers={"Content-Type": "text/plain"},
    data=data
)

result = response.json()
物种投影

仅使用 /projection/ 端点将标识符映射到人类通路:

response = requests.post(
    "https://reactome.org/AnalysisService/identifiers/projection/",
    headers={"Content-Type": "text/plain"},
    data=data
)

可视化结果

通过构造包含分析令牌的 URL,可在 Reactome Pathway Browser 中可视化分析结果:

token = result["summary"]["token"]
pathway_id = "R-HSA-69278"
url = f"https://reactome.org/PathwayBrowser/#{pathway_id}&DTAB=AN&ANALYSIS={token}"
print(f"View results: {url}")

使用分析令牌

  • 分析令牌的有效期为 7 天
  • 令牌可用于检索之前计算的结果,无需重新提交
  • 保存令牌,以便跨会话访问结果
  • 使用 GET /token/{TOKEN} 端点检索结果

数据格式和标识符

支持的标识符类型

Reactome 接受多种标识符格式:

  • UniProt 登录号(例如 P04637)
  • 基因符号(例如 TP53)
  • Ensembl ID(例如 ENSG00000141510)
  • EntrezGene ID(例如 7157)
  • 小分子的 ChEBI ID

系统会自动检测标识符类型。

输入格式要求

对于过度富集分析:

  • 纯文本标识符列表(每行一个)
  • 或者,TSV 格式的单列数据

对于表达分析:

  • TSV 格式,必须包含以「#」开头的标题行
  • 第 1 列:标识符
  • 第 2 列及以后:数值型表达值
  • 使用句点(.)作为小数分隔符
输出格式

所有 API 响应均返回 JSON,包含:

  • pathways:富集通路数组及统计指标
  • summary:分析元数据和令牌
  • entities:已匹配和未映射的标识符
  • 统计值:pValue、FDR(错误发现率)

辅助脚本

此技能包含 scripts/reactome_query.py,这是一个用于常见 Reactome 操作的辅助脚本:

# Query pathway information
python scripts/reactome_query.py query R-HSA-69278

# List participating molecules in a pathway
python scripts/reactome_query.py entities R-HSA-69278

# Search for a pathway by name
python scripts/reactome_query.py search "cell cycle"

# Perform overrepresentation analysis
python scripts/reactome_query.py analyze gene_list.txt

# Get database version
python scripts/reactome_query.py version

该脚本仅依赖 requests;使用 uv run --with requests scripts/reactome_query.py ... 运行。

其他资源

如需完整的 API 端点文档,请参阅此技能中的 references/api_reference.md。

数据库版本

Reactome 每季度发布新版本;实时版本(截至 2026-09 为 97, 已通过 API 验证)是权威数据来源——不要硬编码可能过时的数量。请在查询时获取当前版本和各类型的统计信息:

curl -s https://reactome.org/ContentService/data/database/version

各版本级别的内容统计汇总见 https://reactome.org/about/statistics。

评论

支持 Markdown