protein-structure-analysis について
BiopythonやPyMOLなどを使うタンパク質構造解析向けの推論スキルです。ツール選択、パラメーター、形式変換、解析時の注意点を案内します。
主な機能
- 01PDB/mmCIF解析の指針
- 02RMSD用原子の選択と対応付け
- 03結合ポケットの検出と表示
- 04接触・二次構造・角度の解析
- 05構造形式変換のルール
活用シーン
- 01タンパク質構造を比較してRMSDを計算
- 02リガンド結合ポケットの検出と可視化
- 03ドッキング用に構造をPDBQTへ変換
- 04ラマチャンドランプロットや接触マップの解析
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ awslabs/ hcls-agent-skills --skill protein-structure-analysisインストール後、Claude Code で/protein-structure-analysisを入力して読み込まれたか確認します。
詳細
タンパク質構造解析 — パイプラインスキル(最小限の足場)
概要
タンパク質構造タスク向けに、ツール選択のロジック、形式変換のルール、特定分野での注意点を追加します。エージェントはすでに Biopython/PyMOL の構文を把握しています。このスキルは、よくあるパラメーターやワークフローのミスを防ぎます。
使用方法
- PDB/mmCIF の解析、RMSD の計算、ポケットの検出、形式の変換を行う場合に有効化します
- ラマチャンドランプロット、接触マップ、B 因子解析、DSSP 割り当てを行う場合に有効化します
- 下流のドッキングに向けて構造を準備する場合(PDBQT エクスポート)に有効化します
主な概念
SMCRA 階層: Structure → Model → Chain → Residue → Atom。常に適切なレベルで反復処理してください。NMR ファイルには複数のモデルがあります。
Altloc: 空白以外のコード('A'、'B')で示される代替コンフォメーションです。幾何計算を行う前に、1 つに絞り込んでください。
fpocket の出力: 入力ファイルの隣ではなく、現在の作業ディレクトリに <basename>_out/ を書き込みます。ポケットはドラッガビリティスコア(0~1)順にランク付けされます。
判断ロジック
ツールの選択
| タスク | ツール | 主な考慮事項 |
|---|---|---|
| PDB/mmCIF の解析 | Biopython PDBParser/MMCIFParser | 常に QUIET=True を渡します |
| RMSD の重ね合わせ | Bio.PDB.Superimposer | 同じ長さの 1 対 1 対応する原子リストが必要です |
| 結合ポケットの検出 | fpocket CLI | クリーンな PDB(altloc と不要な HETATM を含まないもの)が必要です |
| ポケットの可視化 | PyMOL(ヘッドレスでは -cq) | ポケット選択には byres all within 5 of organic を使用します |
| 接触解析 | Bio.PDB.NeighborSearch | デフォルトのカットオフは 4.0 Å。原子ペアを返します |
| 二次構造 | Biopython 経由の DSSP | 新しいインストールではバイナリ名は mkdssp です |
| 形式:PDB→mmCIF | Bio.PDB.MMCIFIO | 座標の損失はありません |
| 形式:PDB→PDBQT | obabel -O out.pdbqt -xr | 先に水素を追加するには -xh を追加します |
| ラマチャンドラン | PPBuilder → get_phi_psi_list() | 末端は None を返すため、確認が必要です |
RMSD の種類の選択
| シナリオ | 使用する原子 | 備考 |
|---|---|---|
| 主鎖の比較 | Cα のみ | フォールド類似性の標準です |
| ループの柔軟性 | 主鎖すべて(N、Cα、C、O) | 局所的な偏差を捉えます |
| 結合部位の比較 | リガンドから 5 Å 以内の全原子 | 先に残基を選択する必要があります |
| 配列が同一 | 全原子 | 同じ長さの鎖にのみ有効です |
重要なパラメーター
| パラメーター | 値 | 変更する場合 |
|---|---|---|
| NeighborSearch のカットオフ | 4.0 Å | 水素結合では 3.5、疎水性相互作用では 5.0 |
| Superimposer の原子 | Cα | 全原子を使うのは配列が同一の場合のみ |
fpocket -m(最小アルファ球数) | 35(デフォルト) | 小さく浅いポケットでは 15 に下げます |
| DSSP バイナリ名 | mkdssp | 古いインストールでは dssp を使用します |
obabel -xr フラグ | 受容体モード | 柔軟なリガンドの PDBQT では省略します |
| PPBuilder と CaPPBuilder の比較 | PPBuilder | CaPPBuilder は Cα のみのトレースに限って使用します |
よくある間違い
-
誤り: PDB 内のモデルは 1 つだけだと思い込む → 正解: 必ず
structure[0]を使うか、モデルを反復処理します → 理由: NMR アンサンブルには多数のモデルがあり、そのまま反復処理すると想定外の原子に遭遇します -
誤り: ジオメトリ計算で altloc を無視する → 正解:
atom.get_altloc() in ('', 'A')でフィルタリングします → 理由: 重複した原子により、RMSD と二面角の計算が不正確になります -
誤り: 主鎖を対象としているのに、全原子の RMSD を計算する → 正解: フォールドを比較する場合は Cα に限定します → 理由: 側鎖によって RMSD が増大し、配列が完全には一致しない場合に対応付けが崩れます
-
誤り: Superimposer に長さの異なる原子リストを渡す → 正解: 残基番号で対応付けし、同じ長さの並行リストを作成します → 理由:
set_atoms()では厳密な 1 対 1 の対応が必要です -
誤り: PDBQT にエクスポートする前に水素を追加しない → 正解:
obabel -xhを実行してから-xr -O receptor.pdbqtを実行します → 理由: 結晶構造の PDB には水素原子が含まれていません。ドッキングのスコアリングには水素原子が必要です -
誤り: 主鎖の計算に HETATM や水を含める → 正解:
residue.id[0] == ' 'でフィルタリングします → 理由: ヘテロ原子と水によって、ファイ・プサイ角や主鎖 RMSD の計算が不正確になります -
誤り: None のファイ・プサイ角に
math.degrees()を使う → 正解:if phi is not None and psi is not Noneで確認します → 理由: 鎖の末端では None が返され、TypeError により処理がクラッシュします -
誤り:
dsspというデフォルトのバイナリ名を想定する → 正解:DSSP()にdssp='mkdssp'を渡します → 理由: 新しいバージョンのインストールではmkdsspしか提供されない場合があります -
誤り: fpocket の出力が入力ファイルの隣に生成されると思い込む → 正解: 対象ディレクトリから実行するか、実行後に出力を移動します → 理由: fpocket は入力ファイルの場所ではなく、現在の作業ディレクトリに出力します
-
誤り: パーサーで
QUIET=Trueを指定し忘れる → 正解:PDBParser(QUIET=True)を使います → 理由: 致命的ではない警告が標準出力に大量に表示され、実際のエラーが見えにくくなります
回答形式
- ユーザーが必要とするコマンドまたはコードを最初に提示し、その後で説明します
- 次の構成にします:入力の確認 → 動作するコード → 主なパラメーターの説明 → 注意点
- 各タスクにつき、完全に動作する例を 1 つ示します。すべての代替案は示しません
- コードコメントは必要最小限にして、実用的な内容にします
- 目安:コード 50~100 行と、それを補足する簡潔な説明