HOOOS

无三维结构时,如何仅凭氨基酸序列用 ESM-Fold 预测抗原结合表位?

0 4 干湿结合生物医药 ESM-Fold表位预测结构生物学
Apple

在抗体药物研发或免疫学研究中,获得抗原-抗体复合物的晶体结构通常耗时且成本高昂。随着单序列蛋白质结构预测工具(如 Meta 的 ESM-Fold)的出现,仅凭一级氨基酸序列预测抗原结合表位(Epitope)和抗体靶点(Paratope)已经成为一种高效的“干实验”筛选手段。

相比于 AlphaFold2,ESM-Fold 的核心优势在于“快”且无需构建多序列比对(MSA),这使得它非常适合在大规模抗体候选序列中进行快速初筛。

以下是一个可落地的、基于 ESM-Fold 的抗原表位预测完整工作流,并附带核心脚本思路与避坑指南。


核心策略:Co-folding(共折叠)方法

在缺少结构的情况下,预测表位的本质是将抗体序列与抗原序列拼接为一条伪复合物单链,或者利用 ESM-Fold 的多链预测功能,强制其进行共折叠(Co-folding)。通过分析预测模型输出的相互作用界面、置信度(pLDDT)和预测对齐误差(PAE),来确定可能的结合位点。

第一步:准备输入序列

抗体通常由重链(VH)和轻链(VL)组成,抗原(Antigen)则是靶标蛋白(通常取其胞外域或已知作用结构域,避免整条大蛋白导致超内存)。

我们需要将它们拼接成一个输入任务。目前 ESM-Fold 接受多链输入,常见有两种拼接方式:

  1. Linker 拼接法(最常用、最稳定)
    将抗体重链、轻链、抗原用一串柔性接头(如 15-20 个 Glycine,即 GGGGGGGGGGGGGGGG)连接成一条长单链。
    • 输入格式示例
      [VH 序列] + GGGGGGGGGGGGGGGG + [VL 序列] + GGGGGGGGGGGGGGGG + [抗原序列]
  2. 多链分隔法
    在 ESM-Fold 的输入中,使用冒号 : 分隔不同的链(需确保运行环境的 ESM-Fold 版本支持多链推理)。
    • 输入格式示例
      [VH 序列]:[VL 序列]:[抗原序列]

避坑提示:抗原序列不宜过长。ESM-Fold 在序列长度超过 1000 aa 时显存消耗呈指数级增长。如果抗原是多跨膜蛋白或超大蛋白,建议仅截取其暴露在胞外且可能结合的结构域(Domain)。


第二步:运行 ESM-Fold 预测

你可以通过本地部署的 ESM-Fold 运行,也可以使用 Meta 提供的免费 API(适合少量预测)或 Colab 笔记本。

1. 使用 ESM-Fold API 快速获取 PDB 结构

如果序列较短且数量较少,可以直接通过 Python 调用 ESM 官方的 API 获取预测的 PDB 文件。

import requests
import json

def query_esm_fold(sequence, output_pdb_path):
    url = "https://api.esmatlas.com/fold/v1/pdb/"
    # 注意:API 限制序列长度一般在 400aa 内,长序列建议本地运行
    response = requests.post(url, data=sequence)
    
    if response.status_code == 200:
        with open(output_pdb_path, 'w') as f:
            f.write(response.text)
        print(f"预测成功,结构已保存至: {output_pdb_path}")
    else:
        print(f"请求失败,错误码: {response.status_code}")

# 示例:抗体单链片段与抗原片段拼接
test_seq = "QVQLVQSGAEVKKPGAS...GGGGGGGGGG...MDFGLALV..." 
query_esm_fold(test_seq, "antibody_antigen_complex.pdb")

2. 本地命令行运行(适合高通量筛选)

对于大规模抗体库,建议在 GPU 服务器上本地部署 esm 环境:

# 激活环境并运行 esm-fold
esm-fold -i input_sequences.fasta -o output_dir/ --pdb

第三步:提取与解析表位(核心步骤)

拿到预测的 PDB 结构后,我们不能仅凭肉眼在 PyMOL 中观察,必须通过量化指标来筛选真实的接触残基(Contact Residues)。

1. 基于距离矩阵(Distance Matrix)筛选接触界面

通常认为,抗原残基与抗体残基之间的重原子距离在 4.0 Å 至 5.0 Å 以内,或 $\text{C}_\alpha$ 原子距离在 $8.0\text{ \AA}$ 以内,即存在物理接触。

我们可以编写一个简单的 Python 脚本,使用 Biopython 库自动计算并提取这些残基:

