名称: kegg-database 描述: “直接通过 REST API 访问 KEGG(仅限学术使用)。通路分析、基因-通路映射、代谢通路、药物相互作用、ID 转换。对于使用多个数据库的 Python 工作流,建议使用 bioservices。使用此技能进行直接的 HTTP/REST 工作或 KEGG 特定控制。”
KEGG 数据库
概述
KEGG(京都基因与基因组百科全书)是一个用于生物通路分析和分子交互网络的全面生物信息学资源。
重要:KEGG API 仅对学术用户提供学术用途。
何时使用此技能
当使用 KEGG 的 REST API 查询跨多个生物体的通路、基因、化合物、酶、疾病和药物时,应使用此技能。
快速开始
此技能提供:
- 用于所有 KEGG REST API 操作的 Python 辅助函数(
scripts/kegg_api.py) - 详细的参考文档(
references/kegg_reference.md),包含 API 规范
当用户请求 KEGG 数据时,确定所需操作并使用 scripts/kegg_api.py 中的适当函数。
核心操作
1. 数据库信息(kegg_info)
检索 KEGG 数据库的元数据和统计信息。
何时使用:理解数据库结构,检查可用数据,获取发布信息。
使用:
from scripts.kegg_api import kegg_info
# 获取通路数据库信息
info = kegg_info('pathway')
# 获取生物体特定信息
hsa_info = kegg_info('hsa') # 人类基因组
常见数据库:kegg, pathway, module, brite, genes, genome, compound, glycan, reaction, enzyme, disease, drug
2. 列出条目(kegg_list)
从 KEGG 数据库列出条目标识符和名称。
何时使用:获取生物体的所有通路,列出基因,检索化合物目录。
使用:
from scripts.kegg_api import kegg_list
# 列出所有参考通路
pathways = kegg_list('pathway')
# 列出人类特定通路
hsa_pathways = kegg_list('pathway', 'hsa')
# 列出特定基因(最多10个)
genes = kegg_list('hsa:10458+hsa:10459')
常见生物体代码:hsa(人类), mmu(小鼠), dme(果蝇), sce(酵母), eco(大肠杆菌)
3. 搜索(kegg_find)
通过关键词或分子属性搜索 KEGG 数据库。
何时使用:按名称/描述查找基因,按公式或质量搜索化合物,通过关键词发现条目。
使用:
from scripts.kegg_api import kegg_find
# 关键词搜索
results = kegg_find('genes', 'p53')
shiga_toxin = kegg_find('genes', 'shiga toxin')
# 化学公式搜索(精确匹配)
compounds = kegg_find('compound', 'C7H10N4O2', 'formula')
# 分子量范围搜索
drugs = kegg_find('drug', '300-310', 'exact_mass')
搜索选项:formula(精确匹配), exact_mass(范围), mol_weight(范围)
4. 检索条目(kegg_get)
获取完整的数据库条目或特定数据格式。
何时使用:检索通路细节,获取基因/蛋白质序列,下载通路图,访问化合物结构。
使用:
from scripts.kegg_api import kegg_get
# 获取通路条目
pathway = kegg_get('hsa00010') # 糖酵解通路
# 获取多个条目(最多10个)
genes = kegg_get(['hsa:10458', 'hsa:10459'])
# 获取蛋白质序列(FASTA)
sequence = kegg_get('hsa:10458', 'aaseq')
# 获取核苷酸序列
nt_seq = kegg_get('hsa:10458', 'ntseq')
# 获取化合物结构
mol_file = kegg_get('cpd:C00002', 'mol') # ATP 在 MOL 格式中
# 获取通路为 JSON(仅单个条目)
pathway_json = kegg_get('hsa05130', 'json')
# 获取通路图像(仅单个条目)
pathway_img = kegg_get('hsa05130', 'image')
输出格式:aaseq(蛋白质 FASTA), ntseq(核苷酸 FASTA), mol(MOL 格式), kcf(KCF 格式), image(PNG), kgml(XML), json(通路 JSON)
重要:图像、KGML 和 JSON 格式仅允许一个条目。
5. ID 转换(kegg_conv)
在 KEGG 和外部数据库之间转换标识符。
何时使用:集成 KEGG 数据与其他数据库,映射基因 ID,转换化合物标识符。
使用:
from scripts.kegg_api import kegg_conv
# 将所有人类基因转换为 NCBI Gene IDs
conversions = kegg_conv('ncbi-geneid', 'hsa')
# 转换特定基因
gene_id = kegg_conv('ncbi-geneid', 'hsa:10458')
# 转换为 UniProt
uniprot_id = kegg_conv('uniprot', 'hsa:10458')
# 转换化合物为 PubChem
pubchem_ids = kegg_conv('pubchem', 'compound')
# 反向转换(NCBI Gene ID 到 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
# 查找与人类基因链接的通路
pathways = kegg_link('pathway', 'hsa')
# 获取特定通路中的基因
genes = kegg_link('genes', 'hsa00010') # 糖酵解基因
# 查找包含特定基因的通路
gene_pathways = kegg_link('pathway', 'hsa:10458')
# 查找通路中的化合物
compounds = kegg_link('compound', 'hsa00010')
# 映射基因到 KO(同源)组
ko_groups = kegg_link('ko', 'hsa:10458')
常见链接:基因 ↔ 通路, 通路 ↔ 化合物, 通路 ↔ 酶, 基因 ↔ ko(同源)
7. 药物-药物相互作用(kegg_ddi)
检查药物-药物相互作用。
何时使用:分析药物组合,检查禁忌症,药理学研究。
使用:
from scripts.kegg_api import kegg_ddi
# 检查单个药物
interactions = kegg_ddi('D00001')
# 检查多个药物(最多10个)
interactions = kegg_ddi(['D00001', 'D00002', 'D00003'])
常见分析工作流
工作流1:基因到通路映射
使用案例:查找与感兴趣基因相关的通路(例如,用于通路富集分析)。
from scripts.kegg_api import kegg_find, kegg_link, kegg_get
# 步骤1:按名称查找基因 ID
gene_results = kegg_find('genes', 'p53')
# 步骤2:链接基因到通路
pathways = kegg_link('pathway', 'hsa:7157') # TP53 基因
# 步骤3:获取详细通路信息
for pathway_line in pathways.split('
'):
if pathway_line:
pathway_id = pathway_line.split('\t')[1].replace('path:', '')
pathway_info = kegg_get(pathway_id)
# 处理通路信息
工作流2:通路富集上下文
使用案例:获取生物体所有通路的基因用于富集分析。
from scripts.kegg_api import kegg_list, kegg_link
# 步骤1:列出所有人类通路
pathways = kegg_list('pathway', 'hsa')
# 步骤2:对于每个通路,获取相关基因
for pathway_line in pathways.split('
'):
if pathway_line:
pathway_id = pathway_line.split('\t')[0]
genes = kegg_link('genes', pathway_id)
# 为富集分析处理基因
工作流3:化合物到通路分析
使用案例:查找包含感兴趣化合物的代谢通路。
from scripts.kegg_api import kegg_find, kegg_link, kegg_get
# 步骤1:搜索化合物
compound_results = kegg_find('compound', 'glucose')
# 步骤2:链接化合物到反应
reactions = kegg_link('reaction', 'cpd:C00031') # 葡萄糖
# 步骤3:链接反应到通路
pathways = kegg_link('pathway', 'rn:R00299') # 特定反应
# 步骤4:获取通路细节
pathway_info = kegg_get('map00010') # 糖酵解
工作流4:跨数据库集成
使用案例:集成 KEGG 数据与 UniProt、NCBI 或 PubChem 数据库。
from scripts.kegg_api import kegg_conv, kegg_get
# 步骤1:转换 KEGG 基因 ID 为外部数据库 ID
uniprot_map = kegg_conv('uniprot', 'hsa')
ncbi_map = kegg_conv('ncbi-geneid', 'hsa')
# 步骤2:解析转换结果
for line in uniprot_map.split('
'):
if line:
kegg_id, uniprot_id = line.split('\t')
# 使用外部 ID 进行集成
# 步骤3:使用 KEGG 获取序列
sequence = kegg_get('hsa:10458', 'aaseq')
工作流5:生物体特定通路分析
使用案例:比较不同生物体之间的通路。
from scripts.kegg_api import kegg_list, kegg_get
# 步骤1:列出多个生物体的通路
human_pathways = kegg_list('pathway', 'hsa')
mouse_pathways = kegg_list('pathway', 'mmu')
yeast_pathways = kegg_list('pathway', 'sce')
# 步骤2:获取参考通路进行比较
ref_pathway = kegg_get('map00010') # 参考糖酵解
# 步骤3:获取生物体特定版本
hsa_glycolysis = kegg_get('hsa00010')
mmu_glycolysis = kegg_get('mmu00010')
通路类别
KEGG 将通路组织成七个主要类别。当解释通路 ID 或向用户推荐通路时:
- 代谢(例如,
map00010- 糖酵解,map00190- 氧化磷酸化) - 遗传信息处理(例如,
map03010- 核糖体,map03040- 剪接体) - 环境信息处理(例如,
map04010- MAPK 信号传导,map02010- ABC 转运蛋白) - 细胞过程(例如,
map04140- 自噬,map04210- 凋亡) - 生物体系统(例如,
map04610- 补体级联,map04910- 胰岛素信号传导) - 人类疾病(例如,
map05200- 癌症通路,map05010- 阿尔茨海默病) - 药物开发(按时间顺序和基于靶点的分类)
参考 references/kegg_reference.md 获取详细通路列表和分类。
重要标识符和格式
通路 ID
map#####- 参考通路(通用,非生物体特定)hsa#####- 人类通路mmu#####- 小鼠通路
基因 ID
- 格式:
生物体:基因编号(例如,hsa:10458)
化合物 ID
- 格式:
cpd:C#####(例如,cpd:C00002对于 ATP)
药物 ID
- 格式:
dr:D#####(例如,dr:D00001)
酶 ID
- 格式:
ec:EC_编号(例如,ec:1.1.1.1)
KO(KEGG 同源)ID
- 格式:
ko:K#####(例如,ko:K00001)
API 限制
使用 KEGG API 时,尊重这些约束:
- 条目限制:每个操作最多10个条目(除图像/kgml/json:仅1个条目)
- 学术用途:API 仅用于学术用途;商业用途需要许可
- HTTP 状态代码:检查200(成功), 400(错误请求), 404(未找到)
- 速率限制:没有明确限制,但避免快速请求
详细参考
对于全面的 API 文档、数据库规范、生物体代码和高级使用,请参考 references/kegg_reference.md。这包括:
- KEGG 数据库的完整列表
- 详细的 API 操作语法
- 所有生物体代码
- HTTP 状态代码和错误处理
- 与 Biopython 和 R/Bioconductor 的集成
- API 使用的最佳实践
故障排除
404 未找到:条目或数据库不存在;验证 ID 和生物体代码 400 错误请求:API 调用中的语法错误;检查参数格式 空结果:搜索词可能不匹配条目;尝试更广泛的关键词 图像/KGML 错误:这些格式仅适用于单个条目;移除批处理
附加工具
对于交互式通路可视化和注释:
- KEGG Mapper:https://www.kegg.jp/kegg/mapper/
- BlastKOALA:自动化基因组注释
- GhostKOALA:宏基因组/宏转录组注释