关于 bioservices
bioservices 是面向生物信息学研究者的 Python 包,可通过程序访问生物数据库和网络服务。它兼容 REST 与 SOAP/WSDL,并支持在 Python 工作流中整合数据检索、标识符映射和分析。
主要功能
- 01访问约 40 种生物服务
- 02查询蛋白质与通路
- 03跨库搜索化合物
- 04序列相似性搜索与比对
- 05转换数据库标识符
- 06查询基因本体与相互作用
适用场景
- 01获取蛋白质序列与注释
- 02查找 KEGG 通路中的基因
- 03映射不同数据库的化合物标识符
- 04运行 BLAST 搜索并查询相互作用
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ crazymsn/ academic-skills --skill bioservices安装后在 Claude Code 中输入/bioservices确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/identifier_mapping.mdservices_reference.mdworkflow_patterns.mdscripts/batch_id_converter.pycompound_cross_reference.pypathway_analysis.pyprotein_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():使用灵活的搜索词查询 UniProtretrieve():以多种格式(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
常见工作流:
- 在 KEGG 中按名称搜索化合物
- 提取 KEGG 化合物 ID
- 使用 UniChem 进行 KEGG → ChEMBL 映射
- 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]
此脚本演示:
- 在 UniProt 中搜索蛋白质条目
- 检索 FASTA 序列
- 进行 BLAST 相似性搜索
- 发现 KEGG 通路
- 使用 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 melanogastersce: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 文档和高级功能,请参阅:
- 官方文档:https://bioservices.readthedocs.io/
- 源代码:https://github.com/cokelaer/bioservices
references/services_reference.md中针对特定服务的参考文档