from Bio.PDB import PDBParser
import numpy as np

def find_interaction_pairs(pdb_file, antibody_chains, antigen_chain, threshold=8.0):
    parser = PDBParser(QUIET=True)
    structure = parser.get_structure("complex", pdb_file)
    model = structure[0]
    
    contact_pairs = []
    
    # 获取抗体和抗原的残基对象
    ab_residues = []
    for chain_id in antibody_chains:
        ab_residues.extend(list(model[chain_id].get_residues()))
        
    ag_residues = list(model[antigen_chain].get_residues())
    
    # 计算 C-alpha 距离
    for res_ab in ab_residues:
        if 'CA' not in res_ab: continue
        for res_ag in ag_residues:
            if 'CA' not in res_ag: continue
            
            dist = res_ab['CA'] - res_ag['CA'] # 计算欧氏距离
            if dist < threshold:
                contact_pairs.append({
                    "antibody_res": f"{res_ab.get_parent().id}_{res_ab.get_resname()}_{res_ab.id[1]}",
                    "antigen_res": f"{res_ag.get_parent().id}_{res_ag.get_resname()}_{res_ag.id[1]}",
                    "distance": round(dist, 2)
                })
                
    return contact_pairs

# 假设在 PDB 中,A和B链是抗体轻重链,C链是抗原
contacts = find_interaction_pairs("antibody_antigen_complex.pdb", ['A', 'B'], 'C')
for c in contacts[:10]:
    print(f"抗体残基 {c['antibody_res']} <--> 抗原表位残基 {c['antigen_res']}: 距离 {c['distance']} Å")

2. 结合 pLDDT 与 PAE 进行可信度过滤

ESM-Fold 输出的 PDB 文件中,原本存储温度因子的 B-factor 区域被替换为了 pLDDT 置信度分数(0-100)。

  • pLDDT > 70:表示主链结构预测可信,结合界面在此区间的残基更具参考价值。
  • pLDDT < 50:通常是无序区域,如果预测的表位落在此区域,假阳性概率极高。

此外,如果本地运行输出了 PAE (Predicted Aligned Error) 矩阵,重点关注抗原残基和抗体 CDR 区残基之间的交叉 PAE 值。如果该交叉区域的 PAE 值在 $5\text{ \AA}$ 以下,说明两者的相对位置关系预测非常确定,该表位极大概率为真。


第四步:可视化与验证

  1. PyMOL 可视化
    打开 PDB 文件,输入以下 PyMOL 命令,可以直观地将预测的结合表位高亮显示:
    # 选择抗原和抗体
    select antibody, chain A + chain B
    select antigen, chain C
    
    # 找出抗原上距离抗体 5 Å 以内的残基(即预测的表位)
    select epitope, (antigen and (all within 5.0 of antibody))
    
    # 着色
    color gray90, antigen
    color marine, antibody
    color red, epitope
    show spheres, epitope
    
  2. 交叉验证(极其重要)
    由于算法对柔性 CDR-H3 环区的预测天生存在局限,建议将 ESM-Fold 预测的表位与以下无结构预测工具进行交叉比对:
    • DiscoTope 3.0:经典的基于结构/序列的表位预测工具。
    • IEDB Consensus Tool:免疫学大数据库提供的序列比对预测。
      如果 ESM-Fold 预测的空间位置与 IEDB 等基于序列规律预测的区域高度重合,其实验验证的成功率会翻倍。

避坑指南与硬伤说明

  1. CDR-H3 环区的“假阳性折叠”
    抗体的 CDR-H3 区高度多变且高度柔性。ESM-Fold 有时会为了满足能量最小化,强制让 CDR-H3 与抗原发生不合理的“盲咬”(哪怕两者现实中不结合)。因此,不要盲信任何一个得分低、且界面 PAE 高(>15)的对接模型
  2. 多聚体抗原的局限
    如果你的靶点是新冠 Spike 蛋白这样的三聚体,单链 Co-folding 无法模拟真实的组装环境。此时应优先考虑使用 AlphaFold-Multimer,因为 ESM-Fold 对多聚体复合物的天然对称性和组装体预测能力弱于 AF2。
  3. 糖基化屏蔽
    ESM-Fold 预测的是纯肽链结构。如果你的抗原表面有高密度的 $N$-糖基化修饰(如 gp120),预测出的“裸露表位”在生理条件下可能被糖冠遮挡。设计实验时需避开这些潜在的糖基化位点(如 Asn-X-Ser/Thr 基序)。

点评评价

captcha
健康