ProteinMPNN蛋白质序列设计工具Skill proteinmpnn

ProteinMPNN是一款基于深度学习的蛋白质逆折叠设计工具,能够根据给定的蛋白质三维骨架结构,快速生成具有特定功能的氨基酸序列。该工具适用于蛋白质工程、药物设计、酶优化等领域,支持固定残基设计、多状态设计、表达优化等高级功能。关键词:蛋白质设计、逆折叠、序列生成、AI蛋白质工程、深度学习、生物信息学、药物发现、酶工程。

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

名称: proteinmpnn 描述: > 使用ProteinMPNN逆折叠进行蛋白质序列设计。在以下情况使用此技能: (1) 为RFdiffusion骨架设计序列, (2) 重新设计现有蛋白质序列, (3) 固定特定残基同时设计其他残基, (4) 优化序列以提高表达或稳定性, (5) 多状态或负向设计。

对于骨架生成,请使用rfdiffusion或bindcraft。 对于配体感知设计,请使用ligandmpnn。 对于溶解度优化,请使用solublempnn。 许可证: MIT 类别: 设计工具 标签: [序列设计, 逆折叠] biomodals脚本: modal_ligandmpnn.py

ProteinMPNN序列设计

先决条件

要求 最低 推荐
Python 3.8+ 3.10
CUDA 11.0+ 11.7+
GPU显存 8GB 16GB (T4)
内存 8GB 16GB

如何运行

第一次使用? 请参阅安装指南来设置Modal和biomodals。

选项1:本地安装(推荐)

git clone https://github.com/dauparas/ProteinMPNN.git
cd ProteinMPNN

python protein_mpnn_run.py \
  --pdb_path backbone.pdb \
  --out_folder output/ \
  --num_seq_per_target 16 \
  --sampling_temp "0.1"

GPU: T4 (16GB) 足够 | 时间: ~50-100 序列/分钟

选项2:Modal(通过LigandMPNN包装器)

cd biomodals
modal run modal_ligandmpnn.py \
  --pdb-path backbone.pdb \
  --num-seq-per-target 16

注意:LigandMPNN包含ProteinMPNN功能。

配置模式

核心参数

参数 默认值 范围 描述
--pdb_path 必需 路径 单个PDB输入
--pdb_path_chains 全部 A,B 要设计的链(逗号分隔)
--out_folder 必需 路径 输出目录
--num_seq_per_target 1 1-1000 每个结构的序列数
--sampling_temp “0.1” “0.0001-1.0” 温度(字符串!)
--seed 0 整数 随机种子
--batch_size 1 1-32 批次大小

温度指南

0.1  -> 低多样性,高恢复率(生产)
0.2  -> 中等多样性(默认)
0.3  -> 更高多样性(探索)
0.5+ -> 非常多样,质量较低

重要提示:温度必须作为字符串传递,而不是浮点数。

常见错误

温度参数

正确:

--sampling_temp "0.1"    # 带引号的字符串

错误:

--sampling_temp 0.1      # 不带引号的浮点数 - 可能导致错误
--sampling_temp 0.1,0.2  # 多个温度需要正确格式

固定位置JSONL

正确:

{"A": [1, 2, 3, 10, 11], "B": [5, 6]}

错误:

{"A": "1,2,3,10,11"}     # 字符串而不是列表
{A: [1, 2, 3]}           # 键缺少引号
{"A": [1,2,3,]}          # 尾随逗号

链选择

正确:

--pdb_path_chains A,B    # 逗号后无空格

错误:

--pdb_path_chains A, B   # 逗号后有空格
--pdb_path_chains "A,B"  # 引号可能导致问题

氨基酸偏好

# 偏向某些氨基酸(正数 = 偏好)
--bias_AA_jsonl '{"A": {"A": 1.5, "W": -2.0}}'

# 全局省略特定氨基酸
--omit_AAs "CM"  # 无半胱氨酸或甲硫氨酸

# 每个位置省略
--omit_AA_jsonl '{"A": {"1": "C", "2": "CM"}}'

多链设计

# 一起设计链A和B
--pdb_path_chains A,B

# 绑定链(相同序列)
--tied_positions_jsonl tied.jsonl

