151

RFdiffusion 论文精读:扩散模型怎样生成可设计蛋白骨架

RFdiffusion 用扩散模型生成可设计的蛋白骨架。这篇讲清它的条件生成能力、设计流程与实验成功率的现实。

RFdiffusion(Watson 等,Nature 2023)把扩散模型用于蛋白骨架的从头生成。它与 ProteinMPNN 的组合,让「设计一个自然界不存在的蛋白来完成指定功能」从研究愿景变成了可操作的流程。

核心方法

# 基本思路:
#   在蛋白【主链坐标】上做去噪扩散
#
#   前向过程:给真实结构逐步加噪,直到变成随机噪声
#   反向过程:从噪声出发,逐步去噪成合理的蛋白骨架
#
# 关键设计:
#
# 1) 【用 RoseTTAFold 的权重初始化】
#    这是方法成功的关键之一
#    → RF 已经学会了「什么样的三维结构是合理的蛋白」
#    → 从这个先验出发做扩散,比从零训练好得多
#
# 2) 【在 SE(3) 上扩散】
#    每个残基用一个「刚体框架」表示
#    (位置 + 取向)
#    → 在平移与旋转的乘积空间上做扩散
#    → 与 DiffDock 的思路相通(见 101)
#
# 3) 【自条件化(self-conditioning)】
#    每步去噪时,把上一步的预测也作为输入
#    → 显著提高生成质量
#
# 输出:
#   只有主链坐标,【没有序列】
#   → 序列由 ProteinMPNN 设计(见 150)

条件生成:真正的实用能力

任务 条件 应用
无条件生成 探索蛋白结构空间
基序支架化 固定一段功能基序 疫苗抗原设计、酶活性位点移植
结合物设计 给定靶蛋白与结合位点 替代抗体的结合蛋白
对称寡聚体 指定对称性 纳米颗粒、疫苗载体
部分扩散 固定部分结构,重设计其余 蛋白改造
拓扑约束 指定二级结构组成 特定折叠的设计

「基序支架化」是最有实际价值的能力之一:你知道某个功能基序(如中和抗体的表位、酶的催化三联体)的三维构象,但它在天然蛋白中不稳定或难以表达——RFdiffusion 可以为它设计一个稳定的支架,把基序固定在正确的构象上

使用

git clone https://github.com/RosettaCommons/RFdiffusion.git
cd RFdiffusion
# 按 README 配置环境并下载模型权重

# ---- 无条件生成 ----
./scripts/run_inference.py \
  "contigmap.contigs=[100-100]" \
  inference.output_prefix=output/uncond \
  inference.num_designs=10
#   生成 10 个长度 100 的蛋白骨架

# ---- 基序支架化 ----
./scripts/run_inference.py \
  inference.input_pdb=motif.pdb \
  "contigmap.contigs=[10-40/A163-181/10-40]" \
  inference.output_prefix=output/scaffold \
  inference.num_designs=20
#   contigs 语法:
#     10-40      生成 10~40 个新残基
#     A163-181   保留输入 PDB 中 A 链的 163~181 残基
#     10-40      再生成 10~40 个新残基

# ---- 结合物设计(最常用的应用)----
./scripts/run_inference.py \
  inference.input_pdb=target.pdb \
  "contigmap.contigs=[B1-100/0 70-100]" \
  "ppi.hotspot_res=[B45,B48,B52,B56]" \
  inference.output_prefix=output/binder \
  inference.num_designs=100 \
  denoiser.noise_scale_ca=0 \
  denoiser.noise_scale_frame=0
#   B1-100      保留靶蛋白 B 链
#   0           链断开
#   70-100      生成 70~100 残基的结合物
#   hotspot_res 【指定结合物应该接触的靶点残基】
#               —— 这个参数对成功率影响很大
#   noise_scale=0  降低噪声,生成更「保守」的设计
#                  (对结合物设计通常更好)

