mcpField
B
bioservices

bioservices

github.com/kalarislabs数据与数据库7344 次安装4 天前更新
代码仓库

关于 bioservices

BioServices 是用于在研究工作流中访问生物信息学数据库和网络服务的 Python 包。它统一处理 REST 与 SOAP/WSDL 访问,支持生物数据检索、分析和跨数据库查询。

主要功能

  1. 01访问生物信息学网络服务
  2. 02查询蛋白质与通路
  3. 03搜索化合物数据库
  4. 04序列相似性搜索与比对
  5. 05跨数据库标识符映射
  6. 06基因本体与相互作用查询

适用场景

  1. 01获取蛋白质序列和注释
  2. 02查找基因关联通路
  3. 03交叉映射化合物标识符
  4. 04构建多服务分析工作流

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/kalarislabs/research-agent-skills --skill bioservices

安装后在 Claude Code 中输入/bioservices确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
identifier_mapping.md
services_reference.md
workflow_patterns.md
scripts/
batch_id_converter.py
compound_cross_reference.py
pathway_analysis.py
protein_analysis_workflow.py

详细介绍

BioServices

概述

BioServices 是一个 Python 软件包,可通过编程方式访问约 40 个生物信息学 Web 服务和数据库。在 Python 工作流中检索生物数据、执行跨数据库查询、映射标识符、分析序列并整合多个生物资源。该软件包可透明处理 REST 和 SOAP/WSDL 协议。

**版本说明:**示例适用于 bioservices 1.16.0(PyPI,2026 年 3 月)。需要 Python 3.9–3.12。UniProt 在 2022 年年中进行的 REST 更改(bioservices ≥1.10)主要影响表格中的 columns 名称——如果解析失败,请参阅上游的 _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)
  • 在单个工作流中整合多个生物信息学资源的数据

核心功能

1. 蛋白质分析

检索蛋白质信息、序列和功能注释:

from bioservices import UniProt

u = UniProt(verbose=False)

# Search for protein by name
results = u.search("ZAP70_HUMAN", frmt="tab", columns="id,genes,organism")

# Retrieve FASTA sequence
sequence = u.retrieve("P43403", "fasta")

# Map identifiers between databases
kegg_ids = u.mapping(fr="UniProtKB_AC-ID", to="KEGG", query="P43403")

关键方法:

  • search():使用灵活的搜索词查询 UniProt
  • retrieve():以多种格式获取蛋白质条目(FASTA、XML、tab)
  • mapping():在数据库之间转换标识符

参考:references/services_reference.md,了解完整的 UniProt API 详情。

2. 通路发现与分析

访问基因和生物的 KEGG 通路信息:

from bioservices import KEGG

k = KEGG()
k.organism = "hsa"  # Set to human

# Search for organisms
k.lookfor_organism("droso")  # Find Drosophila species

# Find pathways by name
k.lookfor_pathway("B cell")  # Returns matching pathway IDs

# Get pathways containing specific genes
pathways = k.get_pathway_by_gene("7535", "hsa")  # ZAP70 gene

# Retrieve and parse pathway data
data = k.get("hsa04660")
parsed = k.parse(data)

# Extract pathway interactions
interactions = k.parse_kgml_pathway("hsa04660")
relations = interactions['relations']  # Protein-protein interactions

# Convert to Simple Interaction Format
sif_data = k.pathway2sif("hsa04660")

关键方法:

  • lookfor_organism()、lookfor_pathway():按名称搜索
  • get_pathway_by_gene():查找包含指定基因的通路
  • parse_kgml_pathway():提取结构化通路数据
  • pathway2sif():获取蛋白质相互作用网络

参考:references/workflow_patterns.md,了解完整的通路分析工作流。

3. 化合物数据库搜索

在多个数据库中搜索并交叉引用化合物:

from bioservices import KEGG, UniChem

k = KEGG()

# Search compounds by name
results = k.find("compound", "Geldanamycin")  # Returns cpd:C11222

# Get compound information with database links
compound_info = k.get("cpd:C11222")  # Includes ChEBI links

# Cross-reference KEGG → ChEMBL using UniChem
u = UniChem()
chembl_id = u.get_compound_id_from_kegg("C11222")  # Returns CHEMBL278315

**版本注意事项:**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。

常见工作流:

  1. 在 KEGG 中按名称搜索化合物
  2. 提取 KEGG 化合物 ID
  3. 使用 UniChem 进行 KEGG → ChEMBL 映射
  4. KEGG 条目中通常会提供 ChEBI ID

参考:references/identifier_mapping.md,查看完整的跨数据库映射指南。

4. 序列分析

执行 BLAST 搜索和序列比对。NCBI 要求提供联系邮箱——建议使用 NCBI_EMAIL 环境变量(与 BioPython Entrez 及仓库中的其他技能采用相同约定):

import os
from bioservices import NCBIblast

s = NCBIblast(verbose=False)
email = os.environ["NCBI_EMAIL"]  # set before running: export [email protected]

# Run BLASTP against UniProtKB
jobid = s.run(
    program="blastp",
    sequence=protein_sequence,
    stype="protein",
    database="uniprotkb",
    email=email,
)

