mcpField
D
diffdock

diffdock

github.com/crazymsnその他2335 回インストール22 週間前に更新
リポジトリ

diffdock について

diffdockは、小分子とタンパク質のドッキングを行う拡散モデルベースのツールです。構造ベース創薬やケミカルバイオロジー向けに結合ポーズと信頼度を予測し、結合親和性は予測しません。

主な機能

  1. 01小分子の結合ポーズ予測
  2. 02PDB、タンパク質配列、複数のリガンド形式に対応
  3. 03ドッキングのバッチ処理
  4. 04予測信頼度のスコア付け
  5. 05予測結果の分析とエクスポート

活用シーン

  1. 01タンパク質上のリガンドポーズ予測
  2. 02化合物ライブラリのバーチャルスクリーニング
  3. 03タンパク質構造ごとのドッキング結果の比較

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/crazymsn/academic-skills --skill diffdock

インストール後、Claude Code で/diffdockを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
batch_template.csv
custom_inference_config.yaml
references/
confidence_and_limitations.md
parameters_reference.md
workflows_examples.md
scripts/
analyze_results.py
prepare_batch_csv.py
setup_check.py

詳細

DiffDock: 拡散モデルによる分子ドッキング

概要

DiffDock は、拡散ベースの深層学習によるツールで、分子ドッキングを行います。低分子リガンドのタンパク質標的に対する3D結合ポーズを予測します。計算ドッキング分野における最先端の手法であり、構造ベースの創薬やケミカルバイオロジーにおいて重要な役割を果たします。

主な機能:

  • 深層学習を用いて、高い精度でリガンドの結合ポーズを予測
  • タンパク質構造(PDBファイル)または配列(ESMFold経由)をサポート
  • 単一の複合体または大規模なバーチャルスクリーニングのキャンペーンを処理
  • 予測の信頼性を評価するための信頼度スコアを生成
  • 多様なリガンド入力(SMILES、SDF、MOL2)に対応

重要な違い: DiffDock が予測するのは結合ポーズ(3D構造)と信頼度(予測の確実性)であり、結合親和性(ΔG、Kd)ではありません。親和性の評価には、必ずスコアリング関数(GNINA、MM/GBSA)と組み合わせてください。

このスキルを使用するタイミング

このスキルは、次のような場合に使用します。

  • 「このリガンドをタンパク質にドッキングして」または「結合ポーズを予測して」
  • 「分子ドッキングを実行して」または「タンパク質-リガンドのドッキングを行って」
  • 「バーチャルスクリーニング」または「化合物ライブラリをスクリーニングして」
  • 「この分子はどこに結合するか?」または「結合部位を予測して」
  • 構造ベースの創薬設計やリード最適化のタスク
  • PDBファイル+SMILES文字列またはリガンド構造を扱うタスク
  • 複数のタンパク質-リガンドペアのバッチドッキング

インストールと環境構築

環境の状態を確認する

DiffDock のタスクを始める前に、環境構築が正しいか確認してください。

# Use the provided setup checker
python scripts/setup_check.py

このスクリプトは、Pythonのバージョン、CUDA対応のPyTorch、PyTorch Geometric、RDKit、ESM、その他の依存関係を検証します。

インストールの方法

オプション1: Conda(推奨)

git clone https://github.com/gcorso/DiffDock.git
cd DiffDock
conda env create --file environment.yml
conda activate diffdock

オプション2: Docker

docker pull rbgcsail/diffdock
docker run -it --gpus all --entrypoint /bin/bash rbgcsail/diffdock
micromamba activate diffdock

重要な注意事項:

  • GPUの使用を強く推奨します(CPUと比べて10〜100倍高速)
  • 初回実行時に SO(2)/SO(3) のルックアップテーブルを事前計算します(約2〜5分)
  • モデルのチェックポイント(約500MB)は、存在しない場合に自動でダウンロードされます

主なワークフロー

ワークフロー1: 単一のタンパク質-リガンドドッキング

用途: 1つのリガンドを1つのタンパク質標的にドッキングします

入力の要件:

  • タンパク質: PDBファイルまたはアミノ酸配列
  • リガンド: SMILES文字列または構造ファイル(SDF/MOL2)

コマンド:

python -m inference \
  --config default_inference_args.yaml \
  --protein_path protein.pdb \
  --ligand "CC(=O)Oc1ccccc1C(=O)O" \
  --out_dir results/single_docking/

代替方法(タンパク質配列を使用):

python -m inference \
  --config default_inference_args.yaml \
  --protein_sequence "MSKGEELFTGVVPILVELDGDVNGHKF..." \
  --ligand ligand.sdf \
  --out_dir results/sequence_docking/

