mcpField
A
alterlab-kegg

alterlab-kegg

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

关于 alterlab-kegg

alterlab-kegg 是通过 KEGG REST API 查询生物数据的技能,面向生物信息学研究人员,可检索并关联不同物种的通路、基因、化合物、酶、疾病和药物记录。

主要功能

  1. 01查询数据库信息与条目
  2. 02按关键词或分子属性搜索
  3. 03获取序列、结构和通路数据
  4. 04转换 KEGG 与外部数据库 ID
  5. 05查询条目关联和药物相互作用

适用场景

  1. 01将目标基因映射到相关通路
  2. 02查找化合物涉及的代谢通路
  3. 03比较不同物种的通路
  4. 04检查药物组合相互作用

安装

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

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

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

包含的文件

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

evals/
evals.json
references/
kegg_reference.md
scripts/
kegg_api.py

详细介绍

KEGG 数据库

概述

KEGG(京都基因与基因组百科全书)是一项综合性的生物信息学资源,用于生物通路分析和分子相互作用网络研究。

重要提示:KEGG API 仅向学术用户开放学术用途;非学术用途需要商业许可证(通过 Pathway Solutions 获取)。KEGG 要求客户端每秒最多调用 API 3 次,超过限制的客户端会被屏蔽,因此 scripts/kegg_api.py 中的辅助函数会自动限制调用频率。

何时使用此技能

需要使用 KEGG 的 REST API 查询多种生物体的通路、基因、化合物、酶、疾病和药物时,应使用此技能。

不适用的场景
场景改用
蛋白质-蛋白质相互作用网络和 STRING 富集分析alterlab-string-db
蛋白质序列、功能注释、UniProt ID 映射alterlab-uniprot
开放许可的人工整理通路和过度代表分析alterlab-reactome
可查询 KEGG、UniProt、ChEMBL 等资源的 Python 封装alterlab-bioservices
人类代谢物浓度、体液、生物标志物证据alterlab-hmdb

快速开始

此技能提供:

  1. 用于执行所有 KEGG REST API 操作的 Python 辅助函数(scripts/kegg_api.py)
  2. 包含详细 API 规范的综合参考文档(references/kegg_reference.md)

用户请求 KEGG 数据时,请确定所需的操作,并使用 scripts/kegg_api.py 中相应的函数。

核心操作

1. 数据库信息(kegg_info)

获取 KEGG 数据库的元数据和统计信息。

使用场景:了解数据库结构、检查可用数据、获取版本信息。

用法:

from scripts.kegg_api import kegg_info

# Get pathway database info
info = kegg_info('pathway')

# Get organism-specific info
hsa_info = kegg_info('hsa')  # Human genome

常见数据库:kegg、pathway、module、brite、genes、genome、compound、glycan、reaction、enzyme、disease、drug

2. 列出条目(kegg_list)

列出 KEGG 数据库中的条目标识符和名称。

使用场景:获取某个生物体的所有通路、列出基因、检索化合物目录。

用法:

from scripts.kegg_api import kegg_list

# List all reference pathways
pathways = kegg_list('pathway')

# List human-specific pathways
hsa_pathways = kegg_list('pathway', 'hsa')

# List specific genes (max 10)
genes = kegg_list('hsa:10458+hsa:10459')

常见生物体代码:hsa(人类)、mmu(小鼠)、dme(果蝇)、sce(酵母)、eco(大肠杆菌)

3. 搜索(kegg_find)

根据关键词或分子属性搜索 KEGG 数据库。

使用场景:按名称或描述查找基因、按分子式或质量搜索化合物、通过关键词发现条目。

用法:

from scripts.kegg_api import kegg_find

# Keyword search
results = kegg_find('genes', 'p53')
shiga_toxin = kegg_find('genes', 'shiga toxin')

# Chemical formula search (partial match, atom order ignored)
compounds = kegg_find('compound', 'C7H10N4O2', 'formula')

# Molecular weight range search
drugs = kegg_find('drug', '300-310', 'exact_mass')

搜索选项:formula(部分匹配——查找分子式中包含查询内容的条目,不考虑原子顺序)、exact_mass(范围,按查询值的小数位数取整)、mol_weight(范围)

4. 获取条目(kegg_get)

获取完整数据库条目或特定数据格式。

使用场景:检索通路详情、获取基因/蛋白质序列、下载通路图、访问化合物结构。

用法:

from scripts.kegg_api import kegg_get

# Get pathway entry
pathway = kegg_get('hsa00010')  # Glycolysis pathway

# Get multiple entries (max 10)
genes = kegg_get(['hsa:10458', 'hsa:10459'])

# Get protein sequence (FASTA)
sequence = kegg_get('hsa:10458', 'aaseq')

# Get nucleotide sequence
nt_seq = kegg_get('hsa:10458', 'ntseq')

# Get compound structure
mol_file = kegg_get('cpd:C00002', 'mol')  # ATP in MOL format

