用途:ProteinMPNN 是 binder 流程中默认的逆折叠步骤,仅依据主链几何结构生成氨基酸序列。适合蛋白质—蛋白质设计界面;当界面涉及配体、核酸或金属时则不适用,此时可改用 ligandmpnn(CLI 几乎相同)或 solublempnn(使用可溶结构训练的权重)。
主要能力:输入 PDB 主链结构,输出设计序列,写入 out/seqs/<pdb_stem>.fa。首条记录为输入序列,每条设计头部含 score=(平均负对数似然,越低越自信)、global_score= 和 seq_recovery=。模型较小,可在 CPU 上运行,少量序列通常只需数秒;批量任务(数百个主链或较大 --num_seq_per_target)建议用 GPU。
使用方式:仓库需在任务内克隆,无 PyPI 发行版,检查点随仓库提供。
pip install torch numpy git clone --depth 1 https://github.com/dauparas/ProteinMPNN.git proteinmpnn cd proteinmpnn python protein_mpnn_run.py --pdb_path backbone.pdb --pdb_path_chains "A" --out_folder out --num_seq_per_target 16 --sampling_temp "0.1"
注意:--sampling_temp 按空格分隔解析,多值扫描需加引号("0.1 0.2 0.3"),逗号不能分隔;--pdb_path_chains 同样在单个引号参数内以空格分隔("A B")。--fixed_positions_jsonl 需每行一个 JSON 对象,外层以 PDB 文件名为键,再按链给出 1 起始的残基编号列表,如 {"backbone": {"A": [10, 11, 12], "B": []}};若直接传内层 {"A": [...]} 会被静默视为无匹配并重设计全部位置。--chain_id_jsonl 与 --tied_positions_jsonl 同样适用外层文件名规则。
检查点选择:v_48_002(噪声 0.02 Å,恢复率最高,接近天然的重设计)、v_48_020(默认,0.20 Å,用于 de novo 主链)、v_48_030(0.30 Å,用于非常粗糙的主链,恢复率最低);--use_soluble_model 切换到可溶训练权重。
限制:ProteinMPNN 只写序列,不会把序列重新映射回主链;如需设计序列的 PDB,可用 ligandmpnn runner(自动写入 backbones/,并接受 --model_type protein_mpnn 使用相同权重)。常见错误包括 KeyError: 'A'(链字母不在 PDB 中)、*_jsonl 标志的 JSONDecodeError(需传文件路径而非内联 JSON)、相对导入的 ModuleNotFoundError(需先 cd 进克隆仓库)。