从 RFdiffusion 到 RFdiffusion3:从模型演进到算法实现的技术报告
一、为什么只看模型介绍还不够
RFdiffusion 系列论文通常会从任务、结果和实验验证角度介绍模型,例如能不能生成 binder、能不能 scaffold motif、能不能设计酶活性位点、能不能扩展到全原子相互作用。这些内容很重要,但如果只停留在模型介绍层面,会有一个问题:我们知道它“能做什么”,但不清楚它“为什么能做”和“具体怎么做”。
对于真正想使用 RFdiffusion 系列模型的人来说,更关键的问题其实是:
模型输入是什么?
扩散过程扩散的到底是什么?
contig 字符串如何控制生成结构?
motif、hotspot、ligand、active site 是如何作为条件进入模型的?
模型输出的 PDB 为什么通常只有骨架?
为什么还需要 ProteinMPNN、LigandMPNN、Chai-1、AlphaFold 或 RF3 做后续筛选?
RFdiffusion2 和 RFdiffusion3 在代码层面与 RFdiffusion1 的差异是什么?
因此,这版报告将 RFdiffusion 系列拆成两条线来讲:
第一条线是模型演进线:从蛋白骨架生成,到全原子建模,再到酶活性位点和统一相互作用设计。
第二条线是算法实现线:从坐标加噪、去噪生成、条件控制、序列设计,到结构预测和筛选。
二、RFdiffusion1 的核心算法原理
1. 它不是直接生成序列,而是先生成蛋白骨架
RFdiffusion1 的核心思想不是“给定目标,直接生成氨基酸序列”,而是先生成一个三维蛋白骨架。这个骨架主要由每个残基的主链坐标和局部刚体框架表示。
可以简单理解为,每个氨基酸残基不是一个孤立点,而是一个带方向的局部坐标系。模型需要生成的不只是 Cα 在哪里,还要知道这个残基的朝向是什么。这样才能描述蛋白主链的空间走向。
RFdiffusion1 的基本流程是:
-
从真实蛋白结构中取出残基框架;
-
对坐标和方向逐步加噪;
-
训练模型学习如何从带噪结构恢复干净结构;
-
生成时从随机噪声开始,逐步去噪得到蛋白骨架;
-
再用 ProteinMPNN 根据骨架设计序列;
-
最后用 AlphaFold2、ESMFold 或其他结构预测工具验证序列是否能折叠回设计骨架。
所以 RFdiffusion1 不是一个完整的“序列到功能”闭环模型,而是一个“结构生成器”。它负责提出骨架假设,ProteinMPNN 负责补序列,结构预测模型负责验证这个假设是否可信。
2. 扩散过程扩散的是什么
在图像扩散模型中,模型对像素加噪,然后学习去噪。在 RFdiffusion 中,模型对蛋白结构加噪。这里的结构包括两类信息:
一类是每个残基的位置,也就是平移信息。
另一类是每个残基的朝向,也就是旋转信息。
因此,RFdiffusion 的扩散空间不是普通二维图像,而是三维几何空间。它需要同时处理平移和旋转。平移可以理解为对 Cα 坐标加高斯噪声;旋转则需要在 SO(3) 空间中进行处理。
简化后可以表示为:
真实结构 X0
↓ 加噪
Xt = noising(X0, t)
↓ 模型预测
X0_hat = RFdiffusion(Xt, 条件信息, t)
↓ 根据 X0_hat 更新
Xt-1 = denoise(Xt, X0_hat)
↓ 重复多步
最终得到设计骨架
在每一步中,模型并不是直接预测下一步结构,而是预测最终干净结构 X0 的估计值。然后采样器根据当前带噪结构 Xt 和模型预测的 X0_hat,计算下一步 Xt-1。
这个思想非常重要。它意味着模型每一步都在问:“如果当前这个模糊结构最终要变成一个真实蛋白,那么它应该长成什么样?”
3. self-conditioning 的作用
RFdiffusion1 中一个重要技巧是 self-conditioning。它的意思是:模型在当前去噪步骤中,不只看当前的带噪结构 Xt,还会参考上一步预测出来的 X0_hat。
简化理解为:
第 t 步输入 = 当前带噪结构 Xt + 上一步预测的干净结构 X0_hat(t+1)
第 t 步输出 = 新的干净结构预测 X0_hat(t)
这和 AlphaFold/RoseTTAFold 中的 recycling 思想很像。模型不是每一步都从零开始判断,而是不断根据前一步的判断进行修正。
self-conditioning 的价值在于提高轨迹连续性。没有 self-conditioning 时,模型每一步可能都在独立猜测最终结构,轨迹容易不稳定;加入 self-conditioning 后,模型更像是在不断细化同一个结构假设。
4. 条件生成是如何实现的
RFdiffusion1 的强大之处不只是无条件生成,而是可以在不同约束下生成结构。常见约束包括:
无条件生成:只给定长度,让模型生成一个新蛋白。
motif scaffolding:固定一个功能片段,让模型围绕它补全 scaffold。
binder design:固定目标蛋白,让模型生成结合蛋白。
hotspot conditioning:指定目标蛋白上的关键接触残基。
symmetry conditioning:指定对称性,生成 Cn、Dn 或其他对称结构。
partial diffusion:从已有结构出发,只做局部扰动和改造。
这些条件在代码中通常通过 contigmap.contigs、inference.input_pdb、ppi.hotspot_res、inference.symmetry、diffuser.partial_T 等参数体现。
其中最重要的是 contig 字符串。它是 RFdiffusion 的“设计语言”。
例如:
'contigmap.contigs=[150-150]'
表示生成一个长度固定为 150 aa 的蛋白。
'contigmap.contigs=[5-15/A10-25/30-40]'
表示保留输入 PDB 中 A 链 10–25 位作为 motif,在 motif 前面生成 5–15 个残基,在后面生成 30–40 个残基。
'contigmap.contigs=[B1-100/0 100-100]'
表示保留 B 链 1–100 位作为目标链,同时生成一个 100 aa 的 binder。/0 表示链断开。
5. RFdiffusion1 的运行流程
一个标准 RFdiffusion1 设计流程可以拆成四步:
步骤 1:准备输入结构
目标蛋白 PDB / motif PDB / 空输入
步骤 2:运行 RFdiffusion
生成 backbone-only PDB 和 trb 元数据文件
步骤 3:运行 ProteinMPNN
根据骨架设计多个候选序列
步骤 4:结构预测与筛选
AlphaFold2 / ESMFold / AF3 / Chai-1
评估 pLDDT、pAE、RMSD、interface score、motif RMSD 等指标
RFdiffusion1 输出的 PDB 文件通常不应该被理解为最终蛋白结构。因为它主要输出骨架,设计区域经常以 glycine 表示,没有可信侧链。因此,必须接 ProteinMPNN 或类似 inverse folding 模型来补序列。
三、RFdiffusion1 的代码操作示例
1. 环境准备
典型安装流程如下:
git clone https://github.com/RosettaCommons/RFdiffusion.git
cd RFdiffusion
mkdir models
cd models
# 下载模型权重
wget <Base_ckpt.pt>
wget <Complex_base_ckpt.pt>
wget <ActiveSite_ckpt.pt>
cd ..
# 创建环境
conda env create -f env/SE3nv.yml
conda activate SE3nv
cd env/SE3Transformer
pip install --no-cache-dir -r requirements.txt
python setup.py install
cd ../..
pip install -e .
实际部署时,最容易出问题的是 CUDA、PyTorch 和 SE(3)-Transformer 的版本。建议优先使用官方 Docker 或 Colab 版本验证流程,再迁移到服务器。
2. 无条件生成蛋白骨架
./scripts/run_inference.py \
'contigmap.contigs=[150-150]' \
inference.output_prefix=outputs/uncond/test \
inference.num_designs=10
这会生成 10 个长度为 150 aa 的蛋白骨架。
输出通常包括:
outputs/uncond/test_0.pdb
outputs/uncond/test_0.trb
outputs/uncond/traj/
其中:
.pdb 是最终生成骨架;.trb 保存 contig 映射、输入输出残基编号、配置参数等元信息;traj/ 保存去噪轨迹,可以用于观察结构如何从噪声逐步形成。
3. motif scaffolding
假设输入 PDB 为 motif.pdb,需要固定 A 链 10–25 位:
./scripts/run_inference.py \
inference.input_pdb=inputs/motif.pdb \
'contigmap.contigs=[5-15/A10-25/30-40]' \
inference.output_prefix=outputs/motif/design \
inference.num_designs=50
这类任务的筛选重点不是只看整体 RMSD,而是要重点看 motif 是否被准确保持:
motif RMSD < 1 Å
overall backbone RMSD < 2 Å
pAE < 5
pLDDT 较高
4. protein binder design
假设目标蛋白是 B 链 1–100 位:
./scripts/run_inference.py \
inference.input_pdb=inputs/target.pdb \
'contigmap.contigs=[B1-100/0 80-120]' \
'ppi.hotspot_res=[B35,B38,B42]' \
inference.output_prefix=outputs/binder/design \
inference.num_designs=100
这里的 ppi.hotspot_res 是设计成败的关键。它告诉模型 binder 应该接触目标蛋白上的哪些位置。如果 hotspot 选得太散,模型可能难以形成稳定界面;如果选得太少,模型可能结合到不理想区域。
5. partial diffusion
如果你已经有一个初始 binder-target 复合物,只想对 binder 做多样化,可以使用 partial diffusion:
./scripts/run_inference.py \
inference.input_pdb=inputs/complex.pdb \
'contigmap.contigs=[100-100/0 B1-150]' \
diffuser.partial_T=20 \
inference.output_prefix=outputs/partial/design \
inference.num_designs=50
partial_T 越大,扰动越强,多样性越高,但越可能偏离原始结构。partial_T 越小,结构保守性越强,但探索空间更窄。
6. 环肽或 macrocycle 设计
RFdiffusion 的 RFpeptides 模式可以生成环肽。典型参数是:
./scripts/run_inference.py --config-name base \
inference.input_pdb=inputs/target.pdb \
'contigmap.contigs=[12-18 A3-117/0]' \
inference.cyclic=True \
inference.cyc_chains='a' \
ppi.hotspot_res=['A51','A52','A50'] \
diffuser.T=50 \
inference.output_prefix=outputs/cyclic/design \
inference.num_designs=20
这里需要注意,RFdiffusion 生成的是骨架约束意义上的 macrocycle。对于真实化学成环,比如首尾酰胺键、二硫键、非天然连接子,后续仍然需要用 Rosetta、PyRosetta、AF3 或专门的几何筛选脚本进一步验证。
四、RFdiffusion1 后处理代码逻辑
1. 为什么要接 ProteinMPNN
RFdiffusion 输出的是骨架,ProteinMPNN 根据骨架设计序列。一个简单流程是:
python ProteinMPNN/run.py \
--pdb_path outputs/binder/design_0.pdb \
--out_folder mpnn_outputs/design_0 \
--num_seq_per_target 8 \
--sampling_temp "0.1"
一般建议每个骨架生成多个序列。因为同一个骨架可能有多种可行序列,其中一部分能折叠回设计结构,另一部分不能。
2. 为什么要接 AlphaFold / Chai / RF3
ProteinMPNN 设计出的序列只是“符合骨架几何的序列”,不代表它真实会折叠成该骨架。因此需要结构预测模型做回折验证。
筛选逻辑可以写成:
RFdiffusion backbone
↓
ProteinMPNN sequences
↓
AlphaFold / Chai / RF3 prediction
↓
比较 predicted structure 与 designed backbone
↓
保留高可信候选
常见筛选指标包括:
单体设计:
- pLDDT
- pAE
- predicted RMSD to designed backbone
- radius of gyration
- secondary structure 是否合理
binder 设计:
- binder 自身 pLDDT
- interface pAE / iPAE
- target-binder 接触面积
- hotspot 是否被接触
- interface RMSD
- 是否存在 clash
- 是否形成过深或过浅界面
motif scaffolding:
- motif RMSD
- motif 原子几何是否保持
- scaffold 是否遮挡活性位点
- 是否形成合理口袋
一个简单的筛选脚本伪代码如下:
import pandas as pd
df = pd.read_csv("all_design_metrics.csv")
filtered = df[
(df["plddt"] > 80) &
(df["pae"] < 5) &
(df["backbone_rmsd"] < 2.0) &
(df["motif_rmsd"] < 1.0)
]
filtered = filtered.sort_values(
by=["motif_rmsd", "backbone_rmsd", "plddt"],
ascending=[True, True, False]
)
filtered.to_csv("filtered_designs.csv", index=False)
对于 binder,还应该增加界面指标:
filtered = df[
(df["binder_plddt"] > 80) &
(df["interface_pae"] < 10) &
(df["interface_contacts"] > 20) &
(df["clash_count"] == 0)
]
五、RFdiffusionAA:从骨架生成走向全原子建模
RFdiffusion1 的主要问题在于,它对功能化学的描述不够直接。它能很好地生成骨架,但很多生物功能并不只由骨架决定,而是由侧链原子、小分子、金属离子、核酸和共价修饰共同决定。
RFdiffusionAA 的出现,就是为了让模型能够处理更复杂的全原子生物分子系统。
它的核心变化是表示方式改变了。
RFdiffusion1 主要看 residue frame,也就是残基级别的骨架框架。
RFdiffusionAA 则允许一部分对象被 atomized,也就是以原子级方式表示。
这使得模型可以看到小分子、金属、核酸和非标准残基。
从算法角度看,RFdiffusionAA 的关键不是简单“加了配体”,而是让模型在同一个结构图中同时处理 residue-level token 和 atom-level token。
可以简单理解为:
普通蛋白残基:作为 residue token 处理
小分子原子:作为 atom token 处理
金属离子:作为 atom token 处理
活性位点关键侧链:可以 atomized
核酸或修饰基团:可进入全原子上下文
这为 RFdiffusion2 的酶活性位点设计打下了基础。因为酶设计真正关心的是某些功能原子的位置和方向,而不是只关心残基编号。
六、RFdiffusion2 的算法原理
1. RFdiffusion2 解决的问题
RFdiffusion2 主要针对 enzyme active site scaffolding。它解决的是这样一个问题:
给定一组反应相关的功能原子,例如催化残基的末端原子、底物原子、金属配位原子,能不能让模型自动生成一个蛋白 scaffold,把这些原子放在正确的三维几何关系中?
传统方法通常需要先指定:
第几个残基是 His
第几个残基是 Asp
第几个残基是 Lys
这些残基采用什么 rotamer
它们分别在序列中什么位置
RFdiffusion2 尝试去掉这些人工步骤。它允许输入 unindexed atomic motif,也就是只给定功能原子的空间几何,而不提前指定它们属于最终序列的哪个位置。
这对酶设计非常重要。因为活性位点的关键不是“第 50 位一定是 His”,而是“某个 His 的 N 原子必须在这里,能够与底物形成正确作用”。
2. unindexed motif 是什么
在 RFdiffusion1 中,motif 通常是 indexed 的。也就是说,输入 PDB 中的 A10-25 被固定,输出中也有明确映射。
而在 RFdiffusion2 中,motif 可以是 unindexed 的。模型知道这些功能原子的空间关系,但不知道它们最终应该落在哪些序列位置上。
简化理解:
RFdiffusion1:
固定 A10、A20、A35 这些残基 → 生成 scaffold
RFdiffusion2:
固定某些功能原子的空间位置 → 模型自己决定它们对应哪些残基和序列位置
这使模型可以同时采样三个变量:
scaffold backbone
+ catalytic residue sequence index
+ catalytic side-chain rotamer
这就是 RFdiffusion2 相比 RFdiffusion1 的核心算法提升。
3. flow matching 的意义
RFdiffusion2 不再只是沿用 RFdiffusion1 的经典 DDPM 采样思想,而是引入 flow matching。可以把它理解为:模型学习一条从噪声分布流向真实结构分布的连续向量场。
DDPM 更像是学习一步步去噪;flow matching 更像是学习从噪声到数据的运动方向。对于复杂全原子约束任务,flow matching 可以使训练和采样更稳定。
简化伪代码如下:
# x0: 真实结构
# x1: 噪声结构
# t: 0 到 1 之间的时间
# xt: x0 与 x1 之间插值得到的中间状态
xt = interpolate(x0, x1, t)
# 模型学习在 xt 处应该朝哪个方向移动
v_pred = model(xt, t, condition)
# 目标向量场
v_target = x0 - x1
loss = mse(v_pred, v_target)
在真实模型中,这个过程要处理 SE(3) 几何、原子类型、残基框架、配体、小分子和 motif 约束,不会像上面这么简单。但这个伪代码可以帮助理解 flow matching 的核心思想:模型不是只预测干净结构,而是学习从噪声走向真实结构的流动方向。
4. RFdiffusion2 的 pipeline
RFdiffusion2 的完整流程通常是:
输入:
ligand / theozyme / active-site motif / unindexed atoms
步骤 1:RFdiffusion2 生成 backbone + atomized motif region
步骤 2:理想化处理
backbone idealization
deatomization
unindexed residues assignment
步骤 3:LigandMPNN 进行序列设计和侧链 packing
步骤 4:Chai-1 或其他结构预测模型 refolding
步骤 5:计算 motif recapitulation metrics
backbone RMSD
Cα RMSD
full-atom RMSD
motif-atom RMSD
这里最重要的是:RFdiffusion2 的输出不是直接进入实验的最终酶,而是进入一个多步筛选流程。生成结构只是第一层,序列拟合和 refolding 验证同样关键。
七、RFdiffusion2 的代码操作示例
1. 环境和容器
RFdiffusion2 官方代码目前更推荐使用 Apptainer / Singularity 容器运行:
git clone https://github.com/RosettaCommons/RFdiffusion2.git
cd RFdiffusion2
export PYTHONPATH="/path/to/RFdiffusion2"
# 下载模型权重和容器
python setup.py
运行命令通常写成:
apptainer exec --nv \
rf_diffusion/exec/bakerlab_rf_diffusion_aa.sif \
<python_script> <args>
2. 运行官方 demo
单个 demo 示例:
apptainer exec --nv \
rf_diffusion/exec/bakerlab_rf_diffusion_aa.sif \
rf_diffusion/benchmark/pipeline.py \
--config-name=open_source_demo \
sweep.benchmarks=active_site_unindexed_atomic_partial_ligand
运行全部 demo:
apptainer exec --nv \
rf_diffusion/exec/bakerlab_rf_diffusion_aa.sif \
rf_diffusion/benchmark/pipeline.py \
--config-name=open_source_demo
这些 demo 能展示三类能力:
1. 从 atomic motif + small molecule 设计酶
2. 从 unknown sequence positions 的 atomic motif 设计酶
3. 使用 RASA conditioning 设计 small-molecule binder
3. 运行 AME benchmark
RFdiffusion2 论文中的 AME benchmark 可以通过如下命令复现:
apptainer exec --nv \
rf_diffusion/exec/bakerlab_rf_diffusion_aa.sif \
rf_diffusion/benchmark/pipeline.py \
--config-name=enzyme_bench_n41_fixedligand \
in_proc=True
但是这个流程计算量非常大,因为它涉及:
41 个 active sites
每个 active site 生成 100 个 design
每个 design 生成 8 条序列
再进行 Chai folding
因此,在个人服务器或普通工作站上,不建议一上来直接跑完整 benchmark。更合理的方式是先跑单个 demo,确认输入、输出和评估脚本都能正常运行。
4. RFdiffusion2 输出如何理解
RFdiffusion2 的输出比 RFdiffusion1 更复杂,因为它同时包含 indexed backbone region 和 unindexed atomized region。
后处理大致包括:
1. backbone idealization
2. protein deatomization
3. 将 unindexed residues 分配回 indexed backbone
4. LigandMPNN 设计序列并 packing
5. Chai-1 refolding
6. 计算 motif recapitulation metrics
尤其要关注两个问题:
第一,unindexed motif 是否真的被合理放进了 scaffold 中;
第二,LigandMPNN 重新打包后,关键 rotamer 有没有偏离原来的 theozyme 几何。
这也是为什么 RFdiffusion2 的指标中会出现 motif atom RMSD、full atom RMSD、motif ideality difference 等内容。
八、RFdiffusion3 的算法与代码变化
RFdiffusion3 进一步走向统一全原子生物分子相互作用设计。相比 RFdiffusion1 和 RFdiffusion2,它在使用方式上也发生了变化。
RFdiffusion1 主要通过命令行 Hydra 参数控制,例如:
./scripts/run_inference.py 'contigmap.contigs=[150-150]' ...
RFdiffusion3 则更倾向于用 YAML 或 JSON 文件描述任务,然后用 rfd3 design 运行。
1. RFdiffusion3 的输入组织方式
一个最简单的 RFD3 JSON 输入可以写成:
{
"example_1": {
"input": "inputs/target.pdb",
"contig": "50-80,/0,A1-100",
"length": "150-180"
}
}
其中:
input:输入 PDB 或 CIF
contig:定义哪些部分生成,哪些部分保留
length:控制最终结构总长度
运行命令是:
rfd3 design \
inputs=inputs/rfd3_example.json \
out_dir=outputs/rfd3_example \
ckpt_path=/path/to/rfd3_checkpoint.pt
输出通常是:
*.cif.gz
*.json
CIF 文件保存结构,JSON 文件保存对应设计配置和元数据。
2. RFD3 的蛋白 binder 设计示例
YAML 文件可以这样写:
insulinr:
input: inputs/4zxb_cropped.pdb
contig: 40-120,/0,E6-155
length: 190-270
select_hotspots:
E64: CD2,CZ
E88: CG,CZ
E96: CD1,CZ
infer_ori_strategy: hotspots
is_non_loopy: true
这里与 RFdiffusion1 的区别很明显:
RFdiffusion1 的 hotspot 通常是 residue-level。
RFdiffusion3 可以指定 residue + atom-level hotspot。
例如 E64: CD2,CZ 表示希望设计结构靠近 E64 残基的 CD2 和 CZ 原子。这种约束比单纯指定 E64 更精细。
3. RFD3 的小分子 binder 设计示例
{
"buried": {
"input": "inputs/IAI.pdb",
"length": "180-180",
"ligand": "IAI",
"select_fixed_atoms": {
"IAI": ""
},
"select_buried": {
"IAI": "C22,C23,C25,C24,C21,C20,N13,C15,C16,N14"
}
}
}
这里有几个关键字段:
ligand:指定小分子
select_fixed_atoms:固定配体原子坐标
select_buried:指定哪些配体原子应该被蛋白包埋
select_exposed:指定哪些配体原子应该暴露于溶剂
这说明 RFdiffusion3 不只是生成一个蛋白包住小分子,而是可以控制小分子哪些部分被埋藏、哪些部分暴露。这对 biosensor、配体结合蛋白和小分子诱导蛋白设计很关键。
4. RFD3 的酶设计示例
{
"cys_1euv_lig": {
"input": "inputs/1euv_lig.pdb",
"ligand": "l:g",
"unindex": "A514,A531,A574,A579-581",
"length": "100-200",
"ori_token": [0, 1, 0],
"select_fixed_atoms": {
"A514,A531,A574,A579-581": "TIP"
}
}
}
这里的 unindex 是关键。它表示这些残基或原子不需要固定在最终序列中的原始编号位置,但它们的关键几何关系需要保留。
select_fixed_atoms 则决定哪些原子真正作为几何约束进入模型。比如 "TIP" 可以理解为只固定末端功能原子,而不是固定整个残基。
5. RFD3 的关键采样参数
常见参数包括:
rfd3 design \
inputs=inputs/task.json \
out_dir=outputs/task \
diffusion_batch_size=8 \
n_batches=4 \
inference_sampler.num_timesteps=200 \
inference_sampler.step_scale=1.5 \
inference_sampler.use_classifier_free_guidance=True \
inference_sampler.cfg_scale=1.5 \
dump_trajectories=True
参数理解如下:
diffusion_batch_size:每个 batch 生成多少个结构
n_batches:生成多少批
num_timesteps:去噪步数,越大通常越慢
step_scale:影响设计性和多样性
use_classifier_free_guidance:是否使用无分类器引导
cfg_scale:条件引导强度
dump_trajectories:是否保存轨迹
RFD3 的特点是条件控制更细。例如,它可以使用:
select_hotspots
select_buried
select_exposed
select_hbond_donor
select_hbond_acceptor
select_fixed_atoms
unindex
ori_token
infer_ori_strategy
partial_t
这些字段让模型可以从“残基层面的设计”进入“原子层面的设计”。
九、从代码角度比较 RFdiffusion1、RFdiffusion2 和 RFdiffusion3
| 维度 | RFdiffusion1 | RFdiffusion2 | RFdiffusion3 |
|---|---|---|---|
| 主要运行方式 | scripts/run_inference.py |
apptainer exec ... pipeline.py |
rfd3 design 或 run_inference.py |
| 输入配置 | Hydra 命令行参数 | benchmark/config pipeline | YAML / JSON specification |
| 核心控制语言 | contigmap.contigs |
benchmark config + active site motif | contig + selection fields |
| 生成对象 | backbone-level protein | enzyme scaffold + atomized motif | all-atom biomolecular interaction |
| 是否直接处理 ligand | 有限 | 支持 | 支持更灵活 |
| 是否支持 unindexed motif | 不作为核心能力 | 核心能力 | 核心能力之一 |
| 序列设计 | ProteinMPNN | LigandMPNN | MPNN / LigandMPNN |
| 结构验证 | AF2 / ESMFold | Chai-1 | RF3 / Chai / AF3 等 |
| 输出格式 | PDB + TRB + trajectory | PDB + metrics + pipeline outputs | CIF.GZ + JSON |
| 筛选重点 | backbone RMSD、motif RMSD、pAE | motif atom RMSD、full atom RMSD、rotamer 保真 | atom-level constraints、interface、ligand burial、hbond、RF3 验证 |
十、一个更实用的 RFdiffusion 系列工作流
如果要把 RFdiffusion 系列用于真实项目,不建议只跑模型输出,而应该构建完整 pipeline。
1. binder design pipeline
输入靶点结构
↓
选择结合区域和 hotspot
↓
RFdiffusion / RFD3 生成 binder backbone
↓
ProteinMPNN 设计序列
↓
AF2 / AF3 / Chai / RF3 预测复合物
↓
筛选:
binder pLDDT
interface pAE
hotspot contact
clash
buried surface area
shape complementarity
ddG
↓
Rosetta relax / interface analysis
↓
实验表达和结合验证
2. enzyme design pipeline
定义反应机制
↓
构建 theozyme 或 active-site motif
↓
选择 catalytic atoms / ligand / metal
↓
RFdiffusion2 或 RFD3 生成 scaffold
↓
LigandMPNN 序列设计和 packing
↓
Chai / RF3 / AF3 refolding
↓
筛选:
motif atom RMSD
catalytic geometry
ligand pose
pocket accessibility
side-chain rotamer preservation
active-site burial
global fold confidence
↓
Rosetta enzyme design / MD / QM/MM
↓
体外活性筛选
3. cyclic peptide design pipeline
选择靶点口袋或蛋白表面
↓
定义 hotspot / interface residues
↓
RFdiffusion cyclic mode 生成环肽骨架
↓
ProteinMPNN 或定制序列采样
↓
几何筛选:
首尾距离
二硫键距离
backbone strain
clash
interface contacts
↓
AF3 / Boltz / Chai 复合物预测
↓
Rosetta relax
↓
结合能、稳定性、可合成性筛选
十一、报告结论
RFdiffusion 系列的核心不是“一个模型越来越大”,而是设计对象和约束粒度不断升级。
RFdiffusion1 解决的是骨架生成问题。它把蛋白质结构设计转化为三维几何空间中的扩散去噪问题,并通过 contig、motif、hotspot 和 symmetry 等条件实现可控生成。
RFdiffusionAA 解决的是模型视野问题。它让模型从只看蛋白残基,扩展到可以看见小分子、金属、核酸和非标准化学组分。
RFdiffusion2 解决的是酶设计中的原子级功能约束问题。它不再要求人工预先指定催化残基编号和 rotamer,而是从 unindexed atomic motif 出发,让模型联合生成 scaffold、序列位置和侧链构象。
RFdiffusion3 解决的是统一全原子相互作用设计问题。它把 ligand、hotspot、burial、hbond、unindex、ori token 等条件统一到 YAML/JSON 输入中,使设计从“蛋白骨架生成”进入“原子级相互作用生成”。
从代码实践角度看,RFdiffusion 系列绝不是“一条命令生成药物”。更真实的理解应该是:
RFdiffusion 系列负责提出结构假设;
MPNN / LigandMPNN 负责补全序列;
AF2 / Chai / RF3 / AF3 负责回折验证;
Rosetta / MD / 几何脚本负责精筛;
实验负责最终回答模型是否真的设计成功。
因此,学习 RFdiffusion 系列时,不应该只看论文中的模型图和性能表,而应该同时掌握三件事:
第一,扩散模型在三维结构空间中到底如何生成蛋白;
第二,输入条件如何通过 contig、hotspot、motif、ligand、unindex 等方式进入模型;
第三,模型输出如何进入后续序列设计、结构预测、能量优化和实验验证流程。
只有把这三件事连起来,RFdiffusion 才不只是一个“会生成结构的模型”,而是一个可以嵌入真实蛋白设计项目的工程化设计工具。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)