RFdiffusion蛋白质骨架生成 rfdiffusion

RFdiffusion是一种基于扩散模型的AI工具,用于从头生成蛋白质三维骨架结构。它主要用于蛋白质设计,包括为特定靶点生成结合剂支架、从头设计新蛋白质、将功能基序嵌入新蛋白、设计对称寡聚体等。关键词:蛋白质设计,AI生成结构,扩散模型,骨架生成,生物信息学,RFdiffusion,结合剂设计,对称寡聚体,功能基序。

合成生物学 0 次安装 0 次浏览 更新于 2/27/2026

名称: 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 序列修复

常见工作流程

结合剂设计

  1. 准备目标 PDB (修剪至结合区域 + 10A 缓冲区)
  2. 识别 3-6 个热点残基 (暴露的、保守的)
  3. 生成 100-500 个骨架
  4. 传递给 proteinmpnn 进行序列设计

基序支架化

  1. 提取基序坐标
  2. 在 contigmap 中使用 /0 固定基序
  3. 生成周围的支架
  4. 验证基序保留情况 (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 用于筛选。