Prosculpt:一个 YAML 文件串起 RFdiffusion 全流程——蛋白设计流水线本地部署与实测

本文收录于专栏 开源蛋白生成方法实践 ------ 专栏系统覆盖开源蛋白/抗体设计与生成方法实战,点击订阅可跟踪后续更新。

你做蛋白设计时最耗时的不是模型本身,而是把 RFdiffusion 生骨架、ProteinMPNN 配序列、AlphaFold 回折验证、Rosetta 打分这四套互不兼容的软件手工串起来的过程;这篇讲清斯洛文尼亚国家化学研究所 Ljubetič 实验室 2026 年 6 月开源的 Prosculpt------用一个 YAML 配置文件驱动整条流水线,支持 binder 设计、对称寡聚体、motif 脚手架、部分扩散、固定骨架重设计五类任务,自带断点续跑和 Slurm 集群并行;你可以照本文的 conda 部署命令和 5 条踩坑记录在本机跑通固定骨架重设计实测(8 条序列全程约 5 分钟),再按决策树判断它、BindCraft、ProteinDJ 谁适合你的项目。

目录

平台:Ubuntu 22.04 / 消费级 GPU(12GB 显存)

软件栈:prosculpt 1.1.4 + ProteinMPNN + Boltz 2.2.1(torch 2.14.0+cu130)+ PyRosetta 2024.39

实测任务:skipRfDiff 固定骨架重设计(5 个位点,Boltz2 回折)

核心文献

资源 与本文关系
GitHub README:安装 + contig 语法 + 全部参数 第五节部署的官方依据
Examples/ 目录:8 类任务完整配置 第六节实测的模板来源
Prosculpt Colab 装环境前先判断能不能干你的活
Rosetta Commons 官方介绍 作者亲述开发动机:源于结构域刚性连接的繁琐 bookkeeping
文献 为什么值得先读
Olivieri FA, et al. bioRxiv 2026, 10.64898/2026.06.25.732351 Prosculpt 原始论文,第二、三节核心来源
Watson JL, et al. Nature 2023;620:1089, 10.1038/s41586-023-06415-8 RFdiffusion 原始论文,理解 contig 语法必读
Dauparas J, et al. Science 2022;378:49, 10.1126/science.add2187 ProteinMPNN 原始论文
Pacesa M, et al. Nature 2025, 10.1038/s41586-025-09429-6 BindCraft------对比中最强的 binder 专用对手

一、为什么写这篇

场景:你想做 de novo 蛋白设计------给靶点设计 binder,或把两个结构域用刚性连接子拼成融合蛋白。调研一圈发现主流方案是 RFdiffusion + ProteinMPNN + AlphaFold2 三件套,然后噩梦开始了:

  1. 格式地狱:RFdiffusion 输出的链/残基编号和输入不一致,喂 ProteinMPNN 前要先 rechain;回折软件又要各自格式------每步都写胶水脚本。
  2. 指标残缺:你关心"新设计那一段"的 RMSD(RMSD_sculpted),不是整个蛋白的------三个软件谁都不直接给你。
  3. 失败浪费:RFdiffusion 骨架里混着大量"单螺旋"废料,不回折根本看不出来,GPU 全烧在垃圾上。
  4. 中断重来:集群上跑到回折作业被杀,前面两天的骨架怎么接上?自己想办法。

Prosculpt 就是冲着这四个痛点来的。它最初是 Ljubetič 实验室为结构域刚性连接项目写的内部工具,后来扩展成覆盖 RFdiffusion 全部设计模式的通用流水线,2026 年 6 月挂 bioRxiv 公开。

二、原理与架构

主要步骤如下:

  1. 主要输入是一个蛋白质 PDB 文件和一个 yaml 文件,该文件指定如何围绕原始蛋白质生成新结构(保留哪些部分等)。
  2. RFdiffusion 模块根据提供的选项生成新的蛋白质结构(仅限骨架原子)。
  3. 使用辅助脚本对生成的 PDB 文件进行预处理,ProteinMPNN 为这些结构生成序列(氨基酸残基)。
  4. 序列被准备好供 AF2 处理,AF2 会将它们折叠成各种结构。
  5. 使用 Rosetta 编写的单独脚本计算这些结构的其他评估参数。
  6. 最终输出结果是一个包含 AF2 结构路径、评估参数等的 CSV 文件。

