# BioServices: 常见工作流模式
本文档描述了使用 BioServices 进行常见生物信息学任务的详细多步工作流。
## 目录
1. [完整蛋白质分析流水线](#complete-protein-analysis-pipeline)
2. [通路发现与网络分析](#pathway-discovery-and-network-analysis)
3. [化合物多数据库搜索](#compound-multi-database-search)
4. [批量标识符转换](#batch-identifier-conversion)
5. [基因功能注释](#gene-functional-annotation)
6. [蛋白质相互作用网络构建](#protein-interaction-network-construction)
7. [多生物体比较分析](#multi-organism-comparative-analysis)
---
## 完整蛋白质分析流水线
**目标:** 给定蛋白质名称,检索序列、查找同源物、识别通路并发现相互作用。
**示例:** 分析人类 ZAP70 蛋白质
### 第 1 步:UniProt 搜索与标识符检索
python
from bioservices import UniProt
u = UniProt(verbose=False)
# 按名称搜索蛋白质
query = "ZAP70_HUMAN"
results = u.search(query, frmt="tab", columns="id,genes,organism,length")
# 解析结果
lines = results.strip().split("n")
if len(lines) > 1:
header = lines[0]
data = lines[1].split("t")
uniprot_id = data[0] # 例如 P43403
gene_names = data[1] # 例如 ZAP70
print(f"UniProt ID: {uniprot_id}")
print(f"Gene names: {gene_names}")
**输出:**
- UniProt 登录号: P43403
- 基因名称: ZAP70
### 第 2 步:序列检索
python
# 检索 FASTA 序列
sequence = u.retrieve(uniprot_id, frmt="fasta")
print(sequence)
# 仅提取序列字符串 (移除标题)
seq_lines = sequence.split("n")
sequence_only = "".join(seq_lines[1:]) # 跳过 FASTA 标题
**输出:** FASTA 格式的完整蛋白质序列
### 第 3 步:BLAST 相似性搜索
python
from bioservices import NCBIblast
import time
s = NCBIblast(verbose=False)
# 提交 BLAST 任务
jobid = s.run(
program="blastp",
sequence=sequence_only,
stype="protein",
database="uniprotkb",
email="
[email protected]"
)
print(f"BLAST 任务 ID: {jobid}")
# 等待完成
while True:
status = s.getStatus(jobid)
print(f"状态: {status}")
if status == "FINISHED":
break
elif status == "ERROR":
print("BLAST 任务失败")
break
time.sleep(5)
# 检索结果
if status == "FINISHED":
blast_results = s.getResult(jobid, "out")
print(blast_results[: