bioservices
用于 40+ 个生物信息学服务的统一 Python 接口。在单个工作流程中查询多个数据库(UniProt、KEGG、ChEMBL、Reactome)时使用,并提供一致的 API。最适合跨数据库分析、以及在各服务之间进行 ID 映射。若要进行快速的单数据库查询,请使用 gget;若要进行序列/文件处理,请使用 biopython。
分类
开发工具安装
下载并解压到你的 skills 目录
复制命令,发送给智能体自动安装:
BioServices - 生物信息学数据库统一查询接口
技能概述
BioServices 是一个 Python 包,提供统一接口访问 40+ 生物信息学 Web 服务和数据库,包括 UniProt、KEGG、ChEMBL、PDB 等。适合需要在单个工作流程中查询多个数据库、进行跨数据库分析和标识符映射的场景。支持 Python 3.9–3.12,使用 GPLv3 许可证。
适用场景
1. 跨数据库生物信息学分析
当需要从多个生物数据库整合数据时,BioServices 提供一致的 API 接口,避免学习不同数据库的查询方式。典型场景包括:从 UniProt 获取蛋白质序列,通过 KEGG 查找相关代谢通路,在 ChEMBL 中搜索化合物信息,最后整合分析结果。
2. 生物数据库标识符映射
转换不同数据库之间的标识符,如 UniProtKB ↔ KEGG、UniProtKB ↔ Ensembl、化合物 KEGG ID ↔ ChEMBL。支持批量转换,适合需要整合多个数据来源的分析工作流。
3. 蛋白质与通路分析
核心功能
1. 统一的数据库访问接口
支持 40+ 生物信息学数据库,包括:
所有服务使用一致的调用模式,支持 REST 和 SOAP/WSDL 协议。
2. 跨数据库标识符转换
提供便捷的标识符映射功能:
from bioservices import UniProt
u = UniProt()
# UniProt → KEGG
results = u.mapping(fr="UniProtKB_AC-ID", to="KEGG", query="P43403")支持多种数据库对之间的转换,无需手动查找映射关系。
3. 完整的分析工作流支持
提供完整的工作流脚本示例,涵盖蛋白质分析、通路分析、化合物检索等常见场景。
常见问题
BioServices 支持哪些生物数据库?
BioServices 支持约 40 个生物信息学数据库,包括:
完整列表可查看 references/services_reference.md 文档。
如何使用 BioServices 查询 UniProt 蛋白质信息?
基本查询示例:
from bioservices import UniProt
u = UniProt(verbose=False)
# 搜索蛋白质
results = u.search("ZAP70_HUMAN", frmt="tab", columns="id,genes,organism")
# 获取 FASTA 序列
sequence = u.retrieve("P43403", "fasta")
# 标识符映射
kegg_ids = u.mapping(fr="UniProtKB_AC-ID", to="KEGG", query="P43403")更多详细用法请参考技能文档中的"Core Capabilities"章节。
BioServices 和 Biopython 应该选择哪个?
这两个工具互补,不是替代关系:
推荐组合使用:用 BioServices 从数据库获取数据,用 Biopython 进行本地序列处理和分析。
其他对比:
BioServices 需要 API 密钥吗?
大多数服务不需要 API 密钥。例外情况:
NCBI_EMAIL 设置设置邮箱:
export NCBI_EMAIL=your.email@example.com如何批量转换生物数据库标识符?
BioServices 提供批量转换能力,可将多个标识符一次性转换:
from bioservices import UniProt
u = UniProt()
# 批量 UniProt → KEGG 转换
results = u.mapping(
fr="UniProtKB_AC-ID",
to="KEGG",
query="P43403,P12345,P67890" # 多个 ID 用逗号分隔
)对于大规模批量处理,可使用提供的脚本:
python scripts/batch_id_converter.py input_ids.txt --from UniProtKB_AC-ID --to KEGGBioServices 支持哪些 Python 版本?
支持 Python 3.9–3.12。安装建议使用固定版本:
uv pip install "bioservices==1.16.0"上游 CI 测试覆盖 Python 3.9–3.12(截至 2026 年 3 月)。
如何用 BioServices 进行 BLAST 搜索?
import os
from bioservices import NCBIblast
s = NCBIblast(verbose=False)
email = os.environ["NCBI_EMAIL"]
# 提交 BLAST 任务
jobid = s.run(
program="blastp",
sequence=protein_sequence,
stype="protein",
database="uniprotkb",
email=email,
)
# 检查状态并获取结果
s.getStatus(jobid)
results = s.getResult(jobid, "out")注意:BLAST 是异步任务,需先检查状态完成后再获取结果。必须设置 NCBI_EMAIL 环境变量。