PDBQT-Safe: SMILES-to-docking-to-MD pipelines
Yi Wang (Fudan University) — preprint/venue 不詳, 2025 | DOI: なし
🎯 SMILES→ドッキング→MD の受け渡しで頻発する壊れたPDBQTとVinaの"静かな失敗"を、共有修復ステージで救済し、失敗を隠さずJSONに記録する統合・修復ツール
① 背景と課題

多くのグループは今なお SMILES→docking→MD を手作業のファイル前処理でつないでいる。AutoDock Vina は PDBQT 形式を要求するが、壊れた PDBQT は黙って失敗(silent failure)するか後段で遅れてクラッシュする。本研究は新しいスコアリングや生物学的機構の主張ではなく、その受け渡しを修復・統合するツール群である。

不正な RECORD 行 / 壊れた ROOT・BRANCH トルク木 / 誤った AD4 原子タイプ / 電荷・TORSDOF 不整合が Vina を静かに落とす
既存ツール(Open Babel / Meeko / MGLTools)は準備を担うが、失敗を隠さず記録し準備手法を同一グリッドで比較する仕組みは乏しい

→ 共有修復ステージ AdvancedPDBQTFixer / UltimatePDBQTGenerator を 3 ドライバに組み込み、Vina 投入前に必ず通す。表は JSON から完全再生成。

② パイプライン概要(3ドライバ)
SMILES / PDB

fpocket ポケット検出 + 任意生成(Pocket2Mol)

DILI トリアージ

AdvancedPDBQTFixer / UltimatePDBQTGenerator

AutoDock Vina (1.2.x)

ACPYPE → GROMACS MD
3 scripts
optimize_smiles2 / automated_workflow3 / ppi2dynamics16

protonation を保てば同一 compound ID を SMILES スクリプトから MD スクリプトへ引き回せる。--steps で選択実行。失敗は状態語彙(ok / vina_exit_1 / ligand_prep_failed / skipped / no_ligand_centroid)で JSON に記録。

③ 計算化学パイプライン連携
  • lib/docking: UniDockRunner 前処理に PDBQT 修復フック。silent failure を捕捉し状態語彙で集計
  • lib/docking: ProLIFCalculator と組み準備手法(curated/naive/fixer)アブレーションを実装
  • lib/md: RMSDAnalyzer / HBondAnalyzer を GROMACS MD 後段の軌道解析に接続。SMILES→GRO/TOP/XTC 系譜追跡
  • lib/molgen: MolgenYaml に CReM / mol_ga を統合、QED/SA/Lipinski をフィルタ条件に
実装ギャップ: PDBQT 修復・failure-aware Vina 集計・準備3アーム比較・MD 系譜 provenance が現行ライブラリに未実装
④ 主な結果 (a) Vina パース成功 — 準備手法の差 (n=54)
41 curated 1 naive OB 40 fixer arm 0 41 Vina がスコアを返した件数 / 54

prep 自体は naive OB でも 53/54 成功するが、その PDBQT を Vina が解釈できたのは わずか 1 件。RDKit-first(curated)で 41、修復アームで 40。Δ(curated−naive)=40

④ 主な結果 (b) 行ごとの状態ヒストグラム (n=55)
41 ok 11 vina_exit_1 1 skipped 1 no_centroid 1 prep_failed 0 41 case_benchmark_results.json の行状態

Vina 投入 54 回中 ok 41。失敗は vina_exit_1=11 が最多で、prep_failed・skipped・no_ligand_centroid が各 1。失敗を隠さずバケット化して記録する設計。

④ 主な結果 (c) RMSD と DILI パイロット

co-crystal との RMSD は pose が survive した 2 行のみで評価。それ以外は pose 品質の証明にならない。

0.737 Å
RMSD 平均(n=2 行、2/2 が <2 Å — 全 n に対してではない)
AUC 0.822
DILI パイロット ROC(n=21, 陽性6, PR AUC 0.728, 95%CI 0.556–1.000)
skipped
MD(GROMACS) / GNINA 比較:バイナリ未導入で JSON 空アーム

→ DILI は debug 用フックで、CI が広く外部検証なし。バイオマーカーとしての主張は不可と自認。

⑤ テイクホームメッセージ
  • PDBQT を修復してから Vina へ。同一グリッド比較で Vina パース成功 curated 41 vs naive OB 1(n=54)— 準備手法が成否を分ける
  • 3 ドライバが共有修復ステージを通し、SMILES→docking→MD を 1 つの compound ID で貫通(protonation 一貫が条件)
  • 失敗を隠さず 状態語彙つき JSON に記録(ok 41 / vina_exit_1 11 …, n=55)。表は JSON から完全再生成
  • 新スコアリングや機構主張ではなく integration/repair tooling。MD・GNINA・Meeko 比較・外部 DILI 検証は明示的に future work
限界: Vina 完走は一部行のみ、RMSD は 2 行、DILI は CI 過大。venue ラベル(Journal of Informetrics)は内容と不整合で要注意。