2.1 四段式流水线

Prosculpt 不含任何新模型------它是工作流编排器,用 hydra 解析 YAML 配置,依次调用四个外部程序并在每步间做格式转换:

复制代码
输入: PDB 结构 + 一个 YAML 配置
  ① RFdiffusion  骨架生成(仅主链)   ← contig 语法控制留谁/长哪/多长
  ② 插件过滤     plugins/*.py      ← filter_backbone() 砍掉废料骨架
  ③ ProteinMPNN  序列设计           ← 从 TRB 文件读"哪些残基允许改"
  ④ 回折验证+打分                   ← ColabFold(AF2)/Boltz2/AF3 三选一 + Rosetta
输出: output_pdbs/ + output.csv(每个设计带全套指标)

每个设计分配四段式 ID(任务号.骨架号.序列号.模型号),最终 PDB 文件名直接嵌入 ID 和关键指标,手动挑选时不用开 CSV。

2.2 它真正解决的三件"脏活"

  • 残基级指标切分 :RMSD/pLDDT 自动拆成四组------全模型、sculpted(新设计残基)、fixed_chains(未重设计链)、motif(重设计链里保留的残基)。不打通 RFdiffusion 的 TRB 元数据和 ProteinMPNN 的可设计位点,这指标根本算不出来。
  • 部分 MSA(partial alignment):天然蛋白部分需要 MSA 才能折好,de novo 部分没有。Prosculpt 给天然链用真实 a3m、给设计链拼"自我复制"的假 MSA------binder 设计中靶点折叠质量直接决定筛选可靠性(第六节实测可亲眼看到)。
  • 断点续跑 :auto_restart: n 让崩溃后从上一完成阶段重启。实测有效------我第一次运行死在 Boltz2 下载权重,重跑时日志直接打印 Checkpoint found,跳过已完成的 MPNN 阶段。

2.3 骨架过滤插件

RFdiffusion 常见失败模式是生成单螺旋或螺旋-环-螺旋的不可设计骨架。Prosculpt 把过滤做成插件协议:任何 Python 脚本实现 filter_backbone(pdb, **kwargs) -> bool 即可挂进 YAML 的 rfdiff_backbone_filters 列表串联执行。仓库自带三个示例:二级结构数量、近邻数、Rosetta fa_rep 链间碰撞检测。

2.4 五类任务一个 YAML

按论文 Figure 1 支持:无条件生成 / 对称寡聚体(C_n/D_n/四面体等)/ binder 设计 / motif 脚手架 / 固定骨架重设计(skipRfDiff),外加部分扩散和无序蛋白靶点 binder。RFdiffusion 原生参数经 pass_to_rfdiff 透传,MPNN 和回折参数同理------新手不写代码,高级用户不被绑死。

三、论文验证数据:C10 对称寡聚体

论文实战案例是 C10 十重对称寡聚体 ------此前全球只报道过一个 de novo C10,属难度天花板。流程:RFdiffusion 无监督生成约 500 骨架/组(开 olig_contacts 引导势),每骨架配 10 条序列,ColabFold 回折,Rosetta 算 rg/电荷/SAP,按 pLDDT≥90 + RMSD 筛选。

单体长度 总装体 in silico 成功率(pLDDT≥90) 骨架-回折 RMSD
60 aa ~600 aa 7% 0.5 Å
120 aa ~1200 aa 0.4% 1.3 Å

(90 aa 组介于两者之间,论文图注给出趋势;出处:Figure 3 图注)两个结论:(1) 成功率随总装体尺寸断崖下跌------论文明确说这是 RFdiffusion 本身在 >400 aa 总长度时性能显著下降的已知局限,不是流水线的问题;(2) 顶级设计覆盖全 α 螺旋到 α/β 混合架构,孔径 1.5-2.6 nm,多样性足够支撑实验验证。

四、横向对比

工具 核心路线 任务范围 短板
Prosculpt RFdiffusion+MPNN+AF2/AF3/Boltz2 全部 RFdiffusion 模式;插件过滤;断点续跑 本身无新模型;需自备各组件
BindCraft AF2 反向传播幻觉 仅 binder,但成功率高(Nature 2025) 干不了对称体/脚手架
ProteinDJ 模块化流水线 多任务,序列/预测后都有过滤层 学习曲线略陡
BinderFlow binder 专用 仅 binder 仅 binder
Ovo 工作流+Web UI 以 binder 为主,上手最快 支持工作流少

按论文 Discussion:Prosculpt 是目前已知唯一原生支持对称寡聚体、多链同/异源二聚体、部分扩散、多链靶点 binder 的框架。只做 binder 选 BindCraft 更省事;活超出 binder 或要集群批量跑,Prosculpt 是更通用的底座。

五、本地部署(conda 实测)

5.1 硬件与系统

Linux(本文 Ubuntu 22.04;Windows 走 WSL2);GPU 非必需但强烈建议(Boltz2 实测占约 6 GB 显存);磁盘约 13 GB(容器路线再预留 20 GB+);可选 apptainer/singularity(容器路线)与 Slurm(集群批量,单机不需要)。

5.2 克隆 + 建环境

复制代码
git clone https://github.com/ajasja/prosculpt.git ~/app/prosculpt
cd ~/app/prosculpt
conda create -n prosculpt python=3.11 -y
~/anaconda3/envs/prosculpt/bin/python -m pip install .

⚠️ 踩坑 #1 :装完 import prosculpt 报 ModuleNotFoundError------不是装失败了。setup.py 里 packages=find_packages() 找不到任何包(prosculpt.py 是顶层单文件模块),pip 实际只装了 pandas/hydra-core 等依赖 。正确用法是始终在仓库根目录运行 python prosculpt_run.py,靠当前目录挂上 sys.path。
⚠️ 踩坑 #2(2026-09-18 当天的 main 分支) :prosculpt.py 第 1869 行有个跨行 f-string 调试 print,直接 SyntaxError,连 import 都过不了。把那段 debug print 改成普通多参数 print(...) 即可(仓库当天在密集更新,生产建议锁 release 不追 main)。

5.3 装 PyRosetta(打分硬依赖)

prosculpt_run.py 第一行就 from pyrosetta import * 并初始化------没有它连 CLI 都起不来。官方 wheel 服务器单连接限速约 50 KB/s(1.7 GB 要约 10 小时),但支持 Range 请求,多线程下载器先拉再装:

复制代码
aria2c -x16 -s16 -k1M --file-allocation=none -d /tmp -o pyrosetta.whl \
  'https://west.rosettacommons.org/pyrosetta/quarterly/release.cxx11thread.serialization/pyrosetta-<版本>-cp311-cp311-linux_x86_64.whl'
~/anaconda3/envs/prosculpt/bin/python -m pip install /tmp/pyrosetta.whl --no-cache-dir

⚠️ 踩坑 #3 :直连 46 KB/s;aria2c -x16 十六段并行实测 30 秒拉 1.5 GB。pip 单线程,别硬等。

5.4 装序列设计与回折组件

复制代码
git clone https://github.com/dauparas/ProteinMPNN.git ~/app/ProteinMPNN   # 纯 PyTorch 脚本,clone 即用
~/anaconda3/envs/prosculpt/bin/python -m pip install "boltz[cuda]" -U --no-cache-dir

RFdiffusion 本机编译(SE3-Transformer 需 nvcc 编 CUDA kernel)风险高,官方推荐容器:apptainer pull rfdiff.sif docker://rosettacommons/rfdiffusion,再把 rfdiff_run_command 指向 SIF。本文实测走 skipRfDiff,不依赖 RFdiffusion。

5.5 Boltz2 权重缓存:先手动下载

⚠️ 踩坑 #4 :Boltz2 首次运行用 urllib 直连 huggingface.co 下载约 6 GB 缓存(mols.tar + 两个 ckpt),被墙环境直接报 Network is unreachable。预先手动下载到缓存目录即可跳过:

复制代码
mkdir -p ~/datasets/boltz && cd ~/datasets/boltz
for f in mols.tar boltz2_conf.ckpt boltz2_aff.ckpt; do
  aria2c -c -x8 -s8 -o "$f" "https://hf-mirror.com/boltz-community/boltz-2/resolve/main/$f"
done

5.6 写 installation.yaml

所有"软件装在哪"集中在 installation.yaml。单机无容器版本:

复制代码
mpnn_run_command: <conda_env>/bin/python ~/app/ProteinMPNN/protein_mpnn_run.py
prosculpt_python_path: <conda_env>/bin/python
pymol_python_path: /usr/bin/python3          # 系统 python 带 pymol 模块即可
boltz_options: --cache ~/datasets/boltz       # 指向 5.5 预下载的目录
rfdiff_run_command: echo "not used"           # skipRfDiff 模式用不到

⚠️ 踩坑 #5 :README 的 run_tests.py 是 Slurm 集群专用(内部调 sbatch)。本地入口是 python prosculpt_run.py -cd <配置目录> -cn <配置名不含.yaml>------配置目录里要同时放 installation.yaml 和任务 yaml(defaults: - installation 从同目录找它)。

六、实战实测:固定骨架重设计(skipRfDiff)

任务:用仓库自带 redesign_target.pdb(胰岛素受体片段复合物,A/B 两链),固定全部骨架,只让 ProteinMPNN 重设计 A 链 49/50/53/56/57 五个位点,Boltz2 回折,PyRosetta 打分------scaffold 不动、只做局部序列优化,药化最常见场景之一。

复制代码
skipRfDiff: True
designable_residues: [A49, A50, A53, A56, A57, B]  # A 链 5 位点重设计;B 链只保留不设计
num_seq_per_target_mpnn: 8
prediction_model: Boltz2
use_a3m: True                  # B 链是天然蛋白,用真实 MSA 保证折叠质量
sampling_temp: 0.3
backbone_noise: 1.0            # README 建议 skip 模式加大噪声换多样性

PATH=<conda_env>/bin:$PATH <conda_env>/bin/python prosculpt_run.py -cd local_test -cn redesign_local

实测过程 :ProteinMPNN 约 1 分钟出 8 条序列(seq_recovery 0.0--0.6,5 个位点确实在采样);日志逐条打印 partial alignment 行为------设计链 A 提示 Could not find alignment file 后用自我复制假 MSA,天然链 B 用真实 a3m。Boltz2 折叠 8 条约 2.5 分钟(单条约 20 秒,显存峰值 6.2 GB);指标 + Rosetta 打分约 20 秒。全程约 5 分钟。

实测结果(output.csv 关键列):

设计 ID pLDDT RMSD (Å) pae rg charge SAP ipTM
1.0.4.0 95 2.3 3.2 11.1 -4.7 29.7 0.90
1.0.8.0 95 2.5 2.7 11.1 -6.7 27.1 0.90
1.0.1.0 95 2.3 3.1 11.1 -4.7 26.9 0.90
1.0.3.0 95 2.3 3.1 11.1 -3.7 21.2 0.90
1.0.2.0 95 2.2 4.8 11.2 -3.7 24.1 0.70
1.0.6.0 93 2.5 5.5 11.1 -3.7 22.3 0.70
1.0.5.0 95 11.4 3.5 11.4 -4.7 39.4 0.90
1.0.7.0 91 11.4 4.7 11.2 -4.7 20.1 0.80

这张表本身就是最好的教学案例:1.0.5.0 和 1.0.7.0 的 pLDDT 高达 91-95,RMSD 却有 11.4 Å------Boltz2 很自信地把它们折成了和输入骨架完全不同的结构。只看置信度你会收下两个失败设计,这正是 Prosculpt 把"回折结构 vs 设计骨架 RMSD"做成一等公民指标的意义。8 条里 6 条过 pLDDT≥90 + RMSD≤2.5 Å 双门槛。

⚠️ 复现提示 :Boltz2 折叠带扩散采样且未固定随机种子,同一配置两次运行的指标会漂移------作者复跑一次同任务,8 条设计平均 pLDDT 94.1 持平,但 RMSD 普遍落在 2.3-2.8 Å(阈值附近抖动),双门槛通过数从 6/8 降到 2/8,离群设计也从 1.0.5/1.0.7 换成了 1.0.6。上表是首次运行的原样记录;比较不同运行之间的绝对数值意义不大,pLDDT 高 + RMSD 飙升的"自信废料"模式在每次运行中稳定出现才是关键信号。

最终 PDB 自动把指标嵌进文件名:1.0.4.0__link_-1__plddt_95__plddt_sculpted_96__rmsd_2.3__rmsd_sculpted_2.5__...__.pdb。

七、选型决策树

你的场景 推荐
只做 binder,追求最高成功率 BindCraft(AF2 幻觉路线,binder 专用优化)
binder/对称体/脚手架/部分扩散混合需求,或集群批量 Prosculpt
不懂命令行,只要图形界面 Ovo(Web UI),或先跑 Prosculpt Colab 再转本地
已有 RFdiffusion 经验,只要更细过滤控制 ProteinDJ
只想在现有蛋白上改几个氨基酸 Prosculpt skipRfDiff 模式(本文实测,5 分钟出结果)

八、待追踪锚点

  1. 论文尚未 peer review,关注正式版是否补实验验证数据(目前只有 in silico)
  2. Methods 提到将接入 Chai 与 LigandMPNN(蛋白-配体界面设计)------药化场景关键升级
  3. RFdiffusion3 已发布(2025-12 进 Foundry),Prosculpt 是否跟进 RFD3 是分水岭
  4. 论文承诺的 Zenodo 设计模型库上传后可做复现基准;dashboard/ Web 看板成熟度待观察
  5. 主分支 2026-09-18 出现 SyntaxError 级提交,说明测试覆盖有限------生产建议锁 release

关键字

Prosculpt、蛋白质设计、RFdiffusion、ProteinMPNN、Boltz2、固定骨架重设计、对称寡聚体、蛋白设计流水线

参考

  • Prosculpt:bioRxiv 2026, 10.64898/2026.06.25.732351;仓库 BSD-3-Clause
  • RFdiffusion:Nature 2023, 10.1038/s41586-023-06415-8 | ProteinMPNN:Science 2022, 10.1126/science.add2187
  • AlphaFold2:Nature 2021, 10.1038/s41586-021-03819-2 | AlphaFold3:Nature 2024, 10.1038/s41586-024-07487-w
  • Boltz-2:bioRxiv 2025, 10.1101/2025.06.14.659707 | BindCraft:Nature 2025, 10.1038/s41586-025-09429-6
  • ProteinDJ:Protein Sci. 2026, 10.1002/pro.70464 | BinderFlow:PLOS Comput. Biol. 2025, 10.1371/journal.pcbi.1013747 | Ovo:bioRxiv 2025, 10.1101/2025.11.27.691041

系列导航 :专栏全集 开源蛋白生成方法实践

更多专栏:

蛋白 / 多肽 分子模拟 / 动力学 分子对接 / CADD / 工具 其他
开源蛋白结构推理预测 分子模拟基础 UCSF DOCK系列 agent智能体系列
开源蛋白生成方法实践 分子动力学模拟-Amber rDock系列 化学大模型介绍(2025)
蛋白药物设计-原理与案例剖析 分子动力学模拟-Gromacs LeDock系列 我胡师兄说药
开源多肽设计模型和方法实践 結合自由能 CADD中的机器学习模型 siRNA药物设计模型
开源多肽性质预测 高效计算基本配置 小分子药物设计-原理与案例剖析 ASO药物设计模型
多肽药物设计-原理与案例剖析 作用于DNA/RNA的药物设计实践 开源小分子生成和设计实践 开源药代动力学模拟软件
相关推荐
Blockbuater_drug16 天前
CyclicMPNN: 环肽序列设计专用模型——ProteinMPNN 的环肽微调版
微调·cyclicmpnn·环肽序列设计·proteinmpnn·highfold·序列多样性
bioinforiver8 个月前
蛋白质设计(十三)— —(搬运)Protein Binder Design with RFDiffusion3(上)
蛋白质设计
OpenBayes9 个月前
Open-AutoGLM 实现手机端自主操作;PhysDrive 数据集采集真实驾驶生理信号
人工智能·深度学习·机器学习·数据集·文档转换·图片生成·蛋白质设计