mcpField
B
bioservices

bioservices

github.com/crazymsn数据与数据库2336 次安装22 周前更新
代码仓库

关于 bioservices

bioservices 是面向生物信息学研究者的 Python 包,可通过程序访问生物数据库和网络服务。它兼容 REST 与 SOAP/WSDL,并支持在 Python 工作流中整合数据检索、标识符映射和分析。

主要功能

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

适用场景

  1. 01获取蛋白质序列与注释
  2. 02查找 KEGG 通路中的基因
  3. 03映射不同数据库的化合物标识符
  4. 04运行 BLAST 搜索并查询相互作用

安装

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

$npx skills add https://github.com/crazymsn/academic-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 协议。

何时使用此技能

在以下情形中应使用此技能:

  • 从 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

常见工作流:

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

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

4. 序列分析

运行 BLAST 搜索和序列比对:

from bioservices import NCBIblast

s = NCBIblast(verbose=False)

# Run BLASTP against UniProtKB
jobid = s.run(
    program="blastp",
    sequence=protein_sequence,
    stype="protein",
    database="uniprotkb",
    email="[email protected]"  # Required by NCBI
)

# 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 查询相互作用数据库:

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 擅长组合多种服务进行全面分析。常见的整合模式:

完整的蛋白质分析流程

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

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

依赖项会自动管理。已在 Python 3.9-3.12 上测试此软件包。

附加信息

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

评论

支持 Markdown