Gromacs 計算手順 (Ver.5)
概要
- Gromacs Ver.5 以降の計算手順
- 基本的には各コマンドが gmx のサブコマンドとなっただけで基本的には同じ
手順
通常
- PDB ファイルを GRO ファイルに変換する。
$ gmx pdb2gmx -f PROTEIN.pdb -o PROTEIN.gro -p PROTEIN.top -ff amber14sb -water tip3p
-f: 入力構造ファイル (.pdb)-o: 出力構造ファイル (.gro)-p: 出力トポロジーファイル (.top)- オプション (指定しなかった場合は、対話的に情報を求められる)
-ff: 溶質の力場 (ここではamber14sb(別途導入が必要) を指定)- 力場はカレントディレクトリとデフォルトのディレクトリから参照される。
- Ubuntu のリポジトリからインストールした場合、デフォルトの力場ディレクトリは
/usr/share/gromacs/top
-water: 水の力場 (ここではtip3pを指定)
- 周期境界ボックスを設定する。
- ボックスの壁面からの距離で指定する場合
$ gmx editconf -f PROTEIN.gro -bt triclinic -d 2
-f: 入力構造ファイル (.gro)-o: 出力構造ファイル (.gro)-bt: ボックスの形状 (ここでは三斜晶系のtriclinic(パラメータ次第で直方体になる) で指定; 他にもcubic,dodecahedron,octahedronが指定できる)-d: 壁面と溶質間の距離 (単位は nm (1 nm = 10 Å))
- ボックスサイズを指定する場合
$ gmx editconf -f PROTEIN.gro -o PROTEIN_box.gro -box 7.5 6.7 6.9
-f: 入力構造ファイル (.gro)-o: 出力構造ファイル (.gro)-box: ボックスのベクトルサイズ (単位は nm で、ここでは 7.5 nm × 6.7 nm × 6.9 nm で指定)- この他にも頂点の角度指定や中心座標指定、平行移動や回転などのオプションが使える。
- 溶媒分子 (水分子) を追加する。
$ gmx solvate -cp PROTEIN_box.gro -cs spc216 -o PROTEIN_solv.gro -p PROTEIN.top
-cp: 入力構造ファイル (.gro)-cs: 溶媒分子の構造ファイル (ここでは TIP3P 用の 3 点モデルを指定)-o: 出力構造ファイル (.gro)-p: 入出力トポロジーファイル (.top; 水分子を付加したトポロジーファイルに上書きされる; 上書き前のトポロジーファイルはファイル名の前後に # が付けられ、バックアップされる)
- 系の電荷を中和するため、イオンを追加する。
$ gmx grompp -f ions.mdp -c PROTEIN_solv.gro -p PROTEIN.top -o ions.tpr $ gmx genion -s ions.tpr -o PROTEIN_system.gro -p PROTEIN.top -pname NA -np NP -nname CL -nn NN
-f(grompp): 計算条件ファイル (.mdp; 計算はしないが、トポロジーバイナリファイルを作成するために必要。計算条件は何でもいいので、ここでは最適化用のファイルを用いている)-c(grompp): 入力構造ファイル (.gro)-p(grompp): 入力トポロジーファイル (.top)-o(grompp): 出力トポロジーバイナリファイル (.tpr)-s(genion): 入力トポロジーバイナリファイル (.tpr)-o(genion): 出力構造ファイル (.gro; イオンが付加された構造ファイル)-p: 入出力トポロジーファイル (.top; 水分子を付加したトポロジーファイルに上書きされる; 上書き前のトポロジーファイルはファイル名の前後に # が付けられ、バックアップされる)-pname(genion): 正電荷イオンの種類 (ここではNA(Na イオン) を指定)-np(genion): 正電荷イオンの数NP-nname(genion): 負電荷イオンの種類 (ここではCL(Cl イオン) を指定)-nn(genion): 負電荷イオンの数NNions.mdpは以下のものを用いた。
- ions.mdp
integrator = steep emtol = 1000.0 emstep = 0.01 nsteps = 50000 nstlist = 100 ns_type = grid rlist = 1.0 coulombtype = PME rcoulomb = 1.0 nstlog = 1 pbc = xyz vdwtype = cut-off constraints = none cutoff-scheme = Verlet
- VMD などで構造を確認する。
- トポロジーバイナリファイルを作成する。
$ gmx grompp -f EM.mdp -c PROTEIN_system.gro -p PROTEIN.top -o PROTEIN_em.tpr
-f: 計算条件ファイル (.mdp; ここでは最適化ファイルを指定)-c: 入力構造ファイル (.gro)-p: 入力トポロジーファイル (.top)-o: 出力トポロジーバイナリファイル (.tpr)
- Gromacs で実行する。
$ gmx mdrun [OPTION]
- OPTION
-deffnm: 計算の入出力ファイルの接頭辞を指定-s、-o、-x、-g、-e、-cpoオプションが不要になる-deffnmに加えて、-s、-o、-x、-g、-e、-cpoを指定した場合、それらのオプションが優先される
-deffnmではなく、個別に指定する場合-s: 入力トポロジーファイルの指定 (.tpr)-o: 出力トラジェクトリファイル (.trr)-x: 出力トラジェクトリファイル (.xtc)-g: 出力ログファイル (.log)-e: 出力エネルギーファイル (.edr)-cpi: 入力チェックポイントファイル (.cpt)-cpo: 出力チェックポイントファイル (.cpt)
- 並列計算関係
-nt: OpenMP のスレッド数 (計算機 1 台の中での並列数)。デフォルトは 0 (自動検出)。-ntmpi: MPI の数 (計算機の数; ただし、計算機 1 台の中でも並列指定可能)。デフォルトは 0 (自動検出)。- OpenMP と MPI の違いの参考サイト: プログラムの並列化について [AFFRIT Portal]
- 自動検出 (0) だと、計算機の CPU 数をフルに使うように計算する。
8 CPU の計算機 1 台の例-nt、-ntmpiともに0、あるいは指定しない場合、OpenMP:8、MPI:1-nt 2、-ntmpi 0の場合、OpenMP:2、MPI:4-nt 2、-ntmpi 1(両方指定) の場合、OpenMP:2、MPI:1 ⇒ 任意に指定
- 参考サイト: gmx mdrun
MD 計算の延長
- MD 計算の計算時間を延長したい場合に使う (tpbconv が廃止され、convert-tpr に置き換わった)
- MD 時間を延長した入力ファイルの作成
$ gmx convert-tpr -s PREVIOUS.tpr -extend TIME -o NEXT.tpr
-s PREVIOUS.tpr: 前の計算で使用した tpr (PREVIOUS.tpr) を指定–extend TIME: 延長時間の指定 (TIME は ps 単位で指定する)-o NEXT.tpr: 出力ファイルの指定 (次の計算に使う tpr ファイル (NEXT.tpr) を指定する)
- 計算開始
$ gmx mdrun -s NEXT.tpr -deffnm DEFNAME -cpi PREVIOUS.cpt
-s NEXT.tpr: 前の操作で作成した .tpr (NEXT.tpr) を指定-deffnm DEFNAME: 出力ファイルや入力ファイルの共通のファイル名 (拡張子を除く) を指定 (この場合は DEFNAME.* が計算で出力される)- 前の計算で指定した
-deffnmを再度指定すると、各出力ファイルに追記する形で計算が続行される
-cpi PREVIOUS.cpt: チェックポイントファイル (PREVIOUS.cpt) の指定- PREVIOUS.cpt は前の計算が完了した際に作成されている
- tpr 自体は延長分を足し合わせた計算をするようになっている。.cpt を指定しないと最初から延長分までの計算をすることになるため、cpi の指定を忘れないこと!
例- 0〜10 ns の計算をする .tpr に 10 ns を追加する convert-tpr を実行してできた NEXT.tpr を作成
gmx mdrun -s NEXT.tpr -deffnm DEFNAME→ 0〜20 ns の計算を実行gmx mdrun -s NEXT.tpr -deffnm DEFNAME -cpt PREVIOUS.cpt→ 10〜20 ns の計算を実行