Annotation Skill - 功能注释技能
提供两种模式的功能注释:
模式对比
| 特性 | API 模式 (run_api.py) |
本地模式 (run.py) |
|---|---|---|
| 速度 | 慢 (~1秒/基因) | 快 (批量处理) |
| 数据库 | 不需要 | 需要 (~20GB) |
| 网络 | 需要联网 | 不需要 |
| 适用数据量 | < 1000 基因 | 任意规模 |
| 输出格式 | gene2go.txt | .emapper.annotations |
| 注释内容 | 仅 GO | GO + KEGG + COG + Pfam |
快速开始
API 模式(推荐小数据集)
# 基本用法
python run_api.py --input protein.fa --output ./annotation
# 调整请求间隔(避免被限流)
python run_api.py --input protein.fa --output ./annotation --delay 1.5
本地模式(推荐大数据集)
# 1. 先下载数据库(只需一次)
bash download_db.sh
# 2. 运行注释
python run.py --input protein.fa --output ./annotation --cpu 8
输出文件
API 模式
*.gene2go.txt- 基因-GO对应表report.md- 统计报告
本地模式
*.emapper.annotations- 完整注释结果*.emapper.seed_orthologs- 种子直系同源*.emapper.pfam- Pfam结构域report.md- 统计报告commands.sh- 可复现命令
测试
# 测试 API 模式
python run_api.py --demo --output ./test_api
# 测试本地模式
python run.py --demo --output ./test_local
# 运行单元测试
python tests/test_annotation.py
集成到 Pipeline
# 小数据集用 API
from skills.annotation.run_api import AnnotationAPISkill
skill = AnnotationAPISkill()
result = skill.run(protein_fasta, output_dir)
# 大数据集用本地
from skills.annotation.run import AnnotationSkill
skill = AnnotationSkill()
result = skill.run(protein_fasta, output_dir)
注意事项
- API 模式:eggNOG 服务器可能有请求限制,建议
--delay 1.0以上 - 本地模式:首次需下载 20GB 数据库,使用
download_db.sh脚本 - 基因数量:API 模式超过 1000 基因会非常慢,建议改用本地模式