本文收录于专栏 开源蛋白生成方法实践 ------ 专栏系统覆盖开源蛋白/抗体设计与生成方法实战,点击订阅可跟踪后续更新。
你做蛋白设计时最耗时的不是模型本身,而是把 RFdiffusion 生骨架、ProteinMPNN 配序列、AlphaFold 回折验证、Rosetta 打分这四套互不兼容的软件手工串起来的过程;这篇讲清斯洛文尼亚国家化学研究所 Ljubetič 实验室 2026 年 6 月开源的 Prosculpt------用一个 YAML 配置文件驱动整条流水线,支持 binder 设计、对称寡聚体、motif 脚手架、部分扩散、固定骨架重设计五类任务,自带断点续跑和 Slurm 集群并行;你可以照本文的 conda 部署命令和 5 条踩坑记录在本机跑通固定骨架重设计实测(8 条序列全程约 5 分钟),再按决策树判断它、BindCraft、ProteinDJ 谁适合你的项目。
目录
- §一、为什么写这篇
- §二、原理与架构
- §三、论文验证数据:C10 对称寡聚体
- §四、横向对比
- §五、本地部署(conda 实测)
- §六、实战实测:固定骨架重设计(skipRfDiff)
- §七、选型决策树
- §八、待追踪锚点
一句话结论:Prosculpt 不是新模型,而是把蛋白设计四件套(RFdiffusion 骨架生成 → 插件过滤 → ProteinMPNN 序列设计 → AF2/AF3/Boltz2 回折 + Rosetta 打分)封装成"一个 YAML 跑全程"的流水线框架------它的价值在于把软件之间的格式转换、重编号、区域级指标计算这些最脏最累的活全包了,是目前唯一原生支持对称寡聚体和多链靶点 binder 设计的开源工作流。
实测日期:2026-09-19平台: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 三件套,然后噩梦开始了:
- 格式地狱:RFdiffusion 输出的链/残基编号和输入不一致,喂 ProteinMPNN 前要先 rechain;回折软件又要各自格式------每步都写胶水脚本。
- 指标残缺:你关心"新设计那一段"的 RMSD(RMSD_sculpted),不是整个蛋白的------三个软件谁都不直接给你。
- 失败浪费:RFdiffusion 骨架里混着大量"单螺旋"废料,不回折根本看不出来,GPU 全烧在垃圾上。
- 中断重来:集群上跑到回折作业被杀,前面两天的骨架怎么接上?自己想办法。
Prosculpt 就是冲着这四个痛点来的。它最初是 Ljubetič 实验室为结构域刚性连接项目写的内部工具,后来扩展成覆盖 RFdiffusion 全部设计模式的通用流水线,2026 年 6 月挂 bioRxiv 公开。
二、原理与架构

主要步骤如下:
- 主要输入是一个蛋白质 PDB 文件和一个 yaml 文件,该文件指定如何围绕原始蛋白质生成新结构(保留哪些部分等)。
- RFdiffusion 模块根据提供的选项生成新的蛋白质结构(仅限骨架原子)。
- 使用辅助脚本对生成的 PDB 文件进行预处理,ProteinMPNN 为这些结构生成序列(氨基酸残基)。
- 序列被准备好供 AF2 处理,AF2 会将它们折叠成各种结构。
- 使用 Rosetta 编写的单独脚本计算这些结构的其他评估参数。
- 最终输出结果是一个包含 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 分钟出结果) |
八、待追踪锚点
- 论文尚未 peer review,关注正式版是否补实验验证数据(目前只有 in silico)
- Methods 提到将接入 Chai 与 LigandMPNN(蛋白-配体界面设计)------药化场景关键升级
- RFdiffusion3 已发布(2025-12 进 Foundry),Prosculpt 是否跟进 RFD3 是分水岭
- 论文承诺的 Zenodo 设计模型库上传后可做复现基准;dashboard/ Web 看板成熟度待观察
- 主分支 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
系列导航 :专栏全集 开源蛋白生成方法实践
更多专栏: