SuperAPI AI 工具集

rfdiffusion

智能体与模型

查看项目

更新于 10-15 15:57

技能介绍

用途

RFdiffusion 是一个基于扩散的生成模型,用于从头生成蛋白质骨架结构。该技能适用于以下场景:

  • 针对蛋白质靶点设计 binder
  • 从头设计单体
  • 基序支架设计
  • 对称组装体生成

主要能力

  • 支持 binder 设计、单体从头生成、基序支架和对称寡聚体
  • 通过 contigmap 语法控制链的固定与可变区域
  • 支持热点残基指定以引导界面形成
  • 支持部分扩散(从指定时间步开始扩散)用于结构精修
  • 支持对称性参数(C2、C3、C4、C5、C6、D2、D3、D4、四面体、八面体)
  • 支持 scaffold-guided 生成和序列 inpaint
  • 提供多种模型检查点,适用于不同用例

环境要求

项目 最低 推荐
Python 3.9+ 3.10
CUDA 11.7+ 12.0+
GPU 显存 16GB 24GB (A10G)
RAM 16GB 32GB

使用方式

RFdiffusion 不在 biomodals 中,需从官方 RosettaCommons 仓库或其 Docker 镜像运行,而非通过 Modal。

本地安装

git clone https://github.com/RosettaCommons/RFdiffusion.git
cd RFdiffusion

# 包含 NVIDIA SE(3)-Transformer 的 Conda 环境
conda env create -f env/SE3nv.yml
conda activate SE3nv
cd env/SE3Transformer && pip install . && cd ../..
pip install -e .

# 下载权重
mkdir -p models
wget -P models http://files.ipd.uw.edu/pub/RFdiffusion/e29311f6f1bf1af907f9ef9f44b8328b/Complex_base_ckpt.pt

Binder 设计运行示例

./scripts/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

骨架生成后,使用 proteinmpnn 进行序列设计。

Contig 映射语法

# 从头单链(50-100 残基)
contigmap.contigs=[50-100]

# Binder + 靶点(A = 靶链,用 /0 固定)
contigmap.contigs=[A1-150/0 70-100]

# 基序支架(保留残基,/0 = 固定)
contigmap.contigs=[20-40/0 A10-30/0 20-40]

# 多链 binder
contigmap.contigs=[A1-100/0 B1-100/0 60-80]

# 可变长度范围
contigmap.contigs=[A1-150/0 50-100]

热点残基指定

ppi.hotspot_res=[A45,A67,A89]

核心参数

参数 默认值 范围 说明
inference.num_designs 10 1-10000 生成设计数量
inference.input_pdb - path 靶点结构文件
inference.output_prefix output string 输出文件名前缀
diffuser.T 50 20-200 扩散时间步
denoiser.noise_scale_ca 1.0 0.0-2.0 CA 原子噪声
denoiser.noise_scale_frame 1.0 0.0-2.0 Frame 噪声
inference.ckpt_override_path - path 模型检查点
potentials.guide_scale 1.0 0.1-10 引导强度
potentials.guide_decay constant string 衰减类型

高级参数

参数 默认值 说明
diffuser.partial_T None 从时间步 T 开始部分扩散
contigmap.inpaint_str None 需要 inpaint 的序列位置
scaffoldguided.scaffoldguided false 启用 scaffold-guided 生成
scaffoldguided.target_pdb None 支架模板 PDB
ppi.binderlen None 指定 binder 精确长度

对称参数

参数 默认值 说明
symmetry.symmetry None 对称类型(C2、C3、C4、D2 等)
symmetry.recenter true 重新居中对称组装体
symmetry.radius None 对称组装体半径约束

模型检查点

检查点 使用场景
Complex_base_ckpt.pt Binder 设计(默认)
Base_ckpt.pt 从头单体
ActiveSite_ckpt.pt 活性位点支架
InpaintSeq_ckpt.pt 序列 inpaint

常见工作流

Binder 设计

  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

部分扩散(精修)

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 进行序列设计。

常见错误

  • contig 语法中缺少 /0 会导致靶点移动
  • 未加单引号会导致 shell 在空格处分割参数
  • 热点残基缺少链字母或包含空格会破坏解析
  • CUDA out of memory:显存不足,使用 A100 或减少每批设计数量
  • KeyError: 'A':PDB 中未找到该链
  • ValueError: invalid contig:contigs 语法错误
  • FileNotFoundError: ckpt:缺少模型权重

适用场景与限制

  • 需要生成蛋白质骨架时使用 RFdiffusion
  • 已有骨架时直接使用 ProteinMPNN
  • 若需要最高成功率可考虑 BindCraft
  • 若需要多样性/探索使用 RFdiffusion
  • 若需要全原子精度可考虑 BoltzGen
  • 典型性能:100 个骨架约 20-30 分钟(A10G),500 个约 1.5-2 小时,1000 个约 3-4 小时
  • 预期下游产出:约 10-15% 的骨架在序列设计 + 验证后通过完整 QC

验证

ls output/*.pdb | wc -l  # 应与 num_designs 匹配

故障排除

  • 设计缺乏二级结构:将 noise_scale 降至 0.5-0.8
  • Binder 未接触热点:检查残基编号,增加 num_designs
  • OOM 错误:减小批大小或使用 A100 GPU
  • 生成缓慢:将 diffuser.T 降至 25-35

后续步骤

proteinmpnn 进行序列设计 → 结构预测进行验证 → protein-qc 进行过滤。