opt¶
概要¶
要約: L-BFGS(
--opt-mode grad、デフォルト)または RFO(--opt-mode hess)で単一構造を局所極小点に最適化します。必要に応じて--flattenで虚振動数モードフラット化を実行できます。
要点¶
想定場面: 単一構造(PDB/XYZ/GJF/
_trj.xyz)を局所極小点まで緩和したいとき。距離拘束や虚振動数モードのフラット化も任意で利用できます。手法: pysisyphus の L-BFGS(
--opt-mode grad、デフォルト)または RFOptimizer(--opt-mode hess)を MLIP バックエンド(デフォルト UMA、-bで ORB/MACE/AIMNet2)で駆動。PDB 入力では--freeze-linksによりリンク水素の親原子が自動凍結されます。主な出力:
final_geometry.xyz(常に出力)。--convert-files有効時は PDB 入力でfinal_geometry.pdb、Gaussian テンプレート時はfinal_geometry.gjfも出力。--dump有効時はoptimization_trj.xyz/optimization.pdb。opt.dump_restart設定時はリスタート YAML も出力。デフォルト値: バックエンド
uma、--opt-mode grad、--thresh gau、--max-cycles 10000、--bias-k 300、--freeze-links True、--convert-files True、--flatten False、--dump False、--out-dir ./result_opt/。次にやること: 極小であることを
freqで確認するか、鞍点にはtsopt、反応経路全体にはpath-search/allへ進んでください。
pdb2reaction opt は pysisyphus の LBFGS(lbfgs)または RFOptimizer(rfo)を用い、MLIP(デフォルト: UMA、-b/--backend で ORB・MACE・AIMNet2 も選択可能)のエネルギー・勾配・ヘシアンで単一構造を局所極小点へ最適化します。入力構造は .pdb、.xyz、_trj.xyz、その他 geom_loader がサポートする任意の形式に対応しています。設定の優先順位は デフォルト < config < 明示CLI です。
開始構造が PDB または Gaussian テンプレートの場合、最適化構造を .pdb(PDB 入力)や .gjf(Gaussian テンプレート)として自動的に書き出します(--convert-files/--no-convert-files で制御、デフォルトで有効)。
PDB 固有の便利機能:
--freeze-links(デフォルトTrue)でリンク水素の親原子を検出し、geom.freeze_atomsにマージします(1始まり)。出力変換では
final_geometry.pdb(および--dumpの場合はoptimization.pdb)を入力 PDBを参照して書き出します。 XYZ/GJF 入力では--ref-pdbで参照 PDB トポロジーを指定でき、XYZ 座標を保持したままフォーマット対応の PDB/GJF 出力変換が可能です。
Gaussian .gjf テンプレートは電荷/スピンのデフォルト値を提供し、変換が有効な場合に最適化構造を .gjf として自動出力します。
最小例¶
pdb2reaction opt -i input.pdb -q 0 -m 1 --out-dir ./result_opt
出力の見方¶
result_opt/final_geometry.xyzresult_opt/final_geometry.pdb(PDB 入力かつ変換有効時)result_opt/optimization_trj.xyz(--dump有効時)
よくある例¶
収束を厳しくして軌跡ダンプを保存する。
pdb2reaction opt -i input.pdb -q 0 -m 1 --thresh gau_tight --dump \
--out-dir ./result_opt_tight
距離拘束を 1 本だけ追加する。
# 原子 1-5 間を 2.0 Å に拘束。例では `--bias-k 20.0`(目標距離付近でゆるく誘導する弱い
# 拘束)を使っていますが、`bias.k` のデフォルトは 300 eV·Å⁻² です。最適化中に拘束を
# 支配的にしたい場合はデフォルト値の方が適しています。
pdb2reaction opt -i input.pdb -q 0 -m 1 \
--dist-freeze '[(1,5,2.0)]' --bias-k 20.0 --out-dir ./result_opt_rest
# 2-tuple 形式: 原子 1-5 間の距離を現在値に固定
pdb2reaction opt -i input.pdb -q 0 -m 1 \
--dist-freeze '[(1,5)]' --out-dir ./result_opt_freeze
RFO モードを明示して実行する。
pdb2reaction opt -i input.pdb -q 0 -m 1 --opt-mode hess \
--out-dir ./result_opt_hess
LBFGS モードで実行し、最適化後に虚振動数モードをフラット化する。
pdb2reaction opt -i input.pdb -q 0 -m 1 --opt-mode grad --flatten \
--out-dir ./result_opt_grad_flat
使用法¶
pdb2reaction opt -i INPUT.{pdb|xyz|trj|...} [-q CHARGE] [-l, --ligand-charge <number|'RES:Q,...'>] [-m MULT] \
[-b/--backend uma|orb|mace|aimnet2] [--solvent SOLVENT] [--solvent-model alpb|cpcmx] \
[--opt-mode grad|hess|lbfgs|rfo] [--flatten/--no-flatten] [--freeze-links/--no-freeze-links] \
[--dist-freeze '[(i,j,target_Å),...]'] [--one-based|--zero-based] \
[--bias-k K_eV_per_Ų] [--dump/--no-dump] [-o/--out-dir DIR] \
[--convert-files/--no-convert-files] [--ref-pdb FILE]
ワークフロー¶
オプティマイザー:
--opt-mode grad(alias:lbfgs、デフォルト)→ L-BFGS、--opt-mode hess(alias:rfo)→ RFOptimizer命名規則の注意: CLI は
grad|lbfgsおよびhess|rfoを受け付けます。YAML ではlbfgsまたはrfoを直接指定してください。Flatten loop:
--flattenを有効にすると、最適化後に虚振動数モードフラット化を実行します。optでは、各反復で検出された虚振動数モードをすべてフラット化し、虚振動数モードがなくなるか内部ループ上限に達するまで繰り返します。拘束:
--dist-freezeは Python リテラルタプル(i, j, target_Å)を解釈します(target_Åは目標距離、単位は Å)。3番目の要素を省略すると開始距離を拘束します。--bias-kはグローバル調和強度(eV·Å⁻²)を設定します。インデックスはデフォルトで1始まりですが、--zero-basedで0始まりに切り替えられます。電荷/スピン解決: 電荷の解決順序の詳細は CLI 規約: 電荷の指定 を参照してください。
凍結原子:
--freeze-linksが有効な場合、リンク水素の親原子は自動的に凍結されます(リンク水素と凍結原子 を参照)。ダンプ & 変換:
--dumpはopt.dump=Trueを反映しoptimization_trj.xyzを出力します。変換が有効な場合、PDB 入力では軌跡がoptimization.pdbとしても出力されます。opt.dump_restartを有効にするとリスタートYAMLが出力されます。終了コード: 終了コードは CLI 規約の 終了コード を参照。
CLI オプション¶
注記: 表示されているデフォルト値は、オプション未指定時に使用される値です。
オプション |
説明 |
デフォルト |
|---|---|---|
|
|
必須 |
|
総電荷。 |
テンプレート/導出が適用されない限り必須 |
|
残基別電荷マッピング(例: |
None |
|
MLIP予測器の並列度(workers > 1 で解析ヘシアン無効)。診断上の注意は workers > 1 による暗黙的な FD ダウングレード を参照。 |
|
|
ノードあたりのワーカー数。並列予測器に渡されます |
|
|
スピン多重度(2S+1)。 |
テンプレート/ |
|
調和拘束用の |
None |
|
|
|
|
すべての |
|
|
リンク水素の親原子の凍結を切り替え(PDB 入力のみ) |
|
|
凍結する原子の 1 始まりインデックスをカンマ区切りで明示的に指定(例: |
None |
|
最適化反復の上限 |
|
|
最適化モード: |
|
|
最適化後の虚振動数モードフラット化ループを有効/無効化 |
|
|
軌跡ダンプ( |
|
|
PDB 入力用の XYZ/TRJ → PDB コンパニオンおよび Gaussian テンプレート用の XYZ → GJF コンパニオンの出力を切り替え |
|
|
入力がXYZ/GJFの場合に使用する参照 PDB トポロジー |
None |
|
すべてのファイルの出力ディレクトリ |
|
|
収束プリセットの上書き( |
|
|
ベースYAML設定ファイル |
None |
|
実行前に解決済みYAMLレイヤ情報を表示 |
|
|
|
|
|
実行せずに設定検証と実行計画表示のみ行う。 |
|
|
MLIP バックエンド |
|
|
xTB 暗黙溶媒(例: |
|
|
xTB 溶媒モデル |
|
出力¶
out_dir/
├─ final_geometry.xyz # 常に出力
├─ final_geometry.pdb # 入力がPDBで変換が有効な場合のみ
├─ final_geometry.gjf # Gaussian テンプレートが検出され変換が有効な場合
├─ optimization_trj.xyz # ダンプが有効な場合のみ
├─ optimization.pdb # 軌跡のPDB変換(PDB 入力、変換有効時)
└─ restart*.yml # opt.dump_restart 設定時のリスタートファイル(任意)
コンソールには解決済みの geom/calc/opt/lbfgs/rfo ブロックとサイクル進行、総実行時間が出力されます。
設定の優先順位は CLI 規約: 設定の優先順位 を参照してください。
geom¶
coord_type("cart"): デカルト座標 vs"dlc"非局在化内部座標freeze_atoms([]): 1 始まりの凍結原子インデックス。CLI のリンク検出結果と自動的にマージされます
calc¶
MLIP バックエンド設定(
model、task_name、デバイス選択、近傍半径、ヘシアン形式など)charge/spinは CLI オプションに対応(.gjfがある場合はテンプレート値がデフォルト)
opt¶
LBFGSとRFOの両方で使用される共有オプティマイザー制御:
threshプリセット(Gaussian 系または Baker 系)。プリセットはpdb2reaction/opt.pyに記載されている力/ステップ閾値に変換されます。max_cycles、print_every(100)、min_step_norm(1e-8)、assert_min_step、収束切り替え(rms_forceなど)、RMSD ベースのconverge_to_geom_rms_thresh、overachieve_factor、check_eigval_structure、line_search。エネルギープラトーによるフォールバック収束(
energy_plateau、energy_plateau_thresh、energy_plateau_window)— 直近ステップのエネルギーレンジがフラット化した場合に収束を宣言します(MLIP の力のノイズで力ベース収束に到達できない場合に有効。下の注記を参照)。ダンプ/管理項目(
dump、dump_restart、prefix、out_dir)。
lbfgs¶
opt を L-BFGS 固有の設定で拡張: keep_last、beta、gamma_mult、max_step、control_step、double_damp、およびオプションの正則化パラメータ mu_reg/max_mu_reg_adaptions
rfo¶
opt を RFOptimizer 固有の設定で拡張: 信頼領域サイジング(trust_radius、trust_min、trust_max、trust_update)、max_energy_incr、ヘシアン管理(hessian_update、hessian_init、hessian_recalc、hessian_recalc_adapt、small_eigval_thresh)、マイクロイテレーション制御(alpha0、max_micro_cycles、rfo_overlaps)、DIISヘルパー(gdiis、gediis、閾値、gdiis_test_direction)、および adapt_step_func
opt 固有のデフォルト¶
opt サブコマンドは opt.out_dir(および lbfgs.out_dir / rfo.out_dir)を ./result_opt/ に設定します。
geom、calc、opt、lbfgs、rfo の完全な YAML スキーマは YAML リファレンス を参照してください。
Note
エネルギープラトーによるフォールバック収束 (v0.3.5 新機能)。 energy_plateau: true
のとき、直近 energy_plateau_window ステップのエネルギーレンジ(max − min)が
energy_plateau_thresh(デフォルト 1×10⁻⁴ au ≈ 0.06 kcal/mol、50 ステップ)を
下回ると、オプティマイザーは収束したと判定します。MLIP の力のノイズフロア
(~4×10⁻⁴ au)が力ベースの収束閾値(例: baker max_force = 3×10⁻⁴ au)を上回る
場合でも、無駄にサイクルを消費するのを防ぎます。chain-of-states オプティマイザー
(イメージごとのエネルギー配列を保持するもの)ではこのフォールバックはスキップされます。
関連項目¶
典型エラー別レシピ – 症状起点の切り分け
トラブルシューティング – 詳細な対処ガイド
tsopt — 極小ではなく遷移状態(鞍点)を最適化
freq — 最適化が極小に達したことを確認する振動解析
extract — 最適化前に活性部位モデル(バインディングポケット) PDB を生成
all — 端点を事前最適化する一気通貫ワークフロー
YAML リファレンス —
opt、lbfgs、rfoの完全な設定オプション用語集 — L-BFGS、RFOの定義