# Get pathway image (PNG) — single entry only
pathway_img = kegg_get('hsa05130', 'image')

# Get pathway KGML (XML structure) — single entry only
pathway_kgml = kegg_get('hsa05130', 'kgml')

# Get a BRITE hierarchy as JSON (json is for BRITE, not pathways)
brite_json = kegg_get('br:br08301', 'json')

输出格式:aaseq(蛋白质 FASTA)、ntseq(核苷酸 FASTA)、mol/kcf(化合物/聚糖/药物结构)、image(PNG,通路图及化合物/聚糖/药物)、image2x(尺寸加倍的 PNG,仅限参考 map#####)、kgml(通路 XML)、conf(通路图坐标)、json(仅限 BRITE 层级——/get/hsa05130/json 会返回 HTTP 400)

重要提示:image、image2x 和 kgml 每次仅允许处理一个条目。序列和结构格式最多支持 10 个条目。

5. ID 转换(kegg_conv)

在 KEGG 与外部数据库之间转换标识符。

使用场景:将 KEGG 数据与其他数据库整合、映射基因 ID、转换化合物标识符。

用法:

from scripts.kegg_api import kegg_conv

# Convert all human genes to NCBI Gene IDs
conversions = kegg_conv('ncbi-geneid', 'hsa')

# Convert specific gene
gene_id = kegg_conv('ncbi-geneid', 'hsa:10458')

# Convert to UniProt
uniprot_id = kegg_conv('uniprot', 'hsa:10458')

# Convert compounds to PubChem
pubchem_ids = kegg_conv('pubchem', 'compound')

# Reverse conversion (NCBI Gene ID to KEGG)
kegg_id = kegg_conv('hsa', 'ncbi-geneid')

支持的转换:ncbi-geneid、ncbi-proteinid、uniprot、pubchem、chebi

6. 交叉引用(kegg_link)

查找 KEGG 数据库内部及数据库之间的相关条目。

适用场景:查找包含特定基因的通路、获取通路中的基因、将基因映射到 KO 组、查找通路中的化合物。

用法:

from scripts.kegg_api import kegg_link

# Find pathways linked to human genes
pathways = kegg_link('pathway', 'hsa')

# Get genes in a specific pathway: the target is the organism code
# ('genes' as the target returns HTTP 400)
genes = kegg_link('hsa', 'hsa00010')  # Glycolysis genes

# Find pathways containing a specific gene
gene_pathways = kegg_link('pathway', 'hsa:10458')

# Find compounds in a pathway: compounds link to reference maps (map#####);
# the organism-specific hsa00010 returns an empty body
compounds = kegg_link('compound', 'map00010')

# Map genes to KO (orthology) groups
ko_groups = kegg_link('ko', 'hsa:10458')

常见链接:基因 ↔ pathway(将物种代码(如 hsa)用作基因侧数据库)、参考 pathway(map)↔ compound、pathway ↔ enzyme、基因 ↔ ko(直系同源)。即使 list 输出在 2023 年移除了前缀,链接输出仍会保留前缀(path:hsa04010、cpd:C00022)。

7. 药物-药物相互作用(kegg_ddi)

检查药物之间的相互作用。

适用场景:分析药物组合、检查禁忌症、开展药理学研究。

用法:

from scripts.kegg_api import kegg_ddi

# Check single drug
interactions = kegg_ddi('D00001')

# Check multiple drugs (max 10)
interactions = kegg_ddi(['D00001', 'D00002', 'D00003'])

常见分析工作流

工作流 1:基因到通路映射

使用场景:查找与关注基因相关的通路(例如,用于通路富集分析)。

from scripts.kegg_api import kegg_find, kegg_link, kegg_get

# Step 1: Find gene ID by name
gene_results = kegg_find('genes', 'p53')

# Step 2: Link gene to pathways
pathways = kegg_link('pathway', 'hsa:7157')  # TP53 gene

# Step 3: Get detailed pathway information
for pathway_line in pathways.split('\n'):
    if pathway_line:
        pathway_id = pathway_line.split('\t')[1].replace('path:', '')
        pathway_info = kegg_get(pathway_id)
        # Process pathway information
工作流 2:通路富集背景

使用场景:获取物种通路中的所有基因,用于富集分析。

from collections import defaultdict

from scripts.kegg_api import kegg_list, kegg_link

# Step 1: pathway names (one call)
names = dict(line.split('\t', 1) for line in kegg_list('pathway', 'hsa').splitlines() if line)

# Step 2: every gene-pathway link for the organism in ONE call, instead of one
# request per pathway (~370 calls would take minutes at KEGG's 3 calls/s limit)
gene_sets = defaultdict(set)
for line in kegg_link('pathway', 'hsa').splitlines():
    gene, path = line.split('\t')           # 'hsa:10327', 'path:hsa00010'
    gene_sets[path.removeprefix('path:')].add(gene)

# gene_sets['hsa00010'] -> set of KEGG gene IDs for Glycolysis / Gluconeogenesis
工作流 3:化合物到通路分析

使用场景:查找包含关注化合物的代谢通路。

from scripts.kegg_api import kegg_find, kegg_link, kegg_get

# Step 1: Search for compound
compound_results = kegg_find('compound', 'glucose')

# Step 2: Link compound to reactions
reactions = kegg_link('reaction', 'cpd:C00031')  # Glucose

# Step 3: Link reactions to pathways
pathways = kegg_link('pathway', 'rn:R00299')  # Specific reaction

# Step 4: Get pathway details
pathway_info = kegg_get('map00010')  # Glycolysis
工作流 4:跨数据库整合

使用场景:将 KEGG 数据与 UniProt、NCBI 或 PubChem 数据库整合。

from scripts.kegg_api import kegg_conv, kegg_get

# Step 1: Convert KEGG gene IDs to external database IDs
uniprot_map = kegg_conv('uniprot', 'hsa')
ncbi_map = kegg_conv('ncbi-geneid', 'hsa')

# Step 2: Parse conversion results
for line in uniprot_map.split('\n'):
    if line:
        kegg_id, uniprot_id = line.split('\t')
        # Use external IDs for integration

# Step 3: Get sequences using KEGG
sequence = kegg_get('hsa:10458', 'aaseq')
工作流 5:物种特异性通路分析

使用场景:比较不同物种中的通路。

from scripts.kegg_api import kegg_list, kegg_get

# Step 1: List pathways for multiple organisms
human_pathways = kegg_list('pathway', 'hsa')
mouse_pathways = kegg_list('pathway', 'mmu')
yeast_pathways = kegg_list('pathway', 'sce')

# Step 2: Get reference pathway for comparison
ref_pathway = kegg_get('map00010')  # Reference glycolysis

# Step 3: Get organism-specific versions
hsa_glycolysis = kegg_get('hsa00010')
mmu_glycolysis = kegg_get('mmu00010')

通路类别

KEGG 将通路分为七大类别。解读通路 ID 或向用户推荐通路时,请参考以下分类:

  1. 代谢(例如,map00010 - 糖酵解,map00190 - 氧化磷酸化)
  2. 遗传信息处理(例如,map03010 - 核糖体,map03040 - 剪接体)
  3. 环境信息处理(例如,map04010 - MAPK 信号通路,map02010 - ABC 转运蛋白)
  4. 细胞过程(例如,map04140 - 自噬,map04210 - 细胞凋亡)
  5. 个体系统(例如,map04610 - 补体级联,map04910 - 胰岛素信号通路)
  6. 人类疾病(例如,map05200 - 癌症通路,map05010 - 阿尔茨海默病)
  7. 药物开发(按时间顺序和靶标分类)

详细的通路列表和分类请参阅 references/kegg_reference.md。

重要标识符和格式

通路 ID
  • map##### - 参考通路(通用,不特定于某个物种)
  • hsa##### - 人类通路
  • mmu##### - 小鼠通路
基因 ID
  • 格式:organism:gene_number(例如,hsa:10458)
化合物 ID
  • 格式:cpd:C#####(例如,ATP 的 ID 为 cpd:C00002)
药物 ID
  • 格式:dr:D#####(例如,dr:D00001)
酶 ID
  • 格式:ec:EC_number(例如,ec:1.1.1.1)
KO(KEGG Orthology)ID
  • 格式:ko:K#####(例如,ko:K00001)

API 限制

使用 KEGG API 时,请遵守以下限制:

  1. 条目数量限制:每次操作最多 10 个条目(image/image2x/kgml 除外,这些操作每次仅允许 1 个条目)
  2. 学术用途:API 仅供学术用途;商业用途需要获得许可
  3. HTTP 状态码:检查 200(成功)、400(请求错误)、404(未找到)
  4. 速率限制:每秒最多 3 次调用——超出限制的客户端会被 KEGG 屏蔽。优先使用批量调用(/link/pathway/hsa、/conv/ncbi-geneid/hsa),而不是逐条循环调用

详细参考

完整的 API 文档、数据库规范、物种代码和进阶用法,请参阅 references/kegg_reference.md。其中包括:

  • KEGG 数据库完整列表
  • 详细的 API 操作语法
  • 所有物种代码
  • HTTP 状态码和错误处理
  • 与 Biopython 和 R/Bioconductor 的集成
  • API 使用最佳实践

故障排除

404 Not Found:条目或数据库不存在;请核对 ID 和生物体代码 400 Bad Request:API 调用中存在语法错误;请检查参数格式 结果为空:搜索词可能与条目不匹配;请尝试更宽泛的关键词 图像/KGML 错误:image/image2x/kgml 仅适用于单个条目;请移除批量处理 通路返回 400 错误:json 仅适用于 BRITE 层级结构(例如 br:br08301);通路结构请使用 kgml

其他工具

如需交互式通路可视化和注释:

评论

支持 Markdown