变体比较

变体 使用场景 关键区别
ProteinMPNN 通用 原始模型
SolubleMPNN 表达 在可溶性蛋白质上训练
LigandMPNN 小分子 配体感知上下文

输出格式

output/
├── seqs/
│   └── backbone.fa          # FASTA序列
└── backbone_pdb/
    └── backbone_0001.pdb    # 带有设计序列的PDB文件

FASTA标题格式

>backbone_0001, score=1.234, global_score=1.234, seq_recovery=0.85
MKTAYIAKQRQISFVKSHFSRQLE...

常见工作流程

结合剂序列设计

python protein_mpnn_run.py \
  --pdb_path binder_backbone.pdb \
  --out_folder output/ \
  --num_seq_per_target 16 \
  --sampling_temp "0.1" \
  --pdb_path_chains B  # 仅设计结合剂链

界面重新设计

# 固定核心,设计界面
python protein_mpnn_run.py \
  --pdb_path complex.pdb \
  --fixed_positions_jsonl core_positions.jsonl \
  --num_seq_per_target 32

多状态设计

# 为多个构象设计
python protein_mpnn_run.py \
  --pdb_path_multi state1.pdb,state2.pdb \
  --num_seq_per_target 16

示例输出

成功运行

$ python protein_mpnn_run.py --pdb_path backbone.pdb --out_folder output/ --num_seq_per_target 8
加载模型权重...
为backbone.pdb设计序列
在2.3秒内生成8个序列

output/seqs/backbone.fa:
>backbone_0001, score=1.234, global_score=1.189, seq_recovery=0.82
MKTAYIAKQRQISFVKSHFSRQLEERGLTKE...
>backbone_0002, score=1.198, global_score=1.156, seq_recovery=0.79
MKTAYIAKQRQISFVKSQFSRQLDERGLTKE...

良好输出的特征:

  • 分数: 1.0-2.0(越低表示越自信)
  • 序列恢复率: 从头设计为0.3-0.6,重新设计为0.7-0.9
  • 当温度 > 0.1时,序列多样化(不完全相同)

决策树

我应该使用ProteinMPNN吗?
│
├─ 有骨架结构吗?
│  ├─ 有 → 继续下面
│  └─ 没有 → 先使用RFdiffusion
│
├─ 结合位点有什么?
│  ├─ 无/仅蛋白质 → ProteinMPNN ✓
│  ├─ 小分子/配体 → 使用LigandMPNN
│  └─ 金属/辅因子 → 使用LigandMPNN
│
├─ 优先级是什么?
│  ├─ 溶解度/表达 → 考虑SolubleMPNN
│  ├─ 速度 → ProteinMPNN ✓
│  └─ AF2优化 → 考虑ColabDesign
│
└─ 需要固定位置吗?
   ├─ 需要 → 使用--fixed_positions_jsonl
   └─ 不需要 → ProteinMPNN ✓(设计全部)

典型性能

任务规模 时间 (T4) 成本 (Modal) 备注
100个骨架 × 8个序列 15-20分钟 ~$2 标准
500个骨架 × 8个序列 1-1.5小时 ~$8 大型任务
1000个骨架 × 16个序列 3-4小时 ~$18 全面任务

吞吐量: 在T4 GPU上约50-100个序列/分钟。


验证

grep -c "^>" output/seqs/*.fa  # 应匹配backbone_count × num_seq_per_target

故障排除

序列多样性低: 将sampling_temp增加到0.2-0.3 恢复率差: 将sampling_temp降低到0.1 内存不足错误: 减少batch_size 不需要的半胱氨酸: 使用–omit_AAs “C”

错误解释

错误 原因 修复方法
RuntimeError: CUDA内存不足 蛋白质过长或批次过大 减少batch_size或使用更大的GPU
KeyError: 'A' PDB文件中没有该链 检查PDB文件中的链ID
JSONDecodeError 无效的JSONL格式 验证JSON语法(参见常见错误)
IndexError: 列表索引 空链或残基列表 检查PDB有原子,不仅仅是HEADER

下一步: 用于验证的结构预测 → 使用protein-qc进行过滤。