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 精算。
延伸资源
- 底层模型:194《ESM》;对照实现:191《OpenFold》、192《Boltz》、193《Chai-1》;
- 结构预测置信度解读见「结构与模拟」模块。