PLUMED入門 その5 仮想原子を使ってCVを指定する

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

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

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

過去回はこちら↓

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

https://qiita.com/tacoma/items/839b007cfb5b137094d1

https://qiita.com/tacoma/items/839b007cfb5b137094d1

https://qiita.com/tacoma/items/2145acd7905706bfd111

# Exercise 3 : 仮想原子

ときおり、CVを計算するときに、たくさんの原子の位置を使えないことがある。
その代わりに、他の原子の位置に基き生成された仮想原子を定義したいかもしれない。
例えば、原子集団の重心（center of mass; COM）や幾何中心（geometric center; CENTER）を使いたいかもしれない。

このエクササイズでは、仮想原子を指定してCVを定義する。
以下のインプットファイルを見てみよう。

```python
# Geometric center of first residue
first: CENTER ATOMS=1,2,3,4,5,6,7,8
# Geometric center of last residue
last: CENTER ATOMS=427-436

# Distance between centers of first and last residues, with PBCs
d1: DISTANCE ATOMS=first,last
# Distance between centers of first and last residues, without PBCs
d2: DISTANCE ATOMS=first,last NOPBC

# Print the two distances on COLVAR file every step
PRINT ARG=__FILL__ FILE=COLVAR STRIDE=__FILL__
```

このインプットは、

* 1~8の原子の幾何中心を仮想原子"first"として定義する
* 427〜436の原子の幾何中心を仮想原子"last"として定義する
* 2つの仮想原子間の距離を計算し、変数d1として保存する
* 2つの仮想原子間の距離を計算し、変数d2として保存する。ただし、PBCは無視する
* COLVARにd1,d2を出力する

firstとlastの原子の指定が異なる方法で行われている。

以下が私が作成したインプットファイルです。

```python
# Geometric center of first residue
first: CENTER ATOMS=1,2,3,4,5,6,7,8
# Geometric center of last residue
last: CENTER ATOMS=427-436

# Distance between centers of first and last residues, with PBCs
d1: DISTANCE ATOMS=first,last
# Distance between centers of first and last residues, without PBCs
d2: DISTANCE ATOMS=first,last NOPBC

# Print the two distances on COLVAR file every step
PRINT ARG=d1,d2 FILE=COLVAR STRIDE=1
```

PLUMEDを実行する。

```bash
plumed driver --mf_xtc traj-broken.xtc --plumed plumed.dat
```

仮想原子は437,438番目の原子として追加されたよう。

```
PLUMED: Number of atoms: 436
...

PLUMED: Action CENTER
PLUMED:   with label first
PLUMED:   serial associated to this virtual atom is 437
PLUMED:   of atoms:
PLUMED:  1 2 3 4 5 6 7 8
...
PLUMED: Action CENTER
PLUMED:   with label last
PLUMED:   serial associated to this virtual atom is 438
PLUMED:   of atoms:
PLUMED:  427 428 429 430 431 432 433 434 435 436

```
COLVARを見ると、

```
#! FIELDS time d1 d2
 0.000000 5.841553 5.841553
 1.000000 5.295298 8.311418
 2.000000 5.658301 8.467723
 3.000000 5.192408 7.894694
 4.000000 5.130006 7.779987
 5.000000 4.187504 7.114014
```
となっていて、d1とd2は異なる値となることがある。


whole.xtcで計算した場合でも

```
#! FIELDS time d1 d2
 0.000000 5.841553 5.841553
 1.000000 5.295298 8.311418
 2.000000 5.658301 8.467723
 3.000000 5.192408 7.894694
 4.000000 5.130006 7.779987
 5.000000 4.187504 7.114014
```
であり、先程と同様にd1とd2は異る。

gnuplotでグラフを書くと、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/788299/70bf7645-bb0c-23a8-6931-d7ca1c7674dd.png)

この場合もNOPBCで数値が大きくなっていることがわかる。

例えば、58psのときは極端に差が大きい。

```
 58.000000 1.913442 9.421249
```

トラジェクトリー中で見てみると、このように大きく拡がった構造をしている

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/788299/3fda4c64-c322-8fe8-8e1e-3d45bfb921ca.png)

長軸方向で分子を複製すると、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/788299/7e3d2f00-2107-87df-63a9-544b0be5cb83.png)

このように大きく伸びて、複製した分子に非常に近くなっていることがわかる。

デフォルト条件だと、distanaceがセルサイズの1/2以上になった場合に誤って短い距離を算出してしまうことがある。
この場合はNOPBCオプションで算出したt2の値が正しいと言える。

チュートリアルは以上。