使用Python获取给定肽序列列表对应的蛋白质名称及ID
肽序列映射到Uniprot蛋白质名称的实现方法
在线工具快速查询(适合少量序列)
- Uniprot BLAST:把肽序列粘贴到BLAST搜索框,选择Swiss-Prot数据库(已审核的高质量条目),调整参数:开启短序列比对模式,降低E值阈值(比如设为1000)。搜索结果里会列出匹配的蛋白质,包含全称、Uniprot ID等信息。
- Uniprot Peptide Search:这个工具专门针对肽序列设计,直接输入序列,可选限定物种(如果知道样本来源),提交后会返回对应的蛋白质条目,还能显示肽在蛋白质中的具体位置。
批量处理的编程方法
如果有大量肽序列,用API或脚本效率更高:
Python + Uniprot REST API
直接调用Uniprot的API构造查询,解析返回的JSON数据提取蛋白质信息,示例代码:
import requests def get_proteins_from_peptide(peptide): api_url = "https://rest.uniprot.org/uniprotkb/search" query_params = { "query": f"{peptide} AND reviewed:yes", # 只查已审核条目 "format": "json", "fields": "protein_name,accession,organism_name" # 指定返回字段 } resp = requests.get(api_url, params=query_params) if resp.status_code == 200: results = resp.json()["results"] return [(res["proteinName"]["fullName"]["value"], res["primaryAccession"], res["organism"]["scientificName"]) for res in results] return [] # 批量处理示例 peptides = ["VHLTPEEK", "LVVYPWTQR"] for pep in peptides: matches = get_proteins_from_peptide(pep) if matches: print(f"肽 {pep} 匹配结果:") for name, acc, species in matches: print(f"- {name} (ID: {acc}, 物种: {species})") else: print(f"肽 {pep} 未找到匹配蛋白质")
Biopython 辅助处理
用Biopython的Bio.SwissProt模块可以更便捷地处理批量请求,它会自动处理API请求频率限制,避免被封禁,适合大规模序列查询。
关键注意事项
- 短肽多匹配问题:短肽可能在多个蛋白质中存在,一定要结合样本的物种信息、实验背景过滤结果,减少冗余。
- 翻译后修饰:如果肽有磷酸化、甲基化等修饰,搜索时要明确标注修饰位点(比如
Y(phos)),否则可能匹配不到正确的蛋白质。 - 数据库选择:优先用Swiss-Prot(已审核),避免TrEMBL的未审核条目带来的错误匹配。
内容的提问来源于stack exchange,提问作者Mathew
相关产品推荐
相关产品推荐

