You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python调用UniProt API从氨基酸序列获取UniProt accession?

根据氨基酸序列获取UniProt Accession的Python实现方案

可行性说明

完全可行,UniProt官方REST API支持通过氨基酸序列匹配来查询对应的UniProt Accession。

具体实现步骤

1. 接口参数说明

使用UniProt的搜索接口https://rest.uniprot.org/uniprotkb/search,通过query参数指定序列匹配规则,格式为sequence:"<氨基酸序列>",同时指定format=json便于Python解析返回结果。

2. Python代码示例

import requests

def fetch_uniprot_accessions(aa_sequence):
    api_url = "https://rest.uniprot.org/uniprotkb/search"
    request_params = {
        "query": f'sequence:"{aa_sequence}"',
        "format": "json",
        "size": 10  # 控制返回结果数量,按需调整
    }
    
    response = requests.get(api_url, params=request_params)
    if response.ok:
        result_data = response.json()
        # 提取所有匹配条目的主Accession
        accessions = [entry["primaryAccession"] for entry in result_data.get("results", [])]
        return accessions
    else:
        print(f"请求失败:状态码 {response.status_code}")
        return None

# 调用示例
target_sequence = "MALWMRLLPLLALLALWGPDPAAAFVNQHLCGSHLVEALYLVCGERGFFYTPKTRREAEDLQVGQVELGGGPGAGSLQPLALEGSLQKRGIVEQCCTSICSLYQLENYCN"
matched_accessions = fetch_uniprot_accessions(target_sequence)
if matched_accessions:
    print("匹配到的UniProt Accession:", matched_accessions)
else:
    print("未找到匹配的Accession")
  • 注意事项:序列需无多余字符(空格、换行等);若需模糊匹配,可将查询规则改为sequence:~"<序列>",但UniProt要求模糊匹配的序列长度至少30个氨基酸;如果序列存在多个匹配条目,会返回所有符合条件的Accession。

替代方案

如果直接调用UniProt API无法满足需求(如序列过短、匹配精度不足),可尝试以下方案:

  • BLAST序列比对:使用Biopython库调用NCBI BLAST服务,指定比对UniProt数据库,解析比对结果提取Accession。示例代码需依赖biopython库,通过NCBIWWW.qblast方法提交序列搜索。
  • 本地数据库匹配:下载UniProtKB/Swiss-Prot数据库文件,使用本地BLAST工具(如blastp)进行序列比对,适合批量处理大量序列的场景,避免频繁API调用限制。
  • EMBL-EBI序列搜索API:调用EMBL-EBI的UniProt序列相似性搜索接口,提交序列后获取匹配的Accession,该接口支持更灵活的比对参数设置。

内容的提问来源于stack exchange,提问作者Maria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:57:16