proteinmpnn について
proteinmpnnは、バックボーン構造からタンパク質配列を設計するためのガイドです。ProteinMPNNと関連モデルを扱い、配列生成、チェーン選択、位置制約を設定する研究者向けに、バインダーや界面設計の例を示します。
主な機能
- 01PDBバックボーンからの配列生成
- 02チェーンと位置の選択
- 03温度とアミノ酸の制御
- 04ProteinMPNN、SolubleMPNN、LigandMPNN
活用シーン
- 01バインダーチェーン配列の設計
- 02タンパク質界面の再設計
- 03複数のコンフォメーション向け配列生成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ adaptyvbio/ protein-design-skills --skill proteinmpnnインストール後、Claude Code で/proteinmpnnを入力して読み込まれたか確認します。
同梱ファイルreferences/temperature-guide.md
詳細
ProteinMPNN Sequence Design
前提条件
| 要件 | 最低要件 | 推奨 |
|---|---|---|
| Python | 3.8+ | 3.10 |
| CUDA | 11.0+ | 11.7+ |
| GPU VRAM | 8GB | 16GB (T4) |
| RAM | 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_ligandmpnn.py takes --input-pdb and forwards run.py args via --params-str
modal run modal_ligandmpnn.py \
--input-pdb backbone.pdb \
--params-str "--model_type protein_mpnn --number_of_batches 16 --temperature 0.1"
GPU(Modal):デフォルトは A10G | タイムアウト:デフォルトは900s
注:LigandMPNN には ProteinMPNN の機能が含まれています(--model_type protein_mpnn で選択)。
設定スキーマ
主なパラメーター
| パラメーター | デフォルト | 範囲 | 説明 |
|---|---|---|---|
--pdb_path | 必須 | path | 単一の PDB 入力 |
--pdb_path_chains | すべて | A,B | 設計するチェーン(カンマ区切り) |
--out_folder | 必須 | path | 出力ディレクトリ |
--num_seq_per_target | 1 | 1-1000 | 構造あたりの配列数 |
--sampling_temp | "0.1" | "0.0001-1.0" | 温度(文字列です!) |
--seed | 0 | int | 乱数シード |
--batch_size | 1 | 1-32 | バッチサイズ |
温度ガイド
0.1 -> Low diversity, high recovery (production)
0.2 -> Moderate diversity (default)
0.3 -> Higher diversity (exploration)
0.5+ -> Very diverse, lower quality
重要:温度は浮動小数点数ではなく、文字列として渡す必要があります。
よくある間違い
温度パラメーター
✅ 正しい例:
--sampling_temp "0.1" # String with quotes
❌ 誤った例:
--sampling_temp 0.1 # Float without quotes - may cause errors
--sampling_temp 0.1,0.2 # Multiple temps need proper format
固定位置の JSONL
✅ 正しい例:
{"A": [1, 2, 3, 10, 11], "B": [5, 6]}
❌ 誤った例:
{"A": "1,2,3,10,11"} # String instead of list
{A: [1, 2, 3]} # Missing quotes on key
{"A": [1,2,3,]} # Trailing comma
チェーンの選択
✅ 正しい例:
--pdb_path_chains A,B # No spaces
❌ 誤った例:
--pdb_path_chains A, B # Space after comma
--pdb_path_chains "A,B" # Quotes may cause issues
アミノ酸バイアス
# Bias toward certain AAs (positive = favor)
--bias_AA_jsonl '{"A": {"A": 1.5, "W": -2.0}}'
# Omit specific AAs globally
--omit_AAs "CM" # No cysteine or methionine
# Per-position omission
--omit_AA_jsonl '{"A": {"1": "C", "2": "CM"}}'
マルチチェーン設計
# Design chains A and B together
--pdb_path_chains A,B
# Tie chains (same sequence)
--tied_positions_jsonl tied.jsonl
バリアントの比較
| バリアント | 用途 | 主な違い |
|---|---|---|
| ProteinMPNN | 汎用 | オリジナルモデル |
| SolubleMPNN | 発現 | 可溶性タンパク質で学習 |
| LigandMPNN | 小分子 | リガンドを考慮したコンテキスト |
出力形式
output/
├── seqs/
│ └── backbone.fa # FASTA sequences
└── backbone_pdb/
└── backbone_0001.pdb # PDBs with designed sequence
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 # Design binder chain only
インターフェースの再設計
# Fix core, design interface
python protein_mpnn_run.py \
--pdb_path complex.pdb \
--fixed_positions_jsonl core_positions.jsonl \
--num_seq_per_target 32
マルチステート設計
# Design for multiple conformations
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
Loading model weights...
Designing sequences for backbone.pdb
Generated 8 sequences in 2.3 seconds
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(低いほど信頼度が高い)
- 配列回復率:de novo の場合は0.3〜0.6、再設計の場合は0.7〜0.9
- temp > 0.1 の場合、多様な配列(すべて同一ではない)
判断ツリー
Should I use ProteinMPNN?
│
├─ Have a backbone structure?
│ ├─ Yes → Continue below
│ └─ No → Use RFdiffusion first
│
├─ What's in the binding site?
│ ├─ Nothing / protein only → ProteinMPNN ✓
│ ├─ Small molecule / ligand → Use LigandMPNN
│ └─ Metal / cofactor → Use LigandMPNN
│
├─ Priority?
│ ├─ Solubility/expression → Consider SolubleMPNN
│ ├─ Speed → ProteinMPNN ✓
│ └─ AF2 optimization → Consider ColabDesign
│
└─ Need fixed positions?
├─ Yes → Use --fixed_positions_jsonl
└─ No → ProteinMPNN ✓ (design all)
一般的なパフォーマンス
| キャンペーン規模 | 所要時間(T4) | コスト(Modal) | 備考 |
|---|---|---|---|
| 100バックボーン × 8配列 | 15-20 min | ~$2 | 標準 |
| 500バックボーン × 8配列 | 1-1.5h | ~$8 | 大規模キャンペーン |
| 1000バックボーン × 16配列 | 3-4h | ~$18 | 包括的 |
スループット:T4 GPU で約50〜100配列/分。
検証
grep -c "^>" output/seqs/*.fa # Should match backbone_count × num_seq_per_target
トラブルシューティング
配列の多様性が低い:sampling_temp を0.2〜0.3に上げてください 回復率が低い:sampling_temp を0.1に下げてください OOM エラー:batch_size を小さくしてください 不要なシステイン:--omit_AAs "C" を使用してください
エラーの解釈
| エラー | 原因 | 対処方法 |
|---|---|---|
RuntimeError: CUDA out of memory | タンパク質が長い、またはバッチが大きい | batch_size を小さくするか、より大きな GPU を使用してください |
KeyError: 'A' | PDB にチェーンがありません | PDB ファイルのチェーン ID を確認してください |
JSONDecodeError | JSONL 形式が無効です | JSON 構文を検証してください(よくある間違いを参照) |
IndexError: list index | チェーンまたは残基リストが空です | PDB に HEADER だけでなく原子が含まれていることを確認してください |
次:検証のための構造予測 → フィルタリングには protein-qc を使用してください。
コメント
Markdown 対応