ProteinMPNN(Baker 实验室,Science 2022)解决蛋白设计的「逆折叠」问题:给定一个三维骨架,设计出能折叠成该形状的氨基酸序列。它最有说服力的地方不是基准分数,而是湿实验验证的成功率——相比 Rosetta 的固定骨架设计有数量级提升,且设计出的蛋白可溶性、表达量普遍更好。
部署与运行
git clone https://github.com/dauparas/ProteinMPNN.git
cd ProteinMPNN
python protein_mpnn_run.py \
--pdb_path backbone.pdb \
--pdb_path_chains "A" \
--out_folder ./designs \
--num_seq_per_target 32 \
--sampling_temp "0.1" \
--seed 37 --batch_size 8
模型很小(几 MB),CPU 也能跑,几秒钟出几十条序列。这是它易于大规模使用的重要原因。
关键参数
| 参数 | 作用 | 建议 |
|---|---|---|
--sampling_temp |
采样温度 | 0.1 保守(高置信、多样性低);0.2~0.3 兼顾多样性 |
--num_seq_per_target |
每骨架序列数 | 32~100,后续再筛 |
--fixed_positions_jsonl |
固定某些残基 | 保留催化位点、结合界面关键残基 |
--omit_AAs |
排除氨基酸 | 常排除 C(避免非预期二硫键) |
--ca_only |
仅用 Cα | 骨架质量粗糙时更鲁棒 |
--use_soluble_model |
可溶性权重 | 设计可溶蛋白时开启 |
固定关键位点几乎总是必要的:催化三联体、金属配位残基、与靶标接触的界面残基,一旦被重设计,功能就没了。
在设计流程中的位置
标准的从头设计三段式管线:
- 1. 生成骨架:RFdiffusion(见 197《RFdiffusion》)按约束生成三维骨架;
- 2. 设计序列:ProteinMPNN 为骨架填氨基酸;
- 3. 验证折叠:AlphaFold2 / ESMFold 预测设计序列的结构,看是否回到目标骨架。
第 3 步的判据通常是:预测结构与设计骨架的 Cα RMSD < 2 Å,且 pLDDT > 80。这个「设计-验证」自洽循环是筛掉大部分失败设计的关键,能把湿实验的命中率显著提高。做结合物设计时,还会加看界面的 ipTM。
# 典型串联:每个骨架出 N 条序列,逐条用 ESMFold 回测
for pdb in backbones/*.pdb; do
python protein_mpnn_run.py --pdb_path $pdb --out_folder designs/ \
--num_seq_per_target 48 --sampling_temp "0.1"
done
# 再对 designs/seqs/*.fa 批量跑 ESMFold,按 RMSD 与 pLDDT 过滤
注意事项
- 它不判断功能,只判断可折叠性:序列能折成目标形状 ≠ 有活性。功能需要靠约束设计(固定功能位点)和实验验证。
- 骨架质量决定上限:垃圾骨架进,垃圾设计出。骨架本身不合理时,再好的序列设计也救不回来。
- 温度影响明显:低温度序列更保守、更可能折叠成功但趋同;需要多样性时适当升温并加大采样量。
- 仍需实验验证:计算自洽只是过滤,表达、可溶性、活性最终要靠湿实验说话。
上手提示
- 它解决逆折叠(骨架 → 序列),是蛋白设计三段式的中间环节;
- 务必用
--fixed_positions保住催化/界面关键残基; - 必做 AF2/ESMFold 回测自洽性(RMSD < 2 Å、pLDDT > 80);
- 模型极轻量,CPU 可跑,适合大规模批量设计。
延伸资源
- 骨架生成:197《RFdiffusion》;折叠验证:195《ESMFold》、192《Boltz》;
- 经典对照:198《Rosetta》、199《PyRosetta》;
- 蛋白设计与抗体见「新药模态」模块。