# ---- 对称寡聚体 ----
./scripts/run_inference.py \
  --config-name symmetry \
  inference.symmetry="C3" \
  "contigmap.contigs=[100-100]" \
  inference.output_prefix=output/c3

完整设计流程

# RFdiffusion 只是第一步
#
# 步骤 1:RFdiffusion 生成骨架
#   典型:生成 1000 个候选骨架
#
# 步骤 2:ProteinMPNN 设计序列(见 150)
#   每个骨架生成 8 条序列 → 8000 条候选
#
# 步骤 3:AlphaFold2 验证(见 112)
#   预测每条序列的结构,与设计骨架比较
#   【筛选判据】:
#     单体设计:RMSD < 2 Å,pLDDT > 80
#     结合物:  + ipTM > 0.8,界面 PAE 低
#   → 通过的可能只有几十到几百条
#
# 步骤 4:进一步计算筛选
#   - Rosetta 能量评分
#   - 界面互补性(结合物设计)
#   - 溶解度、聚集倾向预测
#   - 表达可行性(密码子、疏水性)
#
# 步骤 5:实验验证
#   基因合成 → 表达 → 纯化 → 结合测定 → 结构表征
#   典型:测试 20~100 个设计
#
# 【成功率的现实】:
#   论文报告的结合物设计成功率
#   (能测到结合的比例)通常在个位数到十几个百分点
#   → 这已经是相对之前方法的巨大进步
#   → 但意味着【必须测试大量设计】
#
#   计算筛选越严格,实验成功率越高,
#   但候选数量也越少 —— 需要平衡
#
# 【成本考量】:
#   计算部分:数百到数千 GPU 小时
#   实验部分:基因合成 + 表达纯化 + 测定
#   → 实验成本通常远高于计算成本
#   → 因此计算筛选的严格程度值得投入

结合物设计的实践要点

  • 热点残基的选择至关重要指定错误的位点,后面全白做。应基于已知的功能位点、突变数据或已有抗体的表位来选;
  • 靶点表面的性质影响成功率平坦、亲水、缺乏凹陷的表面很难设计结合物——与小分子的可成药性判断类似(见 091《蛋白口袋 Protein Pocket》);
  • 降低噪声通常更好noise_scale=0 生成更保守的设计,实验成功率更高;
  • 生成足够多:数百到上千个骨架是常规做法;
  • AF2 验证要用单序列模式或不给 MSA:设计的序列没有天然同源物,用 MSA 反而可能引入偏差;
  • ipTM 是结合物设计的核心筛选指标

对药物发现的意义

应用方向 状态
PPI 抑制剂(蛋白形式) 可行,是活跃方向(见 382《PPI 抑制剂》
抗体替代的结合蛋白 可行,分子更小、更易生产
疫苗抗原设计 已有成功案例(表位支架化)
人工酶 进展中,成功率仍低
小分子结合口袋 需要 RFdiffusion All-Atom(见 115《RoseTTAFold All-Atom》
递送载体 探索中

局限

  • 只生成主链:序列设计与验证是独立的环节,误差会累积;
  • 不直接处理小分子/核酸:需要 RFdiffusion All-Atom;
  • 成功率仍是主要瓶颈:实验验证的通过率有限,需要大量测试;
  • 难以设计柔性或无序区域:模型偏好生成规整的二级结构;
  • 难以控制精细的功能性质:如特定的动力学、变构行为、pH 响应性;
  • 计算成本不低:完整流程需要可观的 GPU 资源。

关键要点

  • 用 RoseTTAFold 权重初始化是方法成功的关键——它已经学会了什么是合理的蛋白结构;
  • 基序支架化与结合物设计是最有实际价值的条件生成能力;
  • 结合物设计中热点残基的选择至关重要,选错则后续全部白做;
  • 实验成功率通常在个位数到十几个百分点——必须测试大量设计

延伸资源