bioservices

用于 40+ 个生物信息学服务的统一 Python 接口。在单个工作流程中查询多个数据库(UniProt、KEGG、ChEMBL、Reactome)时使用,并提供一致的 API。最适合跨数据库分析、以及在各服务之间进行 ID 映射。若要进行快速的单数据库查询,请使用 gget;若要进行序列/文件处理,请使用 biopython。

安装

热度:34

下载并解压到你的 skills 目录

复制命令,发送给智能体自动安装:

下载并安装这个技能 https://openskills.cc/api/download?slug=k-dense-ai-skills-bioservices&locale=zh&source=copy

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. 蛋白质与通路分析

  • 蛋白质信息检索:从 UniProt 获取序列、注释、结构

  • 代谢通路分析:通过 KEGG pathway 发现基因参与的通路

  • 序列相似性搜索:运行 BLAST、MUSCLE 等序列比对工具

  • 蛋白质相互作用:通过 PSICQUIC 查询蛋白质互作网络
  • 核心功能

    1. 统一的数据库访问接口

    支持 40+ 生物信息学数据库,包括:

  • 蛋白质数据库:UniProt、PDB、Pfam

  • 通路数据库:KEGG、Reactome

  • 化合物数据库:ChEBI、ChEMBL、PubChem

  • 基因组数据库:BioMart、ArrayExpress、ENA

  • 其他资源:QuickGO、PSICQUIC、NCBI BLAST
  • 所有服务使用一致的调用模式,支持 REST 和 SOAP/WSDL 协议。

    2. 跨数据库标识符转换

    提供便捷的标识符映射功能:

    from bioservices import UniProt
    u = UniProt()
    # UniProt → KEGG
    results = u.mapping(fr="UniProtKB_AC-ID", to="KEGG", query="P43403")

    支持多种数据库对之间的转换,无需手动查找映射关系。

    3. 完整的分析工作流支持

  • 序列分析:FASTA 序列获取、BLAST 相似性搜索

  • 通路解析:KGML pathway 解析、蛋白质互作网络提取

  • 化合物检索:跨数据库化合物信息查询

  • 批量处理:支持批量 ID 转换和查询
  • 提供完整的工作流脚本示例,涵盖蛋白质分析、通路分析、化合物检索等常见场景。

    常见问题

    BioServices 支持哪些生物数据库?

    BioServices 支持约 40 个生物信息学数据库,包括:

  • 蛋白质相关:UniProt、PDB、Pfam、QuickGO

  • 代谢通路:KEGG、Reactome

  • 化合物:ChEBI、ChEMBL、PubChem、UniChem

  • 基因组:BioMart、ArrayExpress、ENA

  • 相互作用:PSICQUIC(支持 MINT、IntAct、BioGRID 等 30+ 数据库)

  • 序列分析:NCBI BLAST
  • 完整列表可查看 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:适合本地序列分析、文件格式解析(FASTA、GenBank 等)
  • 推荐组合使用:用 BioServices 从数据库获取数据,用 Biopython 进行本地序列处理和分析。

    其他对比

  • 单个数据库快速查询:考虑 gget(更轻量)

  • 序列/文件操作:使用 Biopython

  • 跨数据库工作流:使用 BioServices
  • BioServices 需要 API 密钥吗?

    大多数服务不需要 API 密钥。例外情况:

  • NCBI BLAST:需要提供联系邮箱,可通过环境变量 NCBI_EMAIL 设置

  • 部分 EBI 服务:如遇频率限制可能需要注册(具体查看各服务文档)
  • 设置邮箱:

    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 KEGG

    BioServices 支持哪些 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 环境变量。