BioServices 是一个 Python 包,提供对约 40 个生物信息学 Web 服务和数据库的编程访问。它可用于检索生物数据、执行跨数据库查询、映射标识符、分析序列,并在 Python 工作流中整合多个生物资源。该包透明处理 REST 与 SOAP/WSDL 两种协议。
版本说明:示例针对 bioservices 1.16.0(PyPI,2026 年 3 月),要求 Python 3.9–3.12。2022 年中 UniProt REST 变更(bioservices ≥1.10)主要影响表格列名,若解析出错可参考上游 _legacy_names。ChEMBL 封装在 1.6.0(2018 API)发生变更,应使用 get_similarity、get_substructure、get_molecule,而非 1.6 之前的方法名。
适用场景
该技能适用于以下情况:从 UniProt、PDB、Pfam 检索蛋白质序列、注释或结构;通过 KEGG 或 Reactome 分析代谢通路与基因功能;在 ChEBI、ChEMBL、PubChem 等化合物数据库中搜索化学信息;在不同生物数据库之间转换标识符(KEGG↔UniProt、化合物 ID);运行序列相似性搜索(BLAST、MUSCLE 比对);查询基因本体术语(QuickGO、GO 注释);访问蛋白质-蛋白质相互作用数据(PSICQUIC、IntactComplex);挖掘基因组数据(BioMart、ArrayExpress、ENA);在单一工作流中整合来自多个生物信息学资源的数据。
核心能力
- 蛋白质分析
检索蛋白质信息、序列与功能注释。关键方法包括:search() 使用灵活搜索词查询 UniProt;retrieve() 以多种格式(FASTA、XML、tab)获取蛋白质条目;mapping() 在数据库之间转换标识符。完整 UniProt API 细节见 references/services_reference.md。
- 通路发现与分析
访问基因与生物体的 KEGG 通路信息。关键方法包括:lookfor_organism()、lookfor_pathway() 按名称搜索;get_pathway_by_gene() 查找包含基因的通路;parse_kgml_pathway() 提取结构化通路数据;pathway2sif() 获取蛋白质相互作用网络。完整通路分析工作流见 references/workflow_patterns.md。
- 化合物数据库搜索
在多个数据库间搜索与交叉引用化合物。常见工作流:在 KEGG 中按名称搜索化合物,提取 KEGG 化合物 ID,使用 UniChem 进行 KEGG → ChEMBL 映射,ChEBI ID 通常包含在 KEGG 条目中。
版本注意:bioservices 1.16.0 中已移除各来源的 get_compound_id_from_* 辅助方法,应先检查 hasattr(u, "get_compound_id_from_kegg"),否则使用当前 UniChem API(u.get_compounds(compound, source_type) 并读取 res["compounds"][0]["sources"])。ChEMBL 查询遵循同样规则:使用 get_molecule,而非 1.6 之前的 get_compound_by_chemblId。完整跨数据库映射指南见 references/identifier_mapping.md。
- 序列分析
运行 BLAST 搜索与序列比对。NCBI 需要联系邮箱,建议使用 NCBI_EMAIL 环境变量(与 BioPython Entrez 及其他仓库技能相同的约定)。注意:BLAST 任务是异步的,检索结果前需检查状态。
- 标识符映射
在不同生物数据库之间转换标识符。UniProt 支持的映射包括:UniProtKB ↔ KEGG、UniProtKB ↔ Ensembl、UniProtKB ↔ PDB、UniProtKB ↔ RefSeq 等。化合物映射使用 UniChem。
- 基因本体查询
通过 QuickGO 访问 GO 术语与注释,可检索 GO 术语信息、搜索注释。
- 蛋白质-蛋白质相互作用
通过 PSICQUIC 查询相互作用数据库。注意:PSICQUIC 并非每个版本都提供,1.16.0 中缺失,因此应防御性导入,缺失时回退到 IntactComplex、OmniPath 或 STRING。可用数据库包括 MINT、IntAct、BioGRID、DIP 等 30 多个。
多服务集成工作流
BioServices 擅长组合多个服务进行综合分析。常见集成模式包括:完整蛋白质分析流水线(UniProt 搜索、FASTA 序列检索、BLAST 相似性搜索、KEGG 通路发现、PSICQUIC 相互作用映射);通路网络分析(提取生物体所有通路 ID、每条通路的蛋白质相互作用、相互作用类型分布,导出为 CSV/SIF 格式);跨数据库化合物搜索(获取 KEGG 化合物 ID、ChEBI 标识符、ChEMBL 标识符、基本化合物属性);批量标识符转换。
最佳实践
输出格式处理:不同服务返回多种格式——XML 使用 BeautifulSoup 解析(多数 SOAP 服务);制表符分隔(TSV)使用 Pandas DataFrame;字典/JSON 直接 Python 操作;FASTA 结合 BioPython 进行序列分析。
速率限制与详细程度:可控制 API 请求行为,如 KEGG(verbose=False) 抑制 HTTP 请求细节,k.TIMEOUT = 30 调整超时。
错误处理:将服务调用包裹在 try-except 块中。
生物体代码:使用标准缩写,如 hsa(人类)、mmu(小鼠)、dme(果蝇)、sce(酵母)。列出所有生物体:k.list("organism") 或 k.organismIds。
与其他工具的集成:BioServices 可与 BioPython(对检索的 FASTA 数据进行序列分析)、Pandas(表格数据操作)、PyMOL(3D 结构可视化,检索 PDB ID)、NetworkX(通路相互作用的网络分析)、Galaxy(工作流平台的自定义工具封装)良好配合。
资源
scripts/ 目录包含演示完整工作流的可执行 Python 脚本:protein_analysis_workflow.py(端到端蛋白质表征)、pathway_analysis.py(KEGG 通路发现与网络提取)、compound_cross_reference.py(多数据库化合物搜索)、batch_id_converter.py(批量标识符映射工具)。脚本可直接执行或针对特定用例调整。
references/ 目录包含按需加载的详细文档:services_reference.md(全部 40+ 服务及方法的综合列表)、workflow_patterns.md(详细多步分析工作流)、identifier_mapping.md(跨数据库 ID 转换完整指南)。
安装
uv pip install "bioservices==1.16.0"
依赖会自动安装。上游 CI 测试 Python 3.9–3.12(PyPI、docs)。
凭据
大多数服务无需 API 密钥。例外:NCBI BLAST 需要通过 NCBI_EMAIL 或 NCBIblast.run() 中的 email= 提供联系邮箱;部分 EBI 服务为可选,若被限速请查阅服务文档。每个 shell 会话设置一次:export NCBI_EMAIL=your.email@example.com。请使用真实的机构或实验室地址——NCBI 可能就大量 BLAST 使用与您联系。
更多信息
官方文档:https://bioservices.readthedocs.io/;源代码:https://github.com/cokelaer/bioservices;服务特定参考见 references/services_reference.md。
相关技能:gget(通过 gget CLI 和 Python 包查询 20+ 生物信息学数据库与分析服务,涵盖 Ensembl 基因搜索等);biopython(提供 Biopython 的 Bio.Seq、Bio.SeqIO、Bio.Align、Bio.Entrez、Bio.Blast、Bio.PDB、Bio.Phylo、Bio.motifs、Bio.SeqUtils、Bio.Restriction 等);pathway-enrichment(对基因列表或排序基因数据运行通路与基因集富集分析并解读结果)。