irc(固有反応座標)¶
irc サブコマンドは、最適化した遷移状態(TS)から、EulerPC(Euler 予測子–修正子法)で固有反応座標(IRC)を両方向へたどります。各分岐の軌跡と、2 つの端点の候補を書き出します。この端点を opt で最適化すると、TS がどの反応物(R)と生成物(P)をつなぐかが分かります。
主な用途¶
TS の確認:
tsoptで得た TS が、意図した R と P をつなぐかを確かめるR と P の取得: 端点を
optで最適化し、この TS の R と P の構造を得るallの IRC 段のやり直し:allの IRC を、設定を変えて単独でたどり直す
デフォルトの計算バックエンドは、Meta が公開した学習済みの機械学習原子間ポテンシャル(MLIP)の UMA です。-b/--backend で ORB、MACE、AIMNet2、DFT も選べます。
基本的な実行例¶
1. 両方向の IRC¶
TS から両方向へたどり、--out-json で結果の要約も書き出します。
pdb2reaction irc -i ts.pdb -q 0 -m 1 --out-json --out-dir ./result_irc
端点の候補は finished_first.xyz と finished_last.xyz です。
2. 順方向だけ、大きいステップ¶
順方向の分岐だけを、最大ステップ 0.2 bohr でたどります。
pdb2reaction irc -i ts.pdb -q 0 -m 1 --no-backward --step-size 0.2 --out-dir ./result_irc_forward
3. 解析 Hessian¶
最初の Hessian を、有限差分ではなく解析的に計算します。
pdb2reaction irc -i ts.pdb -q 0 -m 1 --hessian-calc-mode Analytical --out-dir ./result_irc_analytical
4. 小さいステップでの再試行¶
分岐が数フレームで止まるときは、最大ステップを 0.05 bohr にして再試行します。
pdb2reaction irc -i ts.pdb -q 0 -m 1 --step-size 0.05 --out-dir ./result_irc_small_step
5. サイクルの上限までたどる¶
--never-stop を付けると、勾配とエネルギーによる停止の条件を無視し、各分岐を --max-cycles までたどります。
pdb2reaction irc -i ts.pdb -q 0 -m 1 --step-size 0.05 --never-stop \
--max-cycles 250 --out-dir ./result_irc_continue
処理の仕組みと計算仕様¶
出発の方向: TS で Hessian を計算するか
--read-hessのファイルから読み、剛体運動をfreqと同じように除いてから、--root番目の固有ベクトル(0が最小の固有値)を反応モードとします。そのモードが虚振動でなければ、エラーで止まります。EulerPC による積分: 各分岐(順方向、次に逆方向)は TS から始まります。各ステップでは、質量加重の最急降下方向に沿って Euler 予測子で進みます。予測子の勾配は、Bofill 式で更新する現在の Hessian を使った 2 次の Taylor 展開で見積もります。続いて、DWI(距離加重補間)面の上で、改良型の Bulirsch–Stoer 法による修正子をかけます。分岐は、TS の近くを出た後に RMS 勾配が 1 × 10⁻³ hartree/bohr を下回ったとき、エネルギーが上がったとき、1 ステップのエネルギー変化が 1 × 10⁻⁶ hartree 以下になったとき、または
--max-cyclesに達したときに止まります。経路の書き出し: 各分岐、TS を通る経路全体、その経路の両端の構造を書き出します。PDB/mmCIF の入力では、軌跡を PDB にも変換します。
IRC の成否の判定¶
IRC が収束しなくても、端点を opt で最適化して狙った R と P に着けば、その結果は使えます。
確かめること |
見る場所 |
|---|---|
出発点が TS か |
端末の |
各分岐の止まり方 |
|
経路に沿って変わる結合 |
|
どちらの端が R でどちらが P か |
|
result.json の scientific_status の success(終了コード 0)は、各分岐の止まり方によらず、積分がエラーなく終わったことを示します。irc は端点を判定しないので、端点が狙った R と P かは自分で確かめてください。
端点が意図した R と P でないときは、TS が取れないとき を参照してください。
主な出力ファイル¶
実行が終わると、--out-dir に次のファイルができます。
result_irc/
├─ finished_irc_trj.xyz # IRC 経路全体:順方向の端 → TS → 逆方向の端
├─ finished_irc.pdb # 同じ経路の PDB(PDB/mmCIF 入力)
├─ finished_first.xyz # 最初のフレーム:順方向の端(--no-forward では TS)
├─ finished_last.xyz # 最後のフレーム:逆方向の端(--no-backward では TS)
├─ {forward,backward}_{first,last}.xyz # 各分岐の両端
├─ forward_irc_trj.xyz # 順方向の分岐(実行したとき)
├─ forward_irc.pdb # 同じ分岐の PDB(PDB/mmCIF 入力)
├─ backward_irc_trj.xyz # 逆方向の分岐(実行したとき)
├─ backward_irc.pdb # 同じ分岐の PDB(PDB/mmCIF 入力)
└─ result.json # 結果の要約(--out-json)
mmCIF の入力と、PDB の欄に入りきらない大きな PDB の入力では、元の識別子を保った .cif も書きます。
端点の候補:
finished_first.xyzとfinished_last.xyzをoptで最適化します。各分岐の両端のうち、forward_first.xyzとbackward_last.xyzは TS から遠い端、forward_last.xyzとbackward_first.xyzは TS からの最初のステップです。経路:
finished_irc_trj.xyzかfinished_irc.pdbを PyMOL や VMD で開くと、反応の動きを見られます。要約:
--out-jsonを付けると、result.jsonに各分岐のフレーム数、各分岐の止まり方、bond_changes、両端と TS のエネルギーが記録されます。ファイル名の接頭辞: YAML で
irc.prefix: trialとすると、軌跡と構造のファイルの名前がtrial_で始まります。result.jsonのfilesにも接頭辞つきの名前が記録されます。端末: 各分岐のステップの表と実行時間が出ます。-v 3 では、実際に使った
geom・calc・ircの設定も出ます。
主な CLI オプション¶
オプション |
引数の型 |
デフォルト |
説明 |
|---|---|---|---|
|
パス |
(必須) |
TS の構造( |
|
整数 |
|
系全体の総電荷。 |
|
文字列 |
|
リガンドの総電荷(例: |
|
整数 |
|
スピン多重度(2S+1) |
|
文字列 |
|
バックエンド( |
|
整数 |
|
分岐ごとの IRC ステップの上限 |
|
実数 |
|
最大ステップ長(bohr、質量加重しない Cartesian 座標) |
|
フラグ |
|
勾配とエネルギーによる停止の条件を無視し、 |
|
フラグ |
|
順方向の分岐を実行 |
|
フラグ |
|
逆方向の分岐を実行 |
|
整数 |
|
反応モードとする Hessian の固有ベクトル。固有値の昇順に 0 から数える |
|
|
|
最初の Hessian の計算方法 |
|
パス |
|
Hessian を計算せず、 |
|
フラグ |
|
キャップ水素の親原子を固定(PDB/mmCIF 入力または |
|
フラグ |
|
結果の要約を |
|
パス |
|
出力先ディレクトリ |
全オプションは 自動生成のオプションの一覧(英語のみ) を参照してください。
補足: YAML(
--config)のircブロックのキーは、停止の閾値も含めて YAML 設定の一覧の irc にすべて載っています。
使用上の注意点¶
すぐ止まる分岐: 分岐が 3 フレーム以下で終わると、端末に
[irc] IRC stopped after only a few frames in …の警告が出ます。ステップが大きすぎると EulerPC が不安定になることがあるので、先に例 4 を試してください。--never-stopでも止まる場合:--never-stopを付けても、数値的な失敗や外部からの中断では止まります。軌跡を確かめて端点を最適化し、その先の経路が役に立つときだけ--max-cyclesを増やしてください。--rootは 0 から数える: TS 最適化が成功すると、反応モードの虚振動が 1 つ出るので、n_imag = 1 の TS では--root 0(ただ 1 つの負の固有値)のままにしてください。1、2などは、反応モードより固有値の小さい(より負の)疑似モードがあると分かっているときだけ使います。変えられない設定: YAML の
geom.coord_typeとcalc.return_partial_hessianにかかわらず、ircは Cartesian 座標と、動ける原子だけの Hessian を使います。--read-hessのファイル:freqと同じ.npyファイルです。irc.hessian_init: calc(デフォルト)が必要です。ファイルを使ったときは、result.jsonのrigid_projection.hessian_sourceが"file"になります。解析 Hessian と
--uma-workers: UMA では、--hessian-calc-mode Analyticalは 1 より大きい--uma-workersと併用できず、エラーで止まります。解析 Hessian には--uma-workers 1を使ってください。速度とメモリ量はバックエンド・モデル・系の大きさによって変わるので、先に対象の系で試してください。端点の最適化:
finished_first.xyzとfinished_last.xyzは.xyzだけで書かれるので、TS の PDB を--ref-pdbで渡し、キャップ水素の親原子を固定したまま最適化してください。pdb2reaction opt -i result_irc/finished_first.xyz --ref-pdb ts.pdb -q 0 -m 1 --out-dir ./result_opt_first pdb2reaction opt -i result_irc/finished_last.xyz --ref-pdb ts.pdb -q 0 -m 1 --out-dir ./result_opt_last
固定原子:
--freeze-linksに加えて、--freeze-atoms(1 始まり)でほかの原子も固定できます。除いた剛体運動と最初の Hessian は、result.jsonのrigid_projectionに記録されます。大きな系:
--hess-device cpuを付けると、最初の Hessian を CPU に置き、IRC の Hessian の演算も CPU で行って、GPU のメモリに収めます。分岐は少なくとも 1 つ:
--no-forwardと--no-backwardを両方付けると、エラーで止まります。
関連ドキュメント¶
tsopt — IRC の前に TS を最適化する
opt — IRC の端点を R と P へ最適化する
freq — 振動解析と熱化学補正
all —
tsoptの後に IRC を実行し、端点まで最適化する一連のワークフロートラブルシューティング — 実行が失敗したときの切り分け
YAML 設定の一覧 —
ircのすべての設定用語集 — IRC などの用語
終了コード — 終了ステータスの意味