path-search(2 つ以上の構造を通る再帰的な MEP 探索)¶
path-search は、反応の順(R → … → P)に並べた 2 つ以上の構造を通る、1 本につながった最小エネルギー経路(MEP)を作ります。共有結合が変わる区間(セグメント)だけを再帰的に細かくし、各区間の経路は GSM(Growing String Method、デフォルト)または DMF(Direct Max Flux)で求めます。
主な用途¶
R → P を反応の区間に分ける: 反応が 1 段か多段かが分からないときに、結合が変わる区間を見つける
中間体を通る多段階の経路: R と P の間に既知の中間体を入れ、1 本につないだ経路を得る
区間ごとの TS 候補: 結合が変わる区間ごとに HEI(最もエネルギーの高いイメージ)を
hei_seg_NN.xyzに書き出し、tsoptに渡す
2 つの端点だけで再帰的な精密化が要らない場合は、path-opt のほうが簡単です。
基本的な実行例¶
1. 2 つの端点からの実行¶
反応物と生成物を 1 つの -i の後に並べ、電荷とスピン多重度を明示します。
pdb2reaction path-search -i reactant.pdb product.pdb -q 0 -m 1 --out-dir ./result_path_search
実行が終わったら summary.log の [2] Segment-level MEP summary の節を開くか、summary.json を読みます。scientific_status には、事前最適化とすべての経路の計算が収束すると success、そうでなければ partial か failed が入ります。segments には区間ごとの index・tag・kind・converged・barrier_kcal が並びます。kind は seg(反応区間)・kink(配座だけの変化)・bridge(短い接続経路)です。
2. 中間体を入れて多段階の経路を作る¶
構造を反応の順に 1 つの -i の後に並べます。隣り合う組ごとに探索し、得られた経路を 1 本につなぎます。
pdb2reaction path-search -i R.pdb IM1.pdb IM2.pdb P.pdb -q -1 -m 1 \
--out-dir ./result_path_search_multi
3. DMF と極小からの精密化¶
経路を DMF で作り、各 HEI のまわりを両側の最も近い極小から精密化します。
pdb2reaction path-search -i reactant.pdb product.pdb -q 0 -m 1 \
--mep-mode dmf --refine-mode minima --out-dir ./result_path_search_dmf
処理の仕組みと計算仕様¶
探索の前に、各入力を事前最適化し(--preopt)、1 つ前の構造に重ね合わせます(--align)。固定原子を少しずつ前の構造の位置へ動かしながら、残りの原子を緩和します。
隣り合う組ごとの粗い MEP: 隣り合う入力の組(A → B)ごとに、GSM または DMF で粗い MEP を作り、その HEI を求めます。
HEI のまわりの緩和:
--refine-mode peakでは HEI の両隣のイメージ(HEI ± 1)を、minimaでは HEI から外側へたどった両側の最も近い極小を最適化し、近くの 2 つの極小 End1 と End2 を得ます。--refine-modeを省くと、GSM ではpeak、DMF ではminimaになります。配座変化の区間(kink)か反応区間か: End1 と End2 の間で共有結合が変わらなければ、その区間は 配座変化の区間 とみなし、線形補間のノードを数個入れて 1 つずつ最適化します。結合が変われば 反応区間 とみなし、End1 と End2 の間に新しく GSM または DMF の経路を作って障壁をはっきりさせます。
結合の変化が残る区間だけを再帰: A → End1 と End2 → B の部分で結合の変化を調べ、変化が残る部分だけを、
--max-depthの階層まで探索し直します。区間をつなぐ: 得られた部分を 1 本の経路につなぎます。重なる端点は除き、隣り合う部分の端どうしで結合がまだ違えば、その間を新しい区間として探索します。それ以外のすき間は短い接続経路で埋めます。
結合が変わったかどうかは YAML の bond 節の閾値で決まり、判定の仕方は scan と同じです。
区間(セグメント)の判定¶
見えるもの |
意味 |
次の操作 |
|---|---|---|
結合が変わる区間と、その |
その段の TS 候補 |
|
|
階層の上限に達したか、配座変化の区間が続いたため、そこより先は分けていない |
複数の段を含むことがある。上と同じように確かめるか、 |
|
結合の変化が見つからないか、経路の端と端の間に頂点がない |
入力を見直すか、中間体を入れる(例 2) |
TS 最適化が成功すると、反応モードの虚振動が 1 つ出ます。各 HEI を tsopt(n_imag = 1)と IRC で確かめてから、機構の 1 段として扱ってください。
主な出力ファイル¶
--out-dir に次のファイルを書き出します。
result_path_search/
├─ mep_trj.xyz # つないだ MEP 全体(コメント行にエネルギー)
├─ mep_trj.pdb # 同じ経路の PDB(PDB・mmCIF 入力か --ref-pdb のとき)
├─ mep_plot.png # 経路に沿った ΔE(kcal/mol、反応物基準)
├─ energy_diagram_MEP.png # MEP の状態エネルギー図(反応物基準)
├─ summary.json # 区間ごとの障壁と分類の要約
├─ summary.log # 同じ要約のテキスト
├─ mep_seg_NN_trj.xyz # 反応区間 NN の経路
├─ hei_seg_NN.xyz # 反応区間 NN の HEI(TS 候補)
├─ hei_mode_seg_NN.* # その HEI での反応方向の推定。all が tsopt の --ref-mode に渡す(単独の tsopt では不要)
├─ mep_w_ref*.pdb, hei_w_ref_seg_NN.pdb # 全系に置いた経路と HEI(--write-ref-merge)
├─ align_refine/ # 入力の重ね合わせと緩和のファイル(--align)
└─ seg_NNN_*/ # GSM・DMF の実行ごとの作業ファイル
summary.json はほかのコマンドの result.json とは別の構造です。path-search と all の summary.json を参照してください。mep_seg_NN_* と hei_seg_NN.* は、結合が変わる区間にだけ書き出します。NN は summary.json の区間の index(最終経路の順に 01 から)で、seg_NNN のタグやディレクトリの NNN は GSM・DMF の実行を 000 から数えた番号なので、両者は一致しません。反応区間の作業ファイルは、summary.json のその区間の tag を名前にした <tag>_mep/(例: seg_000_refine_mep/)にあります。
PDB・mmCIF・.gjf 入力では、同じ名前でその形式のファイルも書き出します(全経路は mep.gjf)。mmCIF 入力 と、PDB の欄に入りきらない大きな PDB 入力では、元の識別子を保った .cif も書き出します。
主な CLI オプション¶
オプション |
引数の型 |
デフォルト |
説明 |
|---|---|---|---|
|
パス |
(必須) |
反応の順に並べた 2 つ以上の構造を 1 つの |
|
整数 |
|
系全体の総電荷。 |
|
整数 |
|
スピン多重度(2S+1)。 |
|
文字列 |
|
リガンドの総電荷(例: |
|
文字列 |
|
計算バックエンド( |
|
パス |
|
出力先ディレクトリ |
|
|
|
経路の手法(Growing String Method / Direct Max Flux) |
|
|
|
DMF の計算バックエンド( |
|
|
GSM では |
HEI のまわりの緩和のしかた(HEI ± 1 / 最も近い極小) |
|
整数 |
|
再帰的な分割の最大階層数。 |
|
整数 |
|
区間ごとの可動なイメージの数。区間のイメージは全部で |
|
フラグ |
|
探索の前に各入力を事前最適化 |
|
フラグ |
|
探索の前に各入力を 1 つ前の構造に重ね合わせる |
|
フラグ |
|
経路と HEI を全系のテンプレートに置いたファイル( |
|
パス |
|
|
|
パス |
|
|
|
フラグ |
|
キャップ水素の親原子を固定(PDB/mmCIF 入力のみ) |
|
フラグ |
|
反応区間で GSM のクライミングイメージ探索を行う。接続経路では常に行わない |
全オプションは 自動生成のオプションの一覧(英語のみ) を参照してください。
補足: YAML(
--config)では、--max-depthを指定しないときにsearch.max_depthが階層の上限になり、search.kink_max_nodes(デフォルト3)が配座変化の区間に入れるノードの数を、bond.bond_factor(デフォルト1.20)が結合の変化の判定に使う共有結合半径の倍率を決めます。
使用上の注意点¶
入力: 2 つ以上の構造を、同じ原子を同じ順に並べて与えてください。2 つ未満ではエラーで停止します。
--write-ref-mergeに必要なオプション:--alignか--ref-full-pdbが無いと、警告を出して*_w_ref*のファイルを書き出しません。--ref-pdbの数:--write-ref-mergeが有効なときは、--ref-pdbのファイル数が入力の数と違うとエラーで停止します。入力ファイルの保護: 決まった名前の出力(
mep_trj.*,mep_plot.png,energy_diagram_MEP.png,summary.json,summary.log)が入力ファイルを置き換えそうなときは、何も書き出す前に停止します。DMF と YAML の制限: path-opt の使用上の注意点 の DMF と YAML の注は、
--mep-mode dmfや--configを使うときにここでも当てはまります。区間は目安: 区間の分け方は結合距離による結合の判定にもとづく目安で、1 つの区間が 1 つの素過程であることも、TS をちょうど 1 つ含むことも保証しません。
関連ドキュメント¶
path-opt — 2 構造間の MEP を 1 回だけ求める
scan — 結合を段階的に動かして経路や TS 候補を作る
tsopt — 区間ごとの HEI から TS を最適化
extract — 入力に使う活性部位モデルの PDB を作る
all — 一気通貫ワークフロー。
all --refine-pathで MEP の段にpath-searchを使いますYAML 設定の一覧 —
search・bond・gs・dmfの全設定用語集 — MEP、GSM、DMF、HEI、配座変化の区間などの用語
トラブルシューティング — 異常終了時の原因切り分けと対処法
終了コード — 終了コードの意味