195

ESMFold:快速蛋白结构预测实战

ESMFold 免 MSA、从单序列快速预测结构,适合大规模或快速迭代场景。这篇讲清它的速度优势、精度代价与最适合的使用位置。

ESMFold 把 ESM-2 蛋白语言模型的表征直接接上结构预测头,不需要多序列比对(MSA),从单条序列一步预测三维结构。对比 AlphaFold2 动辄几十分钟的 MSA 检索,ESMFold 单个中等蛋白通常在秒级完成——这个数量级差异决定了它的使用场景。

部署

pip install fair-esm[esmfold]
# 或用 HuggingFace 实现(依赖更少)
pip install transformers accelerate
import torch
from transformers import AutoTokenizer, EsmForProteinFolding

tok = AutoTokenizer.from_pretrained("facebook/esmfold_v1")
model = EsmForProteinFolding.from_pretrained("facebook/esmfold_v1").cuda()
model.esm = model.esm.half()            # 半精度省显存

seq = "MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG"
inputs = tok([seq], return_tensors="pt", add_special_tokens=False).to("cuda")
with torch.no_grad():
    out = model(**inputs)
pdb = model.output_to_pdb(out)[0]
open("pred.pdb", "w").write(pdb)
print("mean pLDDT", out["plddt"][0, :, 1].mean().item())

约需 16 GB 以上显存(半精度可降低);也可用 ESM Metagenomic Atlas 的在线 API 免部署试用。

速度与精度的取舍

维度 AlphaFold2 ESMFold
MSA 必需,检索常需数十分钟 不需要
单蛋白耗时 数十分钟起 秒级
精度(有同源序列时) 更高 略低,差距在 TM-score 数个点量级
精度(孤儿蛋白 / 浅 MSA) 明显下降 相对更稳
复合物 需 AF-Multimer 不支持

关键判断:当目标蛋白有丰富同源序列时,AF2 更准;当 MSA 很浅或根本没有(宏基因组序列、人工设计序列、快速演化的病毒蛋白)时,ESMFold 的相对劣势小得多,甚至是更实际的选择。

最适合的三个位置

  • 大规模预测:几万到几百万条序列的结构预测,只有免 MSA 方法在成本上可行。ESM Metagenomic Atlas 用它预测了逾 6 亿个宏基因组蛋白结构,就是这个用法。
  • 快速迭代环节:蛋白设计中每轮生成大量候选序列,需要快速过一遍结构合理性,此时秒级预测的价值远大于最后几个点的精度。
  • 初筛后精化:ESMFold 粗筛 → 挑出的少数候选再用 AF2 / Boltz 精算。这是最常见的工程组合。

使用注意

  • 看 pLDDT 分区判读:>90 很可信,70~90 骨架大致正确,50~70 需谨慎,<50 常提示无序区(这本身也是有用信息)。
  • 不做复合物:只预测单链。多链体系要用 AF-Multimer、Boltz(见 192《Boltz》)或 Chai-1(见 193《Chai-1》)。
  • 长序列受限:超长蛋白显存吃紧,通常需要分域处理。
  • 不预测配体与辅因子:这是 AF3 类模型才有的能力。

上手提示

  • 核心价值是「免 MSA + 秒级」,用速度换几个点精度;
  • MSA 很浅或没有同源序列时,它与 AF2 的差距最小;
  • 只做单链,复合物需转 Boltz / Chai-1 / AF-Multimer;
  • 标准组合:ESMFold 粗筛 → 少量候选用 AF2/Boltz 精算。

延伸资源