GROMACS

home

GROMACSチュートリアル② > mdpファイルの作成とシミュレーションの実行

【GROMACSチュートリアル②】 mdpファイルの作成とシミュレーションの実行

前回まででアルコール二重膜系を作成し、CHARMM36力場を使用したGROMACSでのシミュレーションを開始できるまでに至った。 今回は実際にMDシミュレーションを行うが、シミュレーションの設定をメインに解説し、好きな条件でシミュレーションを実行できるようになることを目標とする。 シミュレーションの手順はチュートリアル①と同様、下記のように進めていく。

  1. エネルギー最小化(00_em)
  2. NVT平衡化(01_nvt)
  3. NPT平衡化(02_npt)
  4. 本計算(03_npt)

また、このページで解説したmdpファイルの設定について、より詳しい解説はGROMACS.mdpオプションのページで紹介している。 GROMACSの操作に慣れてきたら参考にしてほしい。

エネルギー最小化(00_em)

まずは、作成した構造のエネルギー最小化を行う。 設定条件を記述したmdpファイルは次のようになる。

00_em.mdp

integrator = steep emtol = 1000.0 emstep = 0.01 nsteps = 50000 nstlist = 10 cutoff-scheme = Verlet ns_type = grid coulombtype = PME rcoulomb = 1.2 rvdw = 1.2 pbc = xyz

エネルギー最小化には最急降下法を用いるのでintegrator = steepとし、系の最大力Fmaxが1000 kJ mol-1 nm-1以下となるまで緩和を行う。 この時、同時にステップ間隔と最大ステップ数を指定している。

また、次に非結合相互作用(LJ相互作用、クーロン相互作用)に関する設定している。 近接原子の定義、探し方、更新頻度などを設定した後、それらが遠距離の場合と近距離の場合で異なる相互作用の取り扱いをしている。 coulombtype = PMEは遠距離クーロン相互作用にパーティクルメッシュエワルド法を使用する設定である。 また、rcoulombrvdwは近距離クーロン相互作用及び近距離LJ相互作用のカットオフ距離である。

最後、pbc = xyzは周期的境界条件を3次元に適用している。

このmdpファイルと作成した二重膜系の構造を用いてgmx gromppgmx mdrunを実行する。

gmx grompp -f 00_em.mdp -c system.gro -p topol.top -o 00_em.tpr
gmx mdrun -deffnm 00_em

計算が終了すると、エネルギー最小化された系の構造が得られる。 エネルギー最小化過程のポテンシャルエネルギー変化を出力してみた。

gmx energy -f 00_em.edr -o potential.xvg
C16OH_em_plot

NVT平衡化(01_nvt)

エネルギー最小化ができたら、NVT平衡化を行う。 mdpファイルには温度制御の設定を記述する必要があり、またシミュレーションの長さに合わせてステップ数を決定する。 今回はNose-Hooverの方法で温度制御を行い、310.15 Kで125.0 psのNVT計算を行う設定をした。

01_nvt.mdp

integrator = md dt = 0.001 nsteps = 125000 nstxtcout = 5000 nstxout = 5000 nstvout = 5000 nstfout = 5000 nstcalcenergy = 100 nstenergy = 1000 nstlog = 1000 cutoff-scheme = Verlet nstlist = 20 rlist = 1.2 coulombtype = PME rcoulomb = 1.2 vdwtype = Cut-off vdw-modifier = Force-switch rvdw_switch = 1.0 rvdw = 1.2 tcoupl = Nose-Hoover tc_grps = SYSTEM tau_t = 1.0 ref_t = 310.15 constraints = h-bonds constraint_algorithm = LINCS nstcomm = 100 comm_mode = linear comm_grps = SYSTEM gen-vel = yes gen-temp = 310.15 gen-seed = -1 refcoord_scaling = com

上から順番に見ていく。まず、MD計算を行うのでintegrator = mdとし、タイムステップはdt = 0.001としている。 このタイムステップの単位はpsなので、設定したタイムステップは1 fsとなる。 nsteps = 125000とすれば、0.001 ps × 125000 = 125.0 psのシミュレーションが実行できる。

次に出力情報の設定をしている。 主にトラジェクトリファイルを何ステップごとに記述するかを設定しており、nstxoutnstvoutnstfoutはそれぞれ系の原子の座標、速度及び働く力に対応する。 これらの情報はtrrファイルにトラジェクトリとして出力されるが、nstxtcoutを指定するとxtcファイルにも座標情報を出力することができる。 また、エネルギーや計算ログの出力もnstenergynstlogで制御できる。

温度制御はtcoupl = Nose-Hooverを適用している。 ref_tが参照温度なので、ここにシミュレーションしたい温度である310.15 Kを指定する。

constraintsでは結合の拘束条件とそのアルゴリズムを指定する。 今回は水素結合に対してLINCSという方法で結合拘束をしている。

comm_modeは系の質量中心が並進運動してしまう場合に、その速度を取り除く設定である。 nstcommでその操作の頻度を指定する。

最後、gen-velで系の原子に対して初速度を与える。 初速度はマクスウェル分布に従って生成され、温度はgen-tempで与えることができる。 普通は温度制御時の参照温度と同じ値になるであろう。

設定が確認できたらgmx gromppgmx mdrunを実行する。

