irc¶
概要¶
要約: 遷移状態(TS)から反応物・生成物方向へ固有反応座標(IRC)を追跡します。デフォルトで前方・後方の両方向を実行します。VRAM に余裕がある場合は
--hessian-calc-mode Analyticalが推奨されます。
要点¶
入力: TS 構造(最適化・検証済みが望ましい)。
分岐: 既定で両方向(
--forward True,--backward True)。主要パラメータ:
--step-size(質量重み付き座標でのステップ長)、--max-cycles(ステップ数)。強制上書き: IRC はマージ後に
geom.coord_type = cartとcalc.return_partial_hessian = falseを強制します(YAML 設定より優先)。主な出力:
finished_irc.trjとforward_irc.trj/backward_irc.trj(参照 PDB があり変換が有効なら.pdbも生成)。
pdb2reaction irc は UMA を用いて EulerPC ベースの固有反応座標(IRC)積分を実行します。CLI は意図的にシンプルに設計されています。CLI に出ていないパラメータは YAML で明示的に指定することで、再現性のある実行が可能です。
XYZ/GJF 入力では --ref-pdb が参照 PDB トポロジーを提供し、XYZ 座標を保持したまま PDB 出力変換が可能になります。一般的な手順は tsopt → freq(虚数振動数が 1 つであることを確認)→ irc です。
使用法¶
pdb2reaction irc -i INPUT.{pdb|xyz|trj|...} [-q CHARGE] [--ligand-charge <number|'RES:Q,...'>] \
[--workers N] [--workers-per-node N] [-m 2S+1]
[--max-cycles N] [--step-size Δs] [--root k]
[--forward True|False] [--backward True|False]
[--freeze-links True|False]
[--out-dir DIR]
[--convert-files {True\|False}] [--ref-pdb FILE]
[--hessian-calc-mode Analytical|FiniteDifference]
[--args-yaml FILE]
例¶
# 順方向のみ、有限差分ヘシアン、大きいステップサイズ
pdb2reaction irc -i ts.xyz -q -1 -m 2 --forward True --backward False \
--step-size 0.2 --hessian-calc-mode FiniteDifference --out-dir ./irc_fd/
# PDB 入力: 完成軌跡と方向別軌跡もPDBとしてエクスポート
pdb2reaction irc -i ts.pdb -q 0 -m 1 --max-cycles 50 --out-dir ./result_irc/
ワークフロー¶
入力準備 –
geom_loaderがサポートする任意のフォーマットを受け入れます。参照 PDB が利用可能な場合(.pdb入力または--ref-pdb指定時)、EulerPC 軌跡はそのトポロジーで PDB に変換されます。--freeze-linksがリンク水素の親原子を凍結してgeom.freeze_atomsにマージします。設定マージ – デフォルト → CLI → YAML(
geom、calc、irc)。電荷/多重度は.gjfテンプレートがあれば継承し、.gjf以外では-q/--chargeが必須(PDB 入力または--ref-pdb付きXYZ/GJFに対する--ligand-chargeがある場合を除く)です。明示的な-qは常に優先され、多重度は省略時1がデフォルトです。IRC は常にgeom.coord_type = cartとcalc.return_partial_hessian = falseを強制します(YAML の設定に関わらず)。IRC積分 – EulerPCが
irc.forward/backward、irc.step_length、irc.rootに従って順方向/逆方向分岐を積分します。ヘシアンはUMA設定(calc.*、--hessian-calc-mode)に従い、更新スキーム(既定bofill)や再計算間隔を反映します。出力 – 軌跡(
finished、forward、backward)は.trjとして書き込まれ、参照 PDB が利用可能な場合は.pdbにもミラーリングされます。
CLI オプション¶
オプション |
説明 |
デフォルト |
|---|---|---|
|
|
必須 |
|
総電荷; YAML が |
テンプレート/導出が適用されない限り必須 |
|
|
None |
|
UMA予測器の並列度(workers > 1 で解析ヘシアン無効; |
|
|
スピン多重度(2S+1)。YAML が |
|
|
最大IRCステップ(YAML が |
|
|
質量重み付き座標でのステップ長(YAML が |
|
|
初期変位の虚数モードインデックス(YAML が |
|
|
順方向分岐を実行(YAML が |
|
|
逆方向分岐を実行(YAML が |
|
|
PDB 入力用、リンクH親を凍結( |
|
|
出力ディレクトリ(YAML が |
|
|
参照 PDB が利用可能な場合に XYZ/TRJ → PDB コンパニオンを出力するかどうか |
|
|
入力がXYZ/GJFの場合に使用する参照 PDB トポロジー |
None |
|
UMAヘシアンモード(YAML が |
|
|
YAML 上書き |
None |
出力¶
out_dir/ (デフォルト: ./result_irc/)
├─ <prefix>finished_irc.trj # 完全な IRC 軌跡
├─ <prefix>forward_irc.trj # 順方向分岐が実行された場合
├─ <prefix>backward_irc.trj # 逆方向分岐が実行された場合
└─ *.pdb # PDB 入力用の軌跡コンパニオン(変換有効時)
コンソールには確定済みの geom/calc/irc 設定と実行時間の要約が表示されます。
注意事項¶
CLIのブール値(
--forward,--backward)は、YAMLに反映させたい場合にTrue/Falseを明示して指定する必要があります。UMAはIRC全体で再利用されます。
step_lengthを大きくし過ぎると EulerPC が不安定になることがあります。VRAMが十分な場合は
--hessian-calc-modeをAnalyticalに設定することを強く推奨します。電荷/スピンは
.gjfテンプレートがあればそれを継承します。.gjf以外では、-q/--chargeが必須(PDB 入力または--ref-pdb付きXYZ/GJFに対する--ligand-chargeがある場合を除く)で、明示的な-qが常に優先されます。多重度は省略時に1がデフォルトです。--freeze-linksはPDB 入力にのみ適用され、リンク水素の親原子を凍結したままヘシアンを構築します。
YAML 設定(--args-yaml)¶
マッピング形式で指定します。YAML の値は CLI を上書きします。共通セクションについては YAML リファレンス を参照してください: PDB 入力では --freeze-links が geom.freeze_atoms にマージされ、--hessian-calc-mode とCLIの電荷/スピンが calc に反映されます。irc では geom.coord_type が cart に、calc.return_partial_hessian が false に強制されます(YAML/CLIより優先)。
irc キー(括弧内はデフォルト):
step_length(0.10),max_cycles(125): 主な積分制御(--step-size/--max-cycles)。downhill(False),forward(True),backward(True),root(0): 分岐選択と初期変位のroot(--forward,--backward,--root)。hessian_init("calc"),hessian_update("bofill"),hessian_recalc(null): ヘシアン初期化/更新サイクル。displ,displ_energy,displ_length: 変位生成の制御。通常はデフォルト推奨。収束閾値:
rms_grad_thresh(1.0e-3),hard_rms_grad_thresh(null),energy_thresh(1.0e-6),imag_below(0.0).出力/診断:
force_inflection(True),check_bonds(False),out_dir("./result_irc/"),prefix(""),max_pred_steps(500),loose_cycles(3),corr_func("mbs").
geom:
coord_type: cart # irc では cart に強制(YAML値は無視)
freeze_atoms: [] # 0-based frozen atoms merged with CLI/link detection
calc:
charge: 0 # total charge (CLI/template override)
spin: 1 # spin multiplicity 2S+1
model: uma-s-1p1 # UMA model tag
task_name: omol # UMA task name
device: auto # UMA device selection
max_neigh: null # maximum neighbors for graph construction
radius: null # cutoff radius for neighbor search
r_edges: false # store radial edges
out_hess_torch: true # request torch-form Hessian
freeze_atoms: null # calculator-level frozen atoms
hessian_calc_mode: FiniteDifference # Hessian mode selection
return_partial_hessian: false # irc では false に強制(完全ヘシアン)
irc:
step_length: 0.1 # integration step length
max_cycles: 125 # maximum steps along IRC
downhill: false # follow downhill direction only
forward: true # propagate in forward direction
backward: true # propagate in backward direction
root: 0 # normal-mode root index
hessian_init: calc # Hessian initialization source
displ: energy # displacement construction method
displ_energy: 0.001 # energy-based displacement scaling
displ_length: 0.1 # length-based displacement fallback
rms_grad_thresh: 0.001 # RMS gradient convergence threshold
hard_rms_grad_thresh: null # hard RMS gradient stop
energy_thresh: 0.000001 # energy change threshold
imag_below: 0.0 # imaginary frequency cutoff
force_inflection: true # enforce inflection detection
check_bonds: false # check bonds during propagation
out_dir: ./result_irc/ # output directory
prefix: "" # filename prefix
dump_fn: irc_data.h5 # IRC data filename
dump_every: 5 # dump stride
hessian_update: bofill # Hessian update scheme
hessian_recalc: null # Hessian rebuild cadence
max_pred_steps: 500 # predictor-corrector max steps
loose_cycles: 3 # loose cycles before tightening
corr_func: mbs # correlation function choice