MLIP の TS を DFT で確かめる¶
MLIP/MM で妥当な経路が見つかったら、その TS をそのまま DFT/MM での TS 構造最適化にもっていくことにも mlmm-toolkit は対応しています。TS 最適化 → IRC → 端点の最適化 → 振動数計算のワークフローを、GPU4PySCF を用いることで GPU で高速化された DFT 計算により実行可能です。DFT で計算するのは ML 領域だけで、周りのタンパク質は MM のままです。
主役は MLIP/MM による経路探索で、DFT/MM は MLIP/MM で見つけた TS 候補を確かめるための追加の機能です。
主な用途¶
TS を DFT/MM で詰める:ML 領域を DFT にして、TS 最適化 → IRC → 端点の最適化 → 振動数計算を実行します(
-b dft)。MLIP/MM の計算に DFT のエネルギーを足す:MLIP/MM で得た R・TS・P に DFT の一点計算を行います(
--dft)。1 構造の DFT 一点計算:DFT/MM のエネルギーとポピュレーション解析(
mlmm dft)、またはエネルギーと力(mlmm sp -b dft)を求めます。
処理の流れ¶
MLIP/MM で探す:経路を作り、条件を変えて試し、いちばん有望な TS 候補を選びます。
DFT/MM で詰める:その TS を入力にして、
-b dft付きの TS-only モードを実行します。MM のトポロジーと ML 領域は最初の計算のものを使い回します。確かめる:見る点は MLIP/MM のときと同じです。TS 最適化が成功すると、反応モードの虚振動が 1 つ出ます(log には
[Imaginary modes] n=1)。指定した段がすべて収束すると====== Pipeline summary ======の下にScientific status: successと出ます。IRC が収束しなくても、端点の最適化で狙った R と P に着けば、その結果は使えます。
基本的な実行例¶
1. 小さな ML 領域で MLIP/MM の探索を行う¶
DFT で扱える大きさの ML 領域で MLIP/MM の探索を行います。出力ディレクトリ result_all/ に、例 2 で使い回す TS・MM のトポロジー・ML 領域が入ります。
mlmm all -i 1.R.pdb 3.P.pdb -c 'SAM,GPP,MG' -l 'SAM:1,GPP:-3' \
-r 0 --selected-resn '44,63,186' --tsopt
-r 0 で切り出しの半径を 0 Å にすると、距離で近くの残基を足すのを止め、-c と --selected-resn の残基から ML 領域を組みます。examples/beza/ の同梱例の 44・63・186 番は、SAM のメチル炭素(CS1)にいちばん近い 3 残基です。同梱の PDB は chain の欄が空なので、残基は名前か番号で指定してください。自分の系では、反応に関わる残基を選んでください。
2. TS を DFT/MM で詰める¶
例 1 の TS を 1 つだけ入力にすると、TS-only モードになります。ts.pdb は全系の構造で、--parm7 と --model-pdb で例 1 のトポロジーと ML 領域を使い回すので、2 つの計算は同じ系を扱います。DFT 用の追加パッケージが要ります。
mlmm all -i result_all/segments/seg_01/ts.pdb \
--parm7 result_all/mm_parm/1.R.parm7 --model-pdb result_all/ml_region.pdb \
-l 'SAM:1,GPP:-3' --tsopt --thermo -b dft -o ./result_dft
seg_01 は最初の反応セグメントです。セグメントが複数あるときは、詰めたい段のものを選んでください。
ML 領域は 300 原子くらいまでに¶
-b dft では ML 領域全体を DFT で計算するので、リンク水素を含めて 300 原子くらいまでに収めます。
小さくする方法は ML 領域を小さくする を見てください。
-b dft と --dft の違い¶
オプション |
DFT で計算するもの |
使う場面 |
|---|---|---|
|
計算のすべて(MEP 探索、TS 最適化、IRC、端点の最適化、振動数)の ML 領域 |
TS 候補を DFT/MM で詰めて確かめる |
|
MLIP/MM で得た R・TS・P の一点計算( |
MLIP/MM の構造で DFT のエネルギーを得る |
-b dft は 11 のコマンドで使えます:all、opt、tsopt、irc、freq、scan、scan2d、scan3d、path-opt、path-search、sp。
主な出力ファイル¶
-b dft の出力の並びは、同じモードの MLIP/MM の計算と同じです(TS-only モードは期待される出力)。--dft を付けると、次のファイルが増えます。
ファイル |
内容 |
|---|---|
|
各状態の DFT 一点計算の結果 |
|
MLIP/MM の構造での DFT のエネルギー図 |
|
DFT のエネルギーに MLIP/MM の熱補正を足した図( |
|
全セグメントをまとめた同じ図(出力ディレクトリの直下) |
主な CLI オプション¶
オプション |
説明 |
デフォルト値 |
|---|---|---|
|
ML 領域を DFT で計算します(GPU4PySCF。 |
|
|
前の計算の MM のトポロジーと ML 領域を使い回します。省くと、 |
— |
|
汎関数と基底を |
|
|
|
|
|
R・TS・P に DFT の一点計算を足します( |
|
ほかの DFT のオプション(--dft-engine、--dft-low-memory/--no-dft-low-memory、--dft-nprocs、--dft-memory、SCF のチェックポイント)は all のオプションの一覧(英語のみ)にあります。
補足: YAML では、
-b dftの設定はcalc.dftに、--dftとmlmm dftの設定は最上位のdftに書きます。どちらでも、pyscfで PySCF のオブジェクトの名前ごとに属性を渡せます(例:収束しにくい SCF にmf: {level_shift: 0.2})。キーは YAML 設定の一覧にあります。
使用上の注意点¶
DFT 用の追加パッケージ:PyTorch のビルドが
cuda130ならpip install "mlmm-toolkit[dft]"、cuda129ならpip install "mlmm-toolkit[dft-cuda12]"で入れてください。詳しくは 詳細なインストール手順 の手順 7 を参照してください。GPU が無いときは--dft-engine cpuを付けてください。--parm7と--model-pdbを外さない:外すと、DFT/MM の計算は TS の構造からトポロジーを作り直し、ML 領域をその B-factor の層から取ります。parm7 の名前は例 1 の最初の入力から付きます(ここではmm_parm/1.R.parm7)。名前はresult_all/mm_parm/で確かめてください。電荷:ML 領域を小さくすると、ふつう ML 領域の電荷も変わります。DFT/MM を流す前に、例 1 の端末の出力の
Total active site model chargeを確かめてください。300 原子は目安:プログラム側に上限はありません。出力ディレクトリの
ml_region_with_linkH.xyzの 1 行目が、リンク水素を含む ML 領域の原子数です。組み合わせ:
-b dftと--dftは一緒に使えず、実行の始めにエラーで止まります。-b dftの計算の後に DFT の一点計算を足すときは、別のジョブでmlmm sp -b dftかmlmm dftを実行してください。--dftと--thermoには--tsoptが必要です。図のファイル名とキーの名前:
-b dftでも、図のファイル名はenergy_diagram_MLIP.pngとenergy_diagram_G_MLIP.png(--thermoのとき)、summary.jsonのブロックの名前はmlipとgibbs_mlipのままです。中身は DFT/MM の値で、図の題には DFT/MM と出ます。メモリとスレッド:
--dft-memoryの値は PySCF が使うホスト RAM で、GPU の VRAM ではありません。GPU のメモリが足りないときは ML 領域を小さくしてください。--dftでメモリが足りないときは、--dftを外してmlmm dftを別に実行してください。段階的なグリッド:
--scf-stepwise-grid(デフォルトは on)は、各実行の最初の SCF を、グリッドレベル 1・収束閾値 1e-6 でいったん収束させ、その密度から指定のグリッドと閾値で収束させます。2 回目以降の SCF は、これまでどおり前の密度から始めます。効果は系によって変わり、小さい系では少し遅くなることがあります。--no-scf-stepwise-gridで切れます。指定のグリッドレベルが 1 以下のときと、pyscf.grids.atom_gridでグリッドを直接指定したときは、段階化を行いません。粗い段階が収束しなかったときは、通常の SCF を行います。
関連ドキュメント¶
dft:DFT 一点計算とポピュレーション解析sp:任意のバックエンドでの一点のエネルギーと力クイックスタート: TS-only モード:
all --tsoptで TS 候補を確かめるML 領域と層の組み方:ML 領域を組む・小さくする・広げる
インストール:手順 7 で DFT 用の追加パッケージを入れる
MLIP バックエンド:バックエンドの選び方
トラブルシューティング:計算が失敗したとき