freq(振動解析・熱化学計算)¶
freq サブコマンドは、層を定義した ML/MM の酵素モデルについて、調和振動数と、ゼロ点振動エネルギー(ZPE)・エンタルピー・ギブズ自由エネルギーなどの熱化学補正量を計算します。
主な用途¶
停留点の検証: 最適化された構造が極小点(n_imag = 0)か、遷移状態(TS、n_imag = 1)かを確認
熱化学量の算出: QRRHO(準剛体ローター・調和振動子)モデルに基づき、自由エネルギーなどの熱力学諸量を算出
振動モードの可視化: 虚振動(反応座標方向の運動)や特定モードの原子変位アニメーションを、酵素全体の
.xyz/.pdb/.cifとして出力
ML 領域の計算バックエンドのデフォルトは、Meta が公開した学習済みの機械学習原子間ポテンシャル(MLIP) の UMA です。-b/--backend で ORB、MACE、AIMNet2、DFT も選択可能です。MM 領域には --parm7 の Amber パラメータを使います。
基本的な実行例¶
以下の例では、complex.pdb が real.parm7 に対応する全系の構造、ml_region.pdb が ML 領域の定義です。
1. 最小構成での実行(電荷と多重度を明示)¶
mlmm freq -i complex.pdb --parm7 real.parm7 --model-pdb ml_region.pdb \
-q 0 -m 1 --out-dir ./result_freq
端末の熱化学の要約に出る Number of Imaginary Freq = N の N が n_imag です。
2. 固定原子の追加と熱化学の詳細ファイルの出力¶
--freeze-atoms で固定 MM 層に加えて原子を固定し、--dump で熱化学の詳細ファイル thermoanalysis.yaml も出力します。
mlmm freq -i complex.pdb --parm7 real.parm7 --model-pdb ml_region.pdb \
-q 0 -m 1 --freeze-atoms "1,3,5,7" --dump --out-dir ./result_freq_phva
3. 解析 Hessian(Analytical)の指定¶
有限差分の変位幅による誤差を避けたい場合に指定します。速度とメモリ量はバックエンドと系によって変わるので、先に対象の系で両方を比べてください。
mlmm freq -i complex.pdb --parm7 real.parm7 --model-pdb ml_region.pdb \
-q 0 -m 1 --hessian-calc-mode Analytical --out-dir ./result_freq_analytical
処理の仕組みと計算仕様¶
層の読み込みと固定(PHVA): ML 領域を
--model-pdbから、可動 MM 層と固定 MM 層を入力 PDB の B-factor から読み込みます。振動解析に入れる原子は--active-dof-modeで選び、デフォルトのpartialは ML 領域と可動 MM 原子です。固定 MM 層と--freeze-atomsで指定した原子は固定したままです。Hessian の計算:
--hessian-calc-modeで、ML 領域の Hessian をFiniteDifference(有限差分、デフォルト)またはAnalytical(解析的)で計算します。--hess-deviceは、計算した Hessian を置いて対角化するデバイスを選びます。熱化学(QRRHO): 振動数に、ローター閾値 100 cm⁻¹ の QRRHO 法を適用し、ギブズ自由エネルギー補正(
G_corr)を算出します。端末の熱化学の要約に、G_corrとギブズエネルギーE + G_corr = G(E は電子エネルギー)が Hartree 単位で出ます。--dumpではthermoanalysis.yamlに、--out-jsonではresult.jsonのthermochemistryにも書き出します。固定原子があるときは、振動の項に PHVA の振動数を使います。G には、正の振動数による振動の項のほか、構造全体の並進と回転の項を常に含めます。点群と回転対称数は構造から自動で判定し、YAML のthermo.symmetry_numberで上書きできます。振動モードの書き出し: 低振動数側または虚振動側から順に、原子振動アニメーション(軌跡ファイル)を出力します。出力本数は
--max-write、並び順は--sortで指定します。
固定境界での剛体モード¶
固定原子が無いときは、振動ではない剛体運動(並進 3 つと回転 3 つ)の 6 つを取り除いてから振動数を出します。固定原子があるときは、すべての固定原子をその場に残す剛体運動だけを取り除きます。固定 MM 層を持つふつうの ML/MM モデルのように、一直線に並ばない固定原子が 3 つ以上あれば、取り除く剛体運動は 0 で、可動原子の振動モードはすべて残ります。固定原子が 1 つなら 3 つ(その原子のまわりの回転)、2 つなら 1 つ(2 原子を結ぶ軸まわりの回転)を取り除きます。
irc、tsopt の TS の振動数の確認と Dimer の向きの計算、opt・tsopt の --flatten(虚振動を除く処理)も、剛体運動を同じように扱います。--out-json を付けると、取り除いた剛体運動の数と使った Hessian が result.json の rigid_projection に記録されます(JSON 出力の一覧)。
振動数の出力と判定基準¶
frequencies_cm-1.txt と JSON の記録での扱いは次のとおりです。
項目 / パラメータ |
基準値・挙動 |
説明 |
|---|---|---|
虚振動の表示 |
負の値(ν < 0 cm⁻¹) |
虚振動モードは負の振動数として表記されます。 |
虚振動の判定閾値 |
ν < −5.00 cm⁻¹ |
このモードを虚振動(n_imag。JSON の欄は |
微小な負のモード |
−5.00 ≤ ν < 0 cm⁻¹ |
数値誤差による微小な負モードは n_imag に数えません。 |
熱化学計算での扱い |
反転・フロア処理なし |
虚振動数の反転や微小正振動数の底上げ(floor)は行いません。QRRHO は正の振動数のモードだけを使うので、虚振動モードは ZPE と G に入りません。 |
主な出力ファイル¶
実行が終わると、--out-dir に次のファイルができます。
result_freq/
├─ frequencies_cm-1.txt # 全振動数のリスト(cm⁻¹)
├─ mode_0001_-385.20cm-1_trj.xyz # 振動モードごとの変位アニメーション(XYZ)
├─ mode_0001_-385.20cm-1.pdb # PDB 形式の変位アニメーション
├─ mode_0001_-385.20cm-1.cif # mmCIF 形式の変位アニメーション(mmCIF 入力または大きな PDB 入力のとき)
├─ thermoanalysis.yaml # 熱化学の詳細ファイル(--dump 指定時)
└─ result.json # 結果の要約(--out-json 指定時)
極小か TS か: 端末の熱化学の要約に出る
Number of Imaginary Freq = Nの N が n_imag です。freqはこの値を判定しないので、result.jsonのscientific_statusは n_imag によらずsuccessです。極小は n_imag = 0 です。TS 最適化が成功すると、反応モードの虚振動が 1 つ出ます。frequencies_cm-1.txtの先頭に有意な虚振動(負の値)が1 つだけあり、2 番目以降が正の値(または許容誤差内)であれば TS で、次はircに進みます。極小のはずの構造に虚振動が出たらoptの--flattenで最適化し直し、TS に虚振動が無いか 2 つ以上あるときは TS が取れないとき を見てください。可視化: 生成された
mode_*_trj.xyzや.pdbを PyMOL や VMD などの分子ビューアで開くと、原子が振動するアニメーションを確認できます。
主な CLI オプション¶
ML/MM の計算コマンドに共通のオプションは ML/MM の共通オプション に 1 か所でまとめてあります。下の表は freq に固有のものだけです。
オプション |
引数の型 |
デフォルト |
説明 |
|---|---|---|---|
|
パス |
(必須) |
|
|
整数 |
|
ML 領域の電荷。 |
|
整数 |
|
ML 領域のスピン多重度(2S+1) |
|
文字列 |
|
未知のリガンドの総電荷、または残基名ごとの電荷(例: |
|
パス |
|
出力先ディレクトリ |
|
文字列 |
|
ML 領域の計算バックエンド( |
|
|
|
ML 領域の Hessian の計算法(有限差分 / 解析的) |
|
|
|
計算した Hessian を置いて対角化するデバイス。 |
|
|
|
解析に入れる原子: 全原子 / ML 領域だけ / ML 領域と可動 MM 原子 / 固定層以外のすべての原子 |
|
文字列 |
|
追加で固定する原子インデックス(1 始まり、カンマ区切り: 例 |
|
パス |
|
Hessian を計算せず、 |
|
パス |
|
Hessian を |
|
整数 |
|
アニメーション出力する振動モードの最大数 |
|
|
|
モードの並び順(値順 / 絶対値順) |
|
浮動小数点数 |
|
熱化学計算の温度(K) |
|
浮動小数点数 |
|
熱化学計算の圧力(atm) |
|
フラグ |
|
熱化学の詳細ファイル( |
|
フラグ |
|
結果要約を |
全オプションは 自動生成のオプションの一覧(英語のみ) を参照してください。
使用上の注意点¶
tsoptとの使い分け:tsoptも最後に虚振動を数えます。詳しい熱化学量(ZPE、ギブズエネルギー)やモードのアニメーションが要るときにfreqを単独で実行します。全原子固定の禁止: すべての原子を固定すると、解析する振動が無いのでエラーで止まります。
Hessian モードの優先度:
--hessian-calc-modeは、デフォルト < YAML < コマンドラインの順に優先されます。解析 Hessian と
--uma-workers: UMA で--uma-workers(MLIP の並列ワーカー数)を 2 以上にすると、--hessian-calc-mode Analyticalは使えずエラーで停止します。解析 Hessianには--uma-workers 1を指定してください。all --thermoの熱化学ファイル:allはthermoanalysis.yamlからギブズエネルギーの図を作るので、--thermoで実行すると、そのfreqの段は--no-dumpを指定してもこのファイルを書き出します。--read-hess・--dump-hessのファイル:numpy.saveで書いた配列 1 つで、中身は質量重み付けなしの Cartesian の Hessian(Hartree/bohr²)です。原子は入力の順で、全原子の 3N×3N か、--active-dof-modeで選んだ原子の分か、Hessian の計算に入る原子の分だけを持ちます。--read-hessは、正方・有限・対称で、この 3 つの大きさのどれかであることしか確かめないので、同じ構造・電荷・多重度・層・計算設定で求めた Hessian を渡してください。
関連ドキュメント¶
opt — 極小点への構造最適化
tsopt — 遷移状態(TS)の構造最適化
irc — 遷移状態からの固有反応座標(IRC)追跡
dft — 構造に対する高精度な DFT 一点エネルギー計算
all — モデル作成・経路探索・TS 最適化・振動解析を一貫実行するワークフロー
YAML 設定の一覧 — 設定ファイルの記法
トラブルシューティング — 異常終了時の原因切り分けと対処法
終了コード — 終了コードの意味