名称: rfdiffusion 描述: > 使用 RFdiffusion 生成蛋白质骨架,这是一种基于扩散的生成模型,用于从头生成蛋白质结构。在以下情况下使用此技能: (1) 为目标蛋白质设计结合剂支架, (2) 从头生成新颖的蛋白质骨架, (3) 将功能基序支架化到新蛋白质中, (4) 指定界面设计的热点残基, (5) 创建对称寡聚体。
骨架生成后,如需进行序列设计,请使用 proteinmpnn。 如需进行结构验证,请使用 alphafold 或 chai。 如需使用 QC 阈值,请使用 protein-qc。 许可证: MIT 类别: 设计工具 标签: [结构设计, 扩散, 骨架, 结合剂] proteinbase_slug: rfdiffusion proteinbase_url: https://proteinbase.com/design-methods/rfdiffusion biomodals_脚本: modal_rfdiffusion.py
RFdiffusion 骨架生成
先决条件
| 要求 | 最低 | 推荐 |
|---|---|---|
| Python | 3.9+ | 3.10 |
| CUDA | 11.7+ | 12.0+ |
| GPU 显存 | 16GB | 24GB (A10G) |
| 内存 | 16GB | 32GB |
如何运行
第一次使用? 请参阅 安装指南 来设置 Modal 和 biomodals。
选项 1: Modal (推荐)
# 克隆 biomodals
git clone https://github.com/hgbrian/biomodals && cd biomodals
# 基本结合剂设计
modal run modal_rfdiffusion.py \
--pdb target.pdb \
--contigs "A1-150/0 70-100" \
--hotspot "A45,A67,A89" \
--num-designs 100
# 使用自定义 GPU/超时时间
GPU=A100 TIMEOUT=60 modal run modal_rfdiffusion.py \
--pdb target.pdb \
--contigs "A1-150/0 70-100" \
--num-designs 100
GPU: A10G (24GB) | 超时: 默认 30 分钟
选项 2: 本地安装
# 克隆并安装
git clone https://github.com/RosettaCommons/RFdiffusion.git
cd RFdiffusion && pip install -e .
# 下载权重
wget http://files.ipd.uw.edu/pub/RFdiffusion/models/Complex_base_ckpt.pt
# 运行推理
python run_inference.py \
inference.input_pdb=target.pdb \
contigmap.contigs=[A1-150/0 70-100] \
ppi.hotspot_res=[A45,A67,A89] \
inference.num_designs=100
配置模式 (Hydra)
Contigmap 语法
# 从头单链 (50-100 个残基)
contigmap.contigs=[50-100]
# 结合剂 + 目标 (A = 目标链,使用 /0 固定)
contigmap.contigs=[A1-150/0 70-100]
# 基序支架化 (保留残基,/0 = 固定)
contigmap.contigs=[20-40/0 A10-30/0 20-40]
# 多链结合剂
contigmap.contigs=[A1-100/0 B1-100/0 60-80]
# 可变长度范围
contigmap.contigs=[A1-150/0 50-100] # 结合剂 50-100 个氨基酸
热点残基指定
# 界面残基 (链字母 + 残基编号,无空格)
ppi.hotspot_res=[A45,A67,A89]
常见错误
Contig 语法
✅ 正确:
contigmap.contigs=[A1-150/0 70-100] # 目标固定 (/0),结合剂可变
❌ 错误:
contigmap.contigs=[A1-150 70-100] # 缺少 /0 - 目标会移动!
contigmap.contigs="A1-150/0 70-100" # 引号破坏解析
contigmap.contigs=[A1-150/0, 70-100] # 逗号破坏解析
热点残基
✅ 正确:
ppi.hotspot_res=[A45,A67,A89] # 链字母 + 残基编号
❌ 错误:
ppi.hotspot_res=[45,67,89] # 缺少链字母
ppi.hotspot_res=[A45, A67, A89] # 空格破坏解析
ppi.hotspot_res="A45,A67,A89" # 引号破坏解析
完整参数参考
核心参数
| 参数 | 默认值 | 范围 | 描述 |
|---|---|---|---|
inference.num_designs |
10 | 1-10000 | 要生成的设计数量 |
inference.input_pdb |
- | 路径 | 目标结构文件 |
inference.output_prefix |
output | 字符串 | 输出文件名前缀 |
diffuser.T |
50 | 20-200 | 扩散时间步长 |
denoiser.noise_scale_ca |
1.0 | 0.0-2.0 | CA 原子噪声 (0.5-0.8 = 保守) |
denoiser.noise_scale_frame |
1.0 | 0.0-2.0 | 框架噪声 |
inference.ckpt_override_path |
- | 路径 | 模型检查点 |
potentials.guide_scale |
1.0 | 0.1-10 | 引导强度 |
potentials.guide_decay |
constant | 字符串 | 衰减类型 |
高级参数
| 参数 | 默认值 | 描述 |
|---|---|---|
diffuser.partial_T |
None | 从时间步长 T 开始扩散 (部分扩散) |
contigmap.inpaint_str |
None | 要修复的序列位置 |
scaffoldguided.scaffoldguided |
false | 启用支架引导生成 |
scaffoldguided.target_pdb |
None | 支架模板 PDB |
ppi.binderlen |
None | 指定确切的结合剂长度 |
对称性参数
| 参数 | 默认值 | 描述 |
|---|---|---|
symmetry.symmetry |
None | 对称类型 (C2, C3, C4, D2, 等) |
symmetry.recenter |
true | 重新居中对称组装体 |
symmetry.radius |
None | 对称组装体的半径约束 |
折叠条件
| 参数 | 默认值 | 描述 |
|---|---|---|
contigmap.provide_seq |
None | 提供用于折叠条件的序列 |
contigmap.inpaint_seq |
None | 用于序列修复的位置 |
模型检查点
| 检查点 | 使用场景 |
|---|---|
Complex_base_ckpt.pt |
结合剂设计 (默认) |
Base_ckpt.pt |
从头单体 |
ActiveSite_ckpt.pt |
活性位点支架化 |
InpaintSeq_ckpt.pt |
序列修复 |
常见工作流程
结合剂设计
- 准备目标 PDB (修剪至结合区域 + 10A 缓冲区)
- 识别 3-6 个热点残基 (暴露的、保守的)
- 生成 100-500 个骨架
- 传递给 proteinmpnn 进行序列设计
基序支架化
- 提取基序坐标
- 在 contigmap 中使用
/0固定基序 - 生成周围的支架
- 验证基序保留情况 (RMSD < 1.5A)
对称寡聚体
# C3 对称三聚体
python run_inference.py \
symmetry.symmetry=C3 \
contigmap.contigs=[100-150] \
inference.num_designs=50
# D2 对称四聚体
python run_inference.py \
symmetry.symmetry=D2 \
contigmap.contigs=[80-120] \
symmetry.radius=25
# 支持的对称性: C2, C3, C4, C5, C6, D2, D3, D4, 四面体, 八面体
部分扩散 (精修)
# 从现有结构开始,从时间步长 10 开始扩散
python run_inference.py \
inference.input_pdb=initial.pdb \
diffuser.partial_T=10 \
contigmap.contigs=[A1-100]
输出格式
output/
├── output_0.pdb # 生成的骨架
├── output_1.pdb
├── ...
└── output_99.pdb
每个 PDB 包含聚丙氨酸骨架 - 使用 proteinmpnn 进行序列设计。
示例输出
成功运行
$ python run_inference.py inference.input_pdb=target.pdb contigmap.contigs=[A1-150/0 70-100] inference.num_designs=100
[INFO] 从 Complex_base_ckpt.pt 加载模型
[INFO] 生成设计 1/100...
[INFO] 生成设计 50/100...
[INFO] 生成设计 100/100...
[INFO] 已保存 100 个设计到 output/
已生成:
output/output_0.pdb (85 个残基)
output/output_1.pdb (92 个残基)
...
良好输出的特征:
- 文件大小: 每个 PDB 3-8 KB (仅骨架)
- 残基数量在指定范围内
- 在 PyMOL 中可见二级结构 (螺旋/折叠,非随机卷曲)
决策树
我应该使用 RFdiffusion 吗?
│
├─ 需要生成蛋白质骨架吗?
│ ├─ 是 → 继续下面
│ └─ 否,已有骨架 → 使用 ProteinMPNN
│
├─ 什么类型的设计?
│ ├─ 针对蛋白质目标的结合剂 → RFdiffusion ✓
│ ├─ 从头单体 → RFdiffusion ✓
│ ├─ 基序支架化 → RFdiffusion ✓
│ └─ 对称组装体 → RFdiffusion ✓
│
└─ 优先级?
├─ 需要最高成功率 → 考虑 BindCraft
├─ 需要多样性/探索 → RFdiffusion ✓
└─ 需要全原子精度 → 考虑 BoltzGen
典型性能
| 项目规模 | 时间 (A10G) | 成本 (Modal) | 备注 |
|---|---|---|---|
| 100 个骨架 | 20-30 分钟 | ~$3 | 快速探索 |
| 500 个骨架 | 1.5-2 小时 | ~$12 | 标准项目 |
| 1000 个骨架 | 3-4 小时 | ~$25 | 大型项目 |
预期下游产出: 约 10-15% 的骨架在序列设计 + 验证后能通过完整 QC。
验证
ls output/*.pdb | wc -l # 应匹配 num_designs
故障排除
设计缺乏二级结构: 将 noise_scale 降低至 0.5-0.8 结合剂未接触热点: 验证残基编号,增加 num_designs OOM 错误: 减少批次大小或使用 A100 GPU 生成缓慢: 将 diffuser.T 减少至 25-35
错误解释
| 错误 | 原因 | 修复方法 |
|---|---|---|
RuntimeError: CUDA out of memory |
GPU 显存不足 | 使用 A100 或减少每批次设计数量 |
KeyError: 'A' |
PDB 中未找到链 | 使用 grep ^ATOM target.pdb | cut -c22 | sort -u 检查链 ID |
ValueError: invalid contig |
contigs 语法错误 | 检查空格、引号、逗号 (参见常见错误) |
FileNotFoundError: ckpt |
缺少模型权重 | 从 IPD 网站下载 |
下一步: proteinmpnn 用于序列设计 → 结构预测用于验证 → protein-qc 用于筛选。