gmx grompp -f 01_nvt.mdp -c 00_em.gro -p topol.top -o 01_nvt.tpr
gmx mdrun -deffnm 01_nvt

チュートリアル①と同様に、NVT平衡化で温度が一定となっているかを確認する。 グラフにプロットすると、125.0 psの間温度が安定していることがわかる。

gmx energy -f 01_nvt.edr -o temperature.xvg
C16OH_temp_plot

NPT平衡化(02_npt)

系の温度が安定したら、続いてNPT平衡化を行う。 ここでの設定はほとんど本計算と同じものになるが、圧力が安定するまでがこのステップの役割である。 圧力制御にはParrinello-Rahmanの方法を使用し、参照圧力1.0 barとして500.0 psのシミュレーションを行う。

02_npt.mdp

integrator = md dt = 0.002 nsteps = 250000 nstxtcout = 5000 nstvout = 5000 nstfout = 5000 nstcalcenergy = 100 nstenergy = 1000 nstlog = 1000 cutoff-scheme = Verlet nstlist = 20 rlist = 1.2 coulombtype = pme rcoulomb = 1.2 vdwtype = Cut-off vdw-modifier = Force-switch rvdw_switch = 1.0 rvdw = 1.2 tcoupl = Nose-Hoover tc_grps = SYSTEM tau_t = 1.0 ref_t = 310.15 pcoupl = Parrinello-Rahman pcoupltype = semiisotropic tau_p = 5.0 compressibility = 4.5e-5 4.5e-5 ref_p = 1.0 1.0 constraints = h-bonds constraint_algorithm = LINCS continuation = yes nstcomm = 100 comm_mode = linear comm_grps = SYSTEM refcoord_scaling = com

おおよその設定はNVT平衡化のものと同様であるが、圧力制御のセクションが追加されている。 圧力制御はpcoupl = Parrinello-Rahmanとし、参照圧力はref_pに1.0 barを指定する。 ここで注意するのは、圧力の制御タイプがpcoupltype = semiisotropicとなっている点である。 今回のシミュレーションはアルコールの二重膜を扱っており、膜はxy方向に広がっているので、xy方向とz方向で同じ圧力制御をすることができない。 従って、制御タイプにはsemiisotropic(半等方性)を設定し、ref_pにはxy方向とz方向でそれぞれの参照圧力を与える。

また、NPT平衡化はNVT平衡化から継続するのでcontinuation = yesとし、ここからタイムステップはdt = 0.002としている。

同様に、gmx gromppgmx mdrunを実行する。

gmx grompp -f 02_npt.mdp -c 01_nvt.gro -p topol.top -o 02_npt.tpr
gmx mdrun -deffnm 02_npt

シミュレーションが完了すると、310.15 K、1.0 barでのアルコール二重膜の構造が得られる。 トラジェクトリを確認すると、膜分子の占有面積が小さくなり、系の大きさが変化したことが見られる。 圧力についてもグラフにプロットしてみた。

gmx energy -f 02_npt.edr -o pressure.xvg
C16OH_press_plot

本計算(03_npt)

最後は本計算を行う。 本計算はNPT平衡化の延長なので、ステップ数を増やして50.0 nsのシミュレーションを行う。 ここまでで温度と圧力が十分に安定していることを確認して、シミュレーションを実行しよう。

03_npt.mdp

integrator = md dt = 0.002 nsteps = 25000000 nstxtcout = 50000 nstvout = 50000 nstfout = 50000 nstcalcenergy = 100 nstenergy = 1000 nstlog = 1000 cutoff-scheme = Verlet nstlist = 20 rlist = 1.2 coulombtype = pme rcoulomb = 1.2 vdwtype = Cut-off vdw-modifier = Force-switch rvdw_switch = 1.0 rvdw = 1.2 tcoupl = Nose-Hoover tc_grps = SYSTEM tau_t = 1.0 ref_t = 310.15 pcoupl = Parrinello-Rahman pcoupltype = semiisotropic tau_p = 5.0 compressibility = 4.5e-5 4.5e-5 ref_p = 1.0 1.0 constraints = h-bonds constraint_algorithm = LINCS continuation = yes nstcomm = 100 comm_mode = linear comm_grps = SYSTEM refcoord_scaling = com

実行コマンドも変わらず、gmx gromppgmx mdrunで実行する。

gmx grompp -f 03_npt.mdp -c 02_npt.gro -p topol.top -o 03_npt.tpr
gmx mdrun -deffnm 03_npt

シミュレーションには時間がかかると思うが、計算が終了すると次のような構造が見られるであろう。 二重膜を形成するアルコール分子が一定方向に傾き、ラメラ構造を形成している。

C16OH_simu_result

まとめ

チュートリアル②は以上となる。学習内容をまとめると以下のようになる。

  1. CHARMM-GUIなどを使用して、系の構造の作成方法を学習した。
  2. GROMACSへの力場の導入方法、及び分子の取り扱い方を理解した。
  3. mdpファイルを編集し、目的のシミュレーション条件に合った設定をした。

ここまでできればGROMACSは一通り扱えるようになったのではないだろうか。 これから独自のシミュレーションを行い、さらに深い知識を身に付けていってほしい。 また、GROMACSのチュートリアルページは備忘録としても活用してほしい。

PREVIOUS TOP

NEXT