# Check job status and retrieve results
s.getStatus(jobid)
results = s.getResult(jobid, "out")

**注意:**BLAST 作业以异步方式运行。获取结果前请先检查状态。

5. 标识符映射

在不同生物数据库之间转换标识符:

from bioservices import UniProt, KEGG

# UniProt mapping (many database pairs supported)
u = UniProt()
results = u.mapping(
    fr="UniProtKB_AC-ID",  # Source database
    to="KEGG",              # Target database
    query="P43403"          # Identifier(s) to convert
)

# KEGG gene ID → UniProt
kegg_to_uniprot = u.mapping(fr="KEGG", to="UniProtKB_AC-ID", query="hsa:7535")

# For compounds, use UniChem
from bioservices import UniChem
u = UniChem()
chembl_from_kegg = u.get_compound_id_from_kegg("C11222")

支持的映射(UniProt):

  • UniProtKB ↔ KEGG
  • UniProtKB ↔ Ensembl
  • UniProtKB ↔ PDB
  • UniProtKB ↔ RefSeq
  • 还有更多(参见 references/identifier_mapping.md)
6. 基因本体查询

访问 GO 术语和注释:

from bioservices import QuickGO

g = QuickGO(verbose=False)

# Retrieve GO term information
term_info = g.Term("GO:0003824", frmt="obo")

# Search annotations
annotations = g.Annotation(protein="P43403", format="tsv")
7. 蛋白质-蛋白质相互作用

通过 PSICQUIC 查询相互作用数据库。并非每个版本都会附带 PSICQUIC——1.16.0 版本中没有它,因此请以防御性方式导入;如果缺少该模块,则改用 IntactComplex、OmniPath 或 STRING:

from bioservices import PSICQUIC

s = PSICQUIC(verbose=False)

# Query specific database (e.g., MINT)
interactions = s.query("mint", "ZAP70 AND species:9606")

# List available interaction databases
databases = s.activeDBs

**可用数据库:**MINT、IntAct、BioGRID、DIP 及其他 30 多个数据库。

多服务集成工作流

BioServices 擅长组合多个服务进行全面分析。常见的集成模式:

完整的蛋白质分析流程

执行完整的蛋白质表征工作流:

export [email protected]
python scripts/protein_analysis_workflow.py ZAP70_HUMAN
# Or pass email as optional second argument if NCBI_EMAIL is unset
python scripts/protein_analysis_workflow.py ZAP70_HUMAN [email protected]

此脚本演示了:

  1. 在 UniProt 中搜索蛋白质条目
  2. 获取 FASTA 序列
  3. 进行 BLAST 相似性搜索
  4. 发现 KEGG 通路
  5. 使用 PSICQUIC 映射相互作用
通路网络分析

分析某个生物体的所有通路:

python scripts/pathway_analysis.py hsa output_directory/

提取并分析:

  • 生物体的所有通路 ID
  • 每条通路的蛋白质-蛋白质相互作用
  • 相互作用类型分布
  • 导出为 CSV/SIF 格式
跨数据库化合物搜索

跨数据库映射化合物标识符:

python scripts/compound_cross_reference.py Geldanamycin

获取:

  • KEGG 化合物 ID
  • ChEBI 标识符
  • ChEMBL 标识符
  • 基本化合物属性
批量标识符转换

一次转换多个标识符:

python scripts/batch_id_converter.py input_ids.txt --from UniProtKB_AC-ID --to KEGG

最佳实践

输出格式处理

不同服务会返回各种格式的数据:

  • XML:使用 BeautifulSoup 解析(大多数 SOAP 服务)
  • 制表符分隔(TSV):使用 Pandas DataFrame 处理表格数据
  • 字典/JSON:直接通过 Python 操作
  • FASTA:使用 BioPython 进行序列分析
速率限制和详细程度

控制 API 请求行为:

from bioservices import KEGG

k = KEGG(verbose=False)  # Suppress HTTP request details
k.TIMEOUT = 30  # Adjust timeout for slow connections
错误处理

使用 try-except 块包装服务调用:

try:
    results = u.search("ambiguous_query")
    if results:
        # Process results
        pass
except Exception as e:
    print(f"Search failed: {e}")
生物体代码

使用标准的生物体缩写:

  • hsa:Homo sapiens(人类)
  • mmu:Mus musculus(小鼠)
  • dme:Drosophila melanogaster
  • sce:Saccharomyces cerevisiae(酵母)

列出所有生物体: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,文档)。

凭据

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

服务要求
NCBI BLAST通过 NCBI_EMAIL 或在 NCBIblast.run() 中设置 email= 联系邮箱
部分 EBI 服务可选;如果受到速率限制,请查阅服务文档

在每个 Shell 会话中设置一次:

export [email protected]

请使用真实的机构或实验室邮箱地址——如果大量使用 BLAST,NCBI 可能会联系你。

其他信息

如需详细的 API 文档和高级功能,请参阅:

相关技能

  • 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:对基因列表或排序后的基因数据运行通路和基因集富集分析,然后解读结果。

评论

支持 Markdown