出力構造:

results/single_docking/
├── rank_1.sdf          # Top-ranked pose
├── rank_2.sdf          # Second-ranked pose
├── ...
├── rank_10.sdf         # 10th pose (default: 10 samples)
└── confidence_scores.txt
ワークフロー2: 複数の複合体のバッチ処理

用途: 複数のリガンドを複数のタンパク質にドッキングします。バーチャルスクリーニングのキャンペーンに使用します。

ステップ1: バッチ用CSVの準備

付属のスクリプトを使って、バッチ入力を作成または検証します。

# Create template
python scripts/prepare_batch_csv.py --create --output batch_input.csv

# Validate existing CSV
python scripts/prepare_batch_csv.py my_input.csv --validate

CSVの形式:

complex_name,protein_path,ligand_description,protein_sequence
complex1,protein1.pdb,CC(=O)Oc1ccccc1C(=O)O,
complex2,,COc1ccc(C#N)cc1,MSKGEELFT...
complex3,protein3.pdb,ligand3.sdf,

必須列:

  • complex_name: 一意の識別子
  • protein_path: PDBファイルのパス(配列を使用する場合は空欄のままにします)
  • ligand_description: SMILES文字列またはリガンドファイルのパス
  • protein_sequence: アミノ酸配列(PDBを使用する場合は空欄のままにします)

ステップ2: バッチドッキングの実行

python -m inference \
  --config default_inference_args.yaml \
  --protein_ligand_csv batch_input.csv \
  --out_dir results/batch/ \
  --batch_size 10

大規模なバーチャルスクリーニング(化合物100個超)の場合:

処理を高速化するために、タンパク質の埋め込みを事前に計算します。

# Pre-compute embeddings
python datasets/esm_embedding_preparation.py \
  --protein_ligand_csv screening_input.csv \
  --out_file protein_embeddings.pt

# Run with pre-computed embeddings
python -m inference \
  --config default_inference_args.yaml \
  --protein_ligand_csv screening_input.csv \
  --esm_embeddings_path protein_embeddings.pt \
  --out_dir results/screening/
ワークフロー3: 結果の分析

ドッキングが完了したら、信頼度スコアを分析し、予測を順位付けします。

# Analyze all results
python scripts/analyze_results.py results/batch/

# Show top 5 per complex
python scripts/analyze_results.py results/batch/ --top 5

# Filter by confidence threshold
python scripts/analyze_results.py results/batch/ --threshold 0.0

# Export to CSV
python scripts/analyze_results.py results/batch/ --export summary.csv

# Show top 20 predictions across all complexes
python scripts/analyze_results.py results/batch/ --best 20

この分析スクリプトは次の処理を行います。

  • すべての予測から信頼度スコアを読み取ります
  • High(>0)、Moderate(-1.5〜0)、Low(<-1.5)に分類します
  • 複合体内および複合体間で予測を順位付けします
  • 統計の要約を生成します
  • 後続の分析のために結果をCSVにエクスポートします

信頼度スコアの解釈

スコア範囲の理解:

スコア範囲信頼度レベル解釈
> 0高強い予測であり、正確である可能性が高い
-1.5 〜 0中妥当な予測であり、慎重に検証すること
< -1.5低不確かな予測であり、検証が必要

重要な注意点:

  1. 信頼度 ≠ 親和性: 信頼度が高いことは構造に関するモデルの確信度を意味するものであり、強い結合を意味するものではありません
  2. 文脈が重要: 以下の場合は期待値を調整してください:
    • 大きなリガンド(>500 Da): 信頼度が低くなることが想定されます
    • 複数のタンパク質鎖: 信頼度が低下する可能性があります
    • 新規のタンパク質ファミリー: 性能が十分に発揮されない可能性があります
  3. 複数のサンプル: 上位3〜5件の予測を確認し、コンセンサスを探してください

詳細なガイダンス: Read ツールを使用して references/confidence_and_limitations.md を読んでください

パラメーターのカスタマイズ

カスタム設定の使用

特定のユースケース向けにカスタム設定を作成します:

# Copy template
cp assets/custom_inference_config.yaml my_config.yaml

# Edit parameters (see template for presets)
# Then run with custom config
python -m inference \
  --config my_config.yaml \
  --protein_ligand_csv input.csv \
  --out_dir results/
調整すべき主要パラメーター

サンプリング密度:

  • samples_per_complex: 10 → 困難なケースでは 20〜40 に増やす
  • サンプル数を増やすと網羅性は向上しますが、実行時間が長くなります

推論ステップ:

  • inference_steps: 20 → 精度を高めるには 25〜30 に増やす
  • ステップ数を増やすと品質が向上する可能性がありますが、速度は低下します

温度パラメーター(多様性を制御):

  • temp_sampling_tor: 7.04 → 柔軟なリガンドでは増やす(8〜10)
  • temp_sampling_tor: 7.04 → 剛直なリガンドでは減らす(5〜6)
  • 温度が高いほど、より多様なポーズが生成されます

テンプレートで利用可能なプリセット:

  1. 高精度: サンプル数とステップ数を増やし、温度を下げる
  2. 高速スクリーニング: サンプル数を減らし、高速化する
  3. 柔軟なリガンド: ねじれ温度を上げる
  4. 剛直なリガンド: ねじれ温度を下げる

パラメーターの完全なリファレンス: Read ツールを使用して references/parameters_reference.md を読んでください

高度な手法

アンサンブルドッキング(タンパク質の柔軟性)

既知の柔軟性を持つタンパク質の場合、複数の立体構造にドッキングします:

# Create ensemble CSV
import pandas as pd

conformations = ["conf1.pdb", "conf2.pdb", "conf3.pdb"]
ligand = "CC(=O)Oc1ccccc1C(=O)O"

data = {
    "complex_name": [f"ensemble_{i}" for i in range(len(conformations))],
    "protein_path": conformations,
    "ligand_description": [ligand] * len(conformations),
    "protein_sequence": [""] * len(conformations)
}

pd.DataFrame(data).to_csv("ensemble_input.csv", index=False)

サンプリングを増やしてドッキングを実行します:

python -m inference \
  --config default_inference_args.yaml \
  --protein_ligand_csv ensemble_input.csv \
  --samples_per_complex 20 \
  --out_dir results/ensemble/
スコアリング関数との統合

DiffDock はポーズを生成します。親和性の評価には他のツールと組み合わせてください:

GNINA(高速なニューラルネットワークスコアリング):

for pose in results/*.sdf; do
    gnina -r protein.pdb -l "$pose" --score_only
done

MM/GBSA(より正確だが低速): エネルギー最小化の後に AmberTools MMPBSA.py または gmx_MMPBSA を使用します

自由エネルギー計算(最も正確): FEP/TI 計算には OpenMM + OpenFE または GROMACS を使用します

推奨ワークフロー:

  1. DiffDock → 信頼度スコア付きのポーズを生成
  2. 目視検査 → 構造的な妥当性を確認
  3. GNINA または MM/GBSA → 再スコアリングして親和性で順位付け
  4. 実験的検証 → 生化学アッセイ

制限事項と適用範囲

DiffDock の設計対象:

  • 低分子リガンド(通常 100〜1000 Da)
  • ドラッグライク有機化合物
  • 小さなペプチド(<20 残基)
  • 単一鎖または複数鎖のタンパク質

DiffDock の設計対象外:

  • 大きな生体分子(タンパク質–タンパク質ドッキング) → DiffDock-PP または AlphaFold-Multimer を使用
  • 大きなペプチド(>20 残基) → 代替手法を使用
  • 共有結合ドッキング → 専用の共有結合ドッキングツールを使用
  • 結合親和性の予測 → スコアリング関数と組み合わせる
  • 膜タンパク質 → 特に学習されていないため、注意して使用

制限事項の完全な一覧: Read ツールを使用して references/confidence_and_limitations.md を読んでください

トラブルシューティング

よくある問題

問題: すべての予測で信頼度スコアが低い

  • 原因: 大きい/特殊なリガンド、結合部位が不明確、タンパク質の柔軟性
  • 解決策: samples_per_complex を増やす(20〜40)、アンサンブルドッキングを試す、タンパク質構造を検証する

問題: メモリ不足エラー

  • 原因: バッチサイズに対して GPU メモリが不足している
  • 解決策: --batch_size 2 に減らす、または一度に処理する複合体の数を減らす

問題: 処理が遅い

  • 原因: GPU ではなく CPU で実行している
  • 解決策: python -c "import torch; print(torch.cuda.is_available())" で CUDA を確認し、GPU を使用する

問題: 非現実的な結合ポーズ

  • 原因: タンパク質の準備が不十分、リガンドが大きすぎる、結合部位が誤っている
  • 解決策: タンパク質に欠損残基がないか確認し、遠方の水分子を取り除き、結合部位の指定を検討する

問題: 「Module not found」エラー

  • 原因: 依存関係の不足、または誤った環境
  • 解決策: python scripts/setup_check.py を実行して診断する
パフォーマンスの最適化

最良の結果を得るために:

  1. GPU を使用する(実用には必須)
  2. 同じタンパク質を繰り返し使う場合は、ESM 埋め込みを事前計算する
  3. 複数の複合体をまとめてバッチ処理する
  4. まずデフォルトパラメータで開始し、必要に応じて調整する
  5. タンパク質構造を検証する(欠損残基を解消する)
  6. リガンドには正規 SMILES を使用する

グラフィカルユーザーインターフェース

対話的に利用する場合は、Web インターフェースを起動してください:

python app/main.py
# Navigate to http://localhost:7860

または、インストールせずにオンラインデモを利用することもできます:

リソース

ヘルパースクリプト(scripts/)

prepare_batch_csv.py: バッチ入力 CSV ファイルの作成と検証

  • 例のエントリを含むテンプレートを作成する
  • ファイルパスと SMILES 文字列を検証する
  • 必須列と形式の問題を確認する

analyze_results.py: 信頼度スコアの分析と予測のランク付け

  • 単一実行またはバッチ実行の結果を解析する
  • 統計的な要約を生成する
  • 後続の分析のために CSV にエクスポートする
  • 複合体全体で上位の予測を特定する

setup_check.py: DiffDock 環境のセットアップを検証

  • Python のバージョンと依存関係を確認する
  • PyTorch と CUDA の利用可否を検証する
  • RDKit と PyTorch Geometric のインストールをテストする
  • 必要に応じてインストール手順を提示する
リファレンスドキュメント(references/)

parameters_reference.md: パラメータの完全なドキュメント

  • すべてのコマンドラインオプションと設定パラメータ
  • デフォルト値と指定可能な範囲
  • 多様性を制御するための温度パラメータ
  • モデルのチェックポイントの場所とバージョンフラグ

ユーザーが次の内容を必要とする場合にこのファイルを読んでください:

  • パラメータの詳細な説明
  • 特定のシステムに対する微調整の指針
  • 代替のサンプリング戦略

confidence_and_limitations.md: 信頼度スコアの解釈とツールの制限

  • 信頼度スコアの詳細な解釈
  • 予測を信頼してよい場合
  • DiffDock の適用範囲と制限
  • 補完的なツールとの統合
  • 予測品質のトラブルシューティング

ユーザーが次の内容を必要とする場合にこのファイルを読んでください:

  • 信頼度スコアの解釈に関するヘルプ
  • DiffDock を使用すべきでない場合の理解
  • 他のツールとの組み合わせに関する指針
  • 検証戦略

workflows_examples.md: 包括的なワークフロー例

  • 詳細なインストール手順
  • すべてのワークフローのステップごとの例
  • 高度な統合パターン
  • よくある問題のトラブルシューティング
  • ベストプラクティスと最適化のヒント

ユーザーが次の内容を必要とする場合にこのファイルを読んでください:

  • コードを含む完全なワークフロー例
  • GNINA、OpenMM などの他のツールとの統合
  • バーチャルスクリーニングのワークフロー
  • アンサンブルドッキングの手順
アセット(assets/)

batch_template.csv: バッチ処理用のテンプレート

  • 必須列を備えた事前フォーマット済みの CSV
  • 異なる入力タイプを示す例のエントリ
  • 実際のデータでそのままカスタマイズできる

custom_inference_config.yaml: 設定テンプレート

  • すべてのパラメータに注釈を付けた YAML
  • 一般的な用途向けの 4 つのプリセット設定
  • 各パラメータを説明する詳細なコメント
  • そのままカスタマイズして利用できる

ベストプラクティス

  1. 大規模なジョブを開始する前に、必ず setup_check.py で環境を検証してください
  2. prepare_batch_csv.py でバッチ CSV を検証し、エラーを早期に検出してください
  3. まずはデフォルト設定で開始し、システム固有の要件に応じてパラメーターを調整してください
  4. 堅牢な予測のために複数のサンプル(10〜40 個)を生成してください
  5. 後続の解析の前に、上位のポーズを目視で確認してください
  6. アフィニティ評価のために、スコアリング関数と組み合わせてください
  7. 初期のランキングには信頼度スコアを使用し、最終的な判断には使用しないでください
  8. バーチャルスクリーニングのキャンペーンでは、埋め込みを事前計算してください
  9. 再現性のために、使用したパラメーターを文書化してください
  10. 可能な場合は、結果を実験的に検証してください

引用

DiffDock を使用する場合は、適切な論文を引用してください。

DiffDock-L(現在のデフォルトモデル):

Stärk et al. (2024) "DiffDock-L: Improving Molecular Docking with Diffusion Models"
arXiv:2402.18396

オリジナルの DiffDock:

Corso et al. (2023) "DiffDock: Diffusion Steps, Twists, and Turns for Molecular Docking"
ICLR 2023, arXiv:2210.01776

追加リソース

コメント