【分子動力学】PLUMED入門 その2 インプットファイルを見てみよう

#はじめに
本シリーズは下記チュートリアルを実施したメモです。

https://www.plumed.org/doc-v2.6/user-doc/html/master-_i_s_d_d-1.html

本記事はPLUMED入門の第二回です

第一回はこちら↓

https://qiita.com/tacoma/items/8b445de0a716477843f8

#そもそもPLUMEDとは
PLUMEDは様々なMDソフトへ組み込むことができるライブラリである。
PLUMEDはMDシミュレーションに対してon-the-flyで様々な解析を行ったり、バイアスをかけたサンプリングを行うことができる。
また、PLUMEDは単独でトラジェクトリーを解析することもできる。

PLUMEDにどんな計算ができるかを見てみよう。

```
$ plumed -help
```

```
Usage: plumed [options] [command] [command options]
  plumed [command] -h|--help: to print help for a specific command
Options:
  [help|-h|--help]          : to print this help
  [--is-installed]          : fails if plumed is not installed
  [--has-mpi]               : fails if plumed is running without MPI
  [--has-dlopen]            : fails if plumed is compiled without dlopen
  [--load LIB]              : loads a shared object (typically a plugin library)
  [--standalone-executable] : tells plumed not to look for commands implemented as scripts
Commands:
  plumed completion : dump a function usable for programmable completion
  plumed driver : analyze trajectories with plumed
  plumed driver-float : analyze trajectories with plumed (single precision version)
  plumed gentemplate : print out a template input for a particular action
  plumed info : provide informations about plumed
  plumed kt : print out the value of kT at a particular temperature
  plumed manual : print out a description of the keywords for an action in html
  plumed pathtools : print out a description of the keywords for an action in html
  plumed pdbrenumber : Modify atom numbers in a PDB, possibly using hybrid-36 coding
  plumed pesmd : Langevin dynamics on PLUMED energy landscape
  plumed simplemd : run lj code
  plumed sum_hills : sum the hills with  plumed
  plumed config : inquire plumed about how it was configure
  plumed mklib : compile a .cpp file into a shared library
  plumed newcv : create a new collective variable from a template
  plumed partial_tempering : scale parameters in a gromacs topology to implement solute or partial tempering
  plumed patch : patch an MD engine
  plumed selector : create lists of serial atom numbers
  plumed vim2html : convert plumed input file to colored html using vim syntax
```

これはPLUMEDが実行できるタスクのリストである。
このチュートリアルでは、トラジェクトリーの解析にPLUMEDを使う。




#はじめてのインプットファイル

PLUMEDの主な目標は集団変数（CV）を計算することである。CVは系の複雑な記述子であり、タンパク質の配座変化や化学反応を記述する。
これはon-the-flyで（つまりシミュレーションを流している最中に）行うこともできるし、計算が終わった後にトラジェクトリーを解析することもできる。
どちらの場合もPLUMEDの文法に則ったインプットファイルを作成する必要がある。
インプットファイルの例を見てみよう。

```python
# Compute distance between atoms 1 and 10.
# Atoms are ordered as in the trajectory files and their numbering starts from 1.
# The distance is called "d" for future reference.
d: DISTANCE ATOMS=1,10

# Compute the torsional angle between atoms 1, 10, 20, and 30.
# The angle is called "phi1" for future reference.
phi1: TORSION ATOMS=1,10,20,30

# The same CV defined above can be split into multiple lines
# The angle is called "phi2" for future reference.
TORSION ...
LABEL=phi2
ATOMS=1,10,20,30
...

# Print "d" on a file named "COLVAR1" every 10 steps.
PRINT ARG=d FILE=COLVAR1 STRIDE=10

# Print "phi1" and "phi2" on another file named "COLVAR2" every 100 steps.
PRINT ARG=phi1,phi2 FILE=COLVAR2 STRIDE=100
```

解説すると、

* 原子番号1,10の間の距離が変数dとして定義
* 原子番号1,10,20,30がなす二面角を変数phi1として定義
* 別の書き方でphi1と同じ二面角をphi2と定義
* 10ステップごとに"COLVAR1"ファイルに変数dを出力
* 100ステップごとに"COLVAR2"ファイルに変数phi1,phi2を出力

なお、

* 原子番号のインデックスは1始まり
* 原子番号を書くときはカンマのあとにスペースを入れない

であることに注意

PLUMEDの文法は下記ページからより詳しく知ることができる

https://www.plumed.org/doc-v2.6/user-doc/html/_syntax.html

#PLUMEDで使われる単位
デフォルトでは以下の単位が使われる

* 長さ：nm
* エネルギー：kJ/mol
* 時間：ps
* 質量：amu
* 電荷：e

単位を変えたければ、UNITSキーワードを使う

次回からは実際にPLUMEDを実行してみます。