ML 領域と層の組み方¶
mlmm-toolkit は酵素の全体を計算します。基質の周りの ML 領域を MLIP で、残りのタンパク質を Amber の力場(MM)で扱います。計算の重さは 3 つで決まります。ML 領域の原子の数、動く MM 原子(可動 MM)の数、Hessian に入る原子の範囲です。このページでは、ML 領域と層の組み方、計算を軽くするための削り方、残基が足りないときの広げ方、原子の固定と距離の拘束をまとめます。
早見表¶
目的 |
すること |
節 |
|---|---|---|
デフォルトのモデルを組む |
|
|
重い計算の前に原子数と電荷を見る |
|
|
計算を軽くする |
ML 領域を小さくする、可動 MM の殻を薄くする、ML だけの Hessian にする |
|
反応に関わる残基が入っていない |
|
|
自分で組んだモデルを使う |
|
|
|
チェックリストに沿って確かめる |
|
原子を固定する・距離を拘束する |
固定 MM の層、 |
デフォルトのモデルを組む¶
ML 領域¶
all の -c に基質を書き、補因子と金属も同じリストに入れてください。
mlmm all -i 1.R.pdb 3.P.pdb -c 'SAM,GPP,MG' -l 'SAM:1,GPP:-3'
これは examples/beza/ の同梱例です。all は extract で ML 領域を切り出します。-c の原子から -r(デフォルト 2.6 Å)以内に原子が 1 つでもある残基を入れ、水も入れます。規則の全体は extract にあります。all は 1 つ目の入力の ML 領域を出力ディレクトリの ml_region.pdb に書くので、次の実行ではこれを --model-pdb に渡すと同じ ML 領域を使えます。
MM の層¶
ML 領域の外の原子は、2 つの MM の層に分かれます。各原子の層は PDB の B-factor の欄に書かれます。
層 |
B-factor |
役割 |
|---|---|---|
ML |
0 |
反応する領域。エネルギー・力・Hessian を MLIP で計算する |
可動 MM |
10 |
最適化で動く MM 原子 |
固定 MM |
20 |
座標を固定する MM 原子。MM のエネルギーには加わる |
define-layer は、ML 原子から --movable-cutoff(デフォルト 8.0 Å)以内の MM 原子を可動 MM に、それより外を固定 MM にします。-c があると、all は入力ごとに 8.0 Å で define-layer を実行し、層を付けた PDB を出力ディレクトリの layered/ に書きます。
モデルを確かめる¶
重い計算の前に、原子数と電荷を確かめてください。
層:
define-layerは Layer Summary にLayer 1 (ML, B=0):、Layer 2 (Movable MM, B=10):、Layer 3 (Frozen MM, B=20):、Total atoms:の行を出します。allは入力ごとに[all] define-layer [i]: … (ML=…, MovableMM=…, FrozenMM=…)を出します。リンク水素:
allは[all] ML structure with link H (N + M; …)を出します。N が ML 領域の原子数、M がリンク水素の数です。電荷:
extractと、-cを付けたallは、ML 領域の電荷をTotal active site model chargeの行に出します。多重度も確かめてください。目で見る:層を付けた PDB をビューアで開いて B-factor で色分けし、反応に関わる残基が ML 領域に入っているかを確かめてください。
モデルを削る¶
3 つの重さには、それぞれ別の設定があります。
決めるもの |
重くなる理由 |
|
個別のコマンドで |
デフォルト |
|---|---|---|---|---|
ML 領域 |
毎ステップ MLIP( |
|
|
|
可動 MM |
最適化で動かす原子になる |
オプションなし( |
|
8.0 Å |
Hessian の範囲 |
ML 領域と可動 MM にまたがる密な行列になる |
オプションなし |
|
ML と可動 MM の全部 |
ML 領域を小さくする¶
同梱例(examples/beza/1.R.pdb、-c 'SAM,GPP,MG' -l 'SAM:1,GPP:-3')では、次のオプションで下の大きさの ML 領域になります。原子数は extract --add-linkh で数えた値で、キャップ水素を含みます。
ML 領域の作り方 |
オプション |
原子数 |
|---|---|---|
デフォルト |
— |
632 |
主鎖の原子を MM 側に回す |
|
397 |
さらに水も MM 側に回す |
|
367 |
残基を自分で選ぶ |
|
129 |
--exclude-backboneと--no-include-h2o:主鎖の原子と水を ML 領域から外します。外した原子は MM として系に残ります。-r 0 --selected-resn:距離で残基を足さず、-cの残基と、指定した残基で ML 領域を作ります。同梱例の 44・63・186 番は、SAM のメチル炭素(CS1)にいちばん近い 3 残基です。自分の系では、反応に関わる残基を選んでください。
all でも同じオプションを使えます。例は MLIP の TS を DFT で確かめる の例 1 に、DFT/MM で計算するときの大きさは ML 領域は 300 原子くらいまでに にあります。ML 領域を小さくすると電荷が変わることが多いので、毎回確かめてください。
可動 MM の殻を薄くする¶
--movable-cutoff を小さくすると、可動 MM が減って固定 MM が増え、最適化で動かす原子が減ります。define-layer --movable-cutoff で層を付け直した PDB を個別のコマンドに渡すか、上の表のコマンドに --movable-cutoff を付けてください。
Hessian の範囲を絞る¶
--hessian-cutoff を付けると、ML 領域からその距離以内の可動 MM 原子だけを Hessian に入れます。freq の振動解析と、tsopt の最後の振動解析では、解析する原子(--active-dof-mode。デフォルトの partial は ML 領域と可動 MM の全部)を Hessian が覆っている必要があります。Hessian のほうが狭いと計算の前にエラーで止まるので、解析する原子も一緒に絞ってください。ML だけの Hessian にするときは --hessian-cutoff 0.0 --active-dof-mode ml-only を渡します。all には --hessian-cutoff がありません。Hessian の MM の部分の計算方法は MM Hessian にあります。
可動 MM 原子が多い系では、マイクロイテレーション(tsopt と opt --opt-mode hess でデフォルトで有効)が ML のステップの合間に MM 原子を力場だけで緩和するので、MLIP を呼ぶ回数が減ります。
モデルを広げる¶
反応に関わる残基・水・補因子が ML 領域の外にあるときは、ML 領域を広げてください。タンパク質の残りはもう MM に入っているので、ML 領域に足すのは、結合・プロトン化・電荷が変わる原子と、その共有結合の相手です。
-rを広げる(デフォルト 2.6 Å)。--selected-resn:残基を足します。足した残基からは距離での探索を始めません。--radius-het2het(デフォルト 0 で無効):中心の側も相手の側も C・H 以外の原子だけで測る、2 つ目の距離を足します。全体の半径を広げずに、近くの N・O の相手を拾えます。残基を
-cに足す:残基を丸ごと残したいときに使います。-cのアミノ酸からも距離での探索が始まり、-rが 0 より大きければペプチド結合でつながった隣の残基が加わるので、--exclude-backboneなしでは全部の原子が残ります。
周りの環境を動けるようにしたいときは、define-layer --movable-cutoff 10.0 などで、ML 領域ではなく可動 MM を広げてください。Hessian を ML 領域だけに絞っていたら、--hessian-cutoff を外してデフォルトに戻します。詳しくは 反応機構を調べるコツ を参照してください。
半径は、ML 領域の大きさに対して結果が収束したかを確かめるためのパラメータです。ML 領域を広げると計算は重くなり、精度が上がるとは限らないので、化学的に妥当な何通りかの ML 領域で、エネルギー・力・障壁を比べてください。反応物・中間体・生成物では同じ ML 領域を使い、ml_region.pdb を --model-pdb で渡します。
自分で組んだモデルを使う¶
個別のコマンドには --parm7 と ML 領域の指定が要り、all はこの 2 つを自分で作ります。モデルを手で組むときは、3 つのコマンドを実行します。mm-parm がトポロジーと、同じ原子を同じ順に並べた PDB を作り、extract がその PDB から ML 領域を切り出し、define-layer が同じ PDB に層を書きます。
mlmm mm-parm -i input.pdb -l 'LIG:0' --out-prefix system
mlmm extract -i system.pdb -c LIG -l 'LIG:0' -o model.pdb
mlmm define-layer -i system.pdb --model-pdb model.pdb -o system_layered.pdb
個別のコマンドか、-c を省いた all に、system_layered.pdb と --parm7 system.parm7、--model-pdb model.pdb を渡してください。どのコマンドも、ML 領域 を --model-pdb、--model-indices、B-factor の層の順に探します。電荷は、ML 領域の電荷を -q で渡すか、残基名ごとに -l で渡します(PDB/mmCIF の入力)。領域を手で切ったときや、プロトン化を手で変えたときは、残基名から電荷を求められないので -q で渡してください。
信頼できる model.pdb の作り方¶
model.pdb は、独立に組み直したクラスターではなく、全系の PDB / parm7 から原子を選んだ原子選択ファイルです。原子名、残基名と番号、chain ID、全系での原子の順を変えないでください。原子番号の振り直し・並べ替え、リンク水素の手での追加、別に水素を付けたモデルの書き出しはしないでください。
反応中心、共有結合した補因子や相手、経路の途中でプロトン化や結合が変わる原子は、すべて ML 領域に入れます。
タンパク質の主鎖の断片を残すときは、主鎖の両端がどちらも Cα(
CA)で終わる範囲を選びます。境界の原子価は ML/MM のリンク原子の処理に任せます。側鎖・リガンド・補因子の境界は、なるべく脂肪族の C–C 単結合(
CA–CBか、反応中心からさらに外側)に置きます。ペプチドの C–N、極性の C–N・C–O、芳香環や共役の結合、S–S 結合、金属への配位結合は切りません。結合の相手を入れるか、境界を動かします。反応物・中間体・生成物では、全系の原子とその順を同じにし、同じ
model.pdbの選択を使います。状態ごとに別々にモデルを作ると、原子の対応と障壁の比較が成り立ちません。本番の計算の前に、すべての境界を目で見て、ML 領域の電荷と多重度を確かめます。
define-layerは層を付けるだけで、化学的にまずい境界は直しません。
PyMOL で model.pdb を保存するときは、書き出しの画面で Original atom order に印を付けてください。
原子の固定と距離の拘束¶
固定は、原子の力を 0 にしてその場から動かさないことです。拘束は、2 原子の距離を調和ポテンシャルで目標の値へ引くことです。ML/MM では固定 MM の層がタンパク質の外側をもう固定しているので、--freeze-atoms には、ほかに止めたい原子だけを書いてください。
原子を固定する 3 つの方法¶
固定 MM の層(B-factor 20):自動で固定します。
--freeze-atoms 'i,j,k':全系の 1 始まりの原子番号です。all・opt・tsopt・irc・freq・scan・scan2d・scan3d・path-opt・path-search・spで使えます。YAML の
geom.freeze_atoms(--configで渡す):リストが長いときや、ほかの設定と一緒に残したいときに使います。
geom:
freeze_atoms: [12, 15, 28, 29, 42] # 1 始まり
実行では 3 つの和集合を固定し、どれかが他を置き換えることはありません。
固定の効果¶
固定した原子の力を 0 にするので、その原子は動きません。
固定した原子を Hessian から外すので、
freqは残りの原子で部分 Hessian 振動解析(PHVA)を行います。取り除く剛体運動は 固定境界での剛体モード にあります。path-optとpath-searchの--mep-mode dmf(Direct Max Flux)は、力を 0 にする代わりに調和拘束(k = 300 eV/Ų、YAML のdmf.k_fix)で固定した原子を留めるので、座標が少し動くことがあります(path-optの注意点)。
距離を拘束する¶
opt の --distance-restraint は、2 原子のあいだに調和の拘束を足します。(i, j, 目標の距離)(Å)を渡すか、(i, j) で最初の距離を保ちます。
mlmm opt -i system_layered.pdb --parm7 real.parm7 --model-pdb ml_region.pdb \
-q 0 -m 1 --distance-restraint '[(12,45,2.20)]' --restraint-k 20.0 \
--out-dir ./result_opt_rest
原子番号は 1 始まりで、
--zero-basedを付けると 0 始まりになります。--restraint-kは力の定数です(デフォルト 300 eV/Ų)。scan・scan2d・scan3dでは、--restraint-kが各段の力の定数です(距離は eV/Ų、角度は eV/rad²)。YAML のbias.kより CLI の値が優先されます。各段はその段の座標だけを拘束します。allでは--scan-restraint-kで渡します。スキャンリストの書き方は スキャンリスト仕様 にあります。optのresult.json(--out-json)とスキャンの結果のエネルギーは、拘束のエネルギーを除いた値です。
使用上の注意点¶
--movable-cutoffは B-factor の MM の層を置き換えます:このオプションを持つどのコマンドでも同じです。--detect-layerも無効になるので、ML 領域を--model-pdbか--model-indicesで渡してください。--model-pdbが決めるのは ML 領域だけ:--detect-layerが有効なら、可動 MM と固定 MM は入力の B-factor から決まります。層は
define-layerで変える:B-factor を手で書き換えず、define-layerをやり直してください。同梱の PDB は chain の欄が空です。chain が空の PDB では、残基を名前か番号で指定してください。chain のある PDB では、
-c 'A:TYR:44'のように chain:残基名:番号 で書きます。リンク水素は自動で付きます。計算機は、
parm7の結合のうち片方の端だけが ML 領域にあるものに 1 つずつ水素を置くので、model.pdbには入れません。詳しくは リンク原子の再分配 にあります。境界の結合:リンク水素を置けるのは C–C、C–N、N–C の結合だけです。ほかの
parm7の結合が境界をまたぐと、Unsupported ML/MM boundary bond in parm7で止まります。境界を、置ける結合へ動かしてください。金属・糖鎖・MD のスナップショット:
parm7を自分で作り、--parm7で渡してください。
関連ドキュメント¶
extract— 切り出しのオプション、-cの残基の指定、非標準の残基名define-layer— ML・可動 MM・固定 MM の層を付けるmm-parm— Amber のトポロジーと、対応する PDB を作るall— 一気通貫のワークフロー。-cで ML 領域と層を作るopt— 距離の拘束を付けた構造最適化scan— 拘束を付けた段階的なスキャンfreq— 固定した原子があるときの PHVA と剛体モード反応機構を調べるコツ — モデルを広げるとき
MLIP の TS を DFT で確かめる — DFT で扱える大きさの ML 領域
ML/MM 計算機 — リンク原子、マイクロイテレーション、MM の Hessian
ML/MM の共通オプション —
--parm7、--model-pdb、--detect-layer、--movable-cutoffデバイス設定 & HPC セットアップ — GPU のメモリとモデルの大きさ
トラブルシューティング — 切り出しと層のエラー