path-opt(2 構造間の MEP 探索)¶
path-opt は、反応物と生成物の 2 つの層付き酵素構造の間の最小エネルギー経路(MEP)を、系全体に ML/MM 計算機を使って GSM(Growing String Method、デフォルト)または DMF(Direct Max Flux)で 1 回だけ求めます。R と P をつなぐ構造変化のトラジェクトリと、最もエネルギーの高いイメージ(HEI)を TS 候補として書き出します。
主な用途¶
R と P からの最初の MEP: 2 つの端点構造から、再帰的な精密化なしで経路とエネルギープロファイルを得る
tsoptに渡す TS 候補:hei.pdb(またはhei.xyz)をtsoptの初期構造にするGSM と DMF の比較: 同じ 2 構造を
--mep-mode gsmと--mep-mode dmfで計算し、経路を見比べる
ML 領域の計算にはデフォルトの UMA(Meta)を使います。残りの部分は --parm7 の Amber 力場で計算します。3 つ以上の構造を一度に入力したいときは、all の Endpoint モード を使ってください。R と P の間にありうる中間体を自動で検知できるか試したいなら、path-search を使うとよいでしょう。
基本的な実行例¶
1. 2 つの端点からの実行¶
反応物と生成物を 1 つの -i の後に並べ、ML 領域の電荷とスピン多重度を明示します。reactant.pdb と product.pdb は real.parm7(Amber のトポロジー)に対応する全系の構造で、ml_region.pdb はそのうちの ML 領域を指定します。
mlmm path-opt -i reactant.pdb product.pdb --parm7 real.parm7 --model-pdb ml_region.pdb \
-q 0 -m 1 --out-json --out-dir ./result_path_opt
端末に [write] Wrote '…/hei.xyz' で始まる行が出れば、TS 候補が書き出されています。result.json の scientific_status には、指定した段(端点の事前最適化と MEP)がすべて収束すると success、そうでなければ partial か failed が入ります。barrier_kcal は最初のイメージを基準にした HEI のエネルギー、hei_index は経路上の HEI の位置です(下の「HEI の判定」を参照)。
2. 端点の事前最適化の上限を変える¶
両端点はデフォルトで事前最適化され、--preopt-max-cycles で各回のサイクル数の上限を変えられます。端点が最適化済みなら --no-preopt で省けます。
mlmm path-opt -i reactant.pdb product.pdb --parm7 real.parm7 --model-pdb ml_region.pdb \
-q 0 -m 1 --preopt-max-cycles 20000 --out-dir ./result_path_opt_preopt
3. GSM の代わりに DMF を使う¶
DMF には cyipopt が必要です。この例では可動なイメージの数も減らしています。
mlmm path-opt -i reactant.pdb product.pdb --parm7 real.parm7 --model-pdb ml_region.pdb \
-q 0 -m 1 --mep-mode dmf --max-nodes 12 --out-dir ./result_path_opt_dmf
4. 短時間の確認(クライミングなし、少ないノード)¶
クライミングイメージ探索を省き、可動なイメージの数も減らして、経路の形をすばやく確かめます。
mlmm path-opt -i reactant.pdb product.pdb --parm7 real.parm7 --model-pdb ml_region.pdb \
-q 0 -m 1 --no-climb --max-nodes 8 --out-dir ./result_path_opt_quick
処理の仕組みと計算仕様¶
端点の準備: 各端点を事前最適化します(デフォルトは L-BFGS)。続いて固定原子(無ければ全原子)の Kabsch フィットで生成物を反応物に剛体で重ね合わせ、固定原子を少しずつ反応物側の位置へ動かしながら残りの原子を緩和します。固定原子は固定 MM 層と
--freeze-atomsで指定した原子を合わせたものです。経路の成長と精密化: GSM は 2 つの端点の間に
--max-nodes個の可動なイメージのストリングを成長させ、--thresh-gsmまで最適化します。--climb(デフォルト有効)では、続くクライミングイメージ探索で最も高いイメージを鞍点へ押し上げます。DMF は補間で作った経路を IPOPT(内点法の最適化ソルバー)で--dmf-tolまで最適化します。HEI の書き出し: 最終経路でエネルギーが最も高いイメージを HEI とし、コメント行にエネルギーを付けて
hei.xyzに書き出します。
HEI の判定¶
HEI の位置 |
意味 |
次の操作 |
|---|---|---|
経路の内側( |
TS 候補 |
|
端点( |
TS 候補ではない(端点の間に、高いほうの端点より上にあるイメージがない) |
端点を見直すか、別の方法で候補を作る(TS が取れないとき を参照) |
HEI は近似的な経路の頂点であり、TS そのものではありません。TS 最適化が成功すると、反応モードの虚振動が 1 つ出ます。tsopt で n_imag = 1 になり、その TS からの IRC が狙った R と P に着けば、HEI から TS が得られたことになります。
主な出力ファイル¶
--out-dir に次のファイルを書き出します。
result_path_opt/
├─ final_geometries_trj.xyz # 最終経路の全イメージ(コメント行にエネルギー)
├─ final_geometries.pdb # 同じ経路の PDB
├─ hei.xyz # HEI(TS 候補)。コメント行にエネルギー
├─ hei.pdb # 同じ HEI の PDB
├─ preopt/endNN/ # 端点の事前最適化のファイル(--preopt)
├─ align_refine/ # 端点の重ね合わせと緩和のファイル
├─ dmf_initial_trj.xyz # 補間で作った初期経路(DMF のときのみ)
├─ result.json # 結果の要約(--out-json)
└─ summary.json # result.json と同じ内容(--out-json 指定時)
経路は final_geometries_trj.xyz を開いて確かめてください。PDB ファイルの B-factor の列には層が入っている(ML 0、可動 MM 10、固定 MM 20)ので、tsopt には hei.pdb を同じ --parm7 と --model-pdb とともに渡してください。hei.xyz を渡すときは --ref-pdb を付けてください。mmCIF 入力 と、PDB の列に収まらない大きな PDB 入力では、元の識別子を保った .cif も書き出します。--no-convert-files では .xyz だけを書き出します。DMF では IPOPT のログ dmf_fbenm_ipopt.out と dmf_ipopt.out も書き出します。--dump を付けると、オプティマイザの軌跡も残します。
端末には MEP の進行状況がサイクルごとに、所要時間とともに出ます。
主な CLI オプション¶
ML/MM の計算コマンドに共通のオプションは ML/MM の共通オプション に 1 か所でまとめてあります。下の表は path-opt に固有のものだけです。
オプション |
引数の型 |
デフォルト |
説明 |
|---|---|---|---|
|
パス 2 つ |
(必須) |
反応物と生成物をこの順に 1 つの |
|
整数 |
|
ML 領域の電荷。 |
|
整数 |
|
スピン多重度(2S+1) |
|
文字列 |
|
リガンドの総電荷(例: |
|
文字列 |
|
ML 領域の計算バックエンド( |
|
パス |
|
出力先ディレクトリ |
|
|
|
経路の手法(Growing String Method / Direct Max Flux) |
|
|
|
DMF の計算バックエンド( |
|
整数 |
|
端点の間の可動なイメージの数。経路のイメージは全部で |
|
フラグ |
|
重ね合わせの前に各端点を事前最適化 |
|
整数 |
|
端点の事前最適化 1 回あたりの最大サイクル数 |
|
|
|
端点の事前最適化の最適化法: L-BFGS / RFO |
|
プリセット |
|
GSM のストリングの収束条件( |
|
文字列 |
|
DMF の経路の IPOPT の許容値: |
|
フラグ |
|
GSM のストリングの最適化の間、端点を固定する(DMF では使わない) |
|
フラグ |
|
経路の成長後に GSM のクライミングイメージ探索を行う(DMF では使わない) |
|
文字列 |
|
すべてのイメージで 固定する原子 の番号(1 始まり、カンマ区切り)。YAML の |
|
フラグ |
|
結果の要約を |
全オプションは 自動生成のオプションの一覧(英語のみ) を参照してください。
使用上の注意点¶
DMF では固定原子が少し動く: DMF は固定原子を固定せず、調和拘束(k = 300 eV/Ų、YAML の
dmf.k_fix)で保持するので、参照位置からわずかにずれることがあります。GSM では固定されたままです。原子の固定と距離の拘束 を参照してください。DMF には
cyipoptが必要:--mep-mode dmfを使う前に、詳細なインストール手順 の手順 2 のとおり PyTorch と一緒に conda-forge からインストールしてください。pydmfはmlmm-toolkitに同梱されています。デフォルトの--dmf-backend gpuは CUDA が使えないとエラーで停止します。その場合と GPU のメモリ不足のときは--dmf-backend cpuを指定してください。DMF で使われないオプション:
--climb・--fix-endsは、指定しても DMF では使われません。XYZ の端点のテンプレートは 1 つ:
--ref-pdbには全系の PDB を 1 つだけ指定し、両方の.xyz端点に使います。YAML のオプティマイザ設定の矛盾: 同じ YAML ファイルの中で、同じキーを
opt:と実際に動くオプティマイザの節(lbfgs:・opt.lbfgs:・stopt.lbfgs:、またはrfoの同等の節)とで別の値にすると、エラーで停止します。
関連ドキュメント¶
path-search — 2 つ以上の構造を通り、結合が変わる区間を精密化する MEP 探索
tsopt — HEI から TS を最適化
irc — TS が狙った R と P につながるかを確認
all — 一貫実行のワークフロー。MEP の段は
path-optを使い、--refine-pathでpath-searchに切り替えられますYAML 設定の一覧 —
gs・dmf・stoptの全設定用語集 — MEP、GSM、DMF、HEI などの用語
トラブルシューティング — 異常終了時の原因切り分けと対処法
終了コード — 終了コードの意味