Skip to content본문으로 건너뛰기
~/woojin-go
menu
~/woojin-go/blogs/tutorial-2-inhibitor-growth

튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기

GROMACS series · part 4 of 9 · updated 2024-11-08KOmolecular dynamicshydrate inhibitors
input files · 19

::목표::

  1. Xu et al. 이 진행하였던 시뮬레이션을 모사해봅니다.
  2. 하이드레이트 저해제를 시스템에 투여해볼 수 있습니다.
  3. 하이드레이트의 성장과 저해를 관찰해볼 수 있습니다.
  4. 논문에서 제시한 데이터들을 출력해 볼 수 있습니다.

Table of Contents:

1. 개요

Natural product Pectin은 여러 문헌에서 하이드레이트 저해제로써 효과가 상당하다고 알려져 있습니다. 2016년, Xu et al.은 MD simulation을 통해 pectin의 하이드레이트 저해 효능을 성공적으로 모사하였습니다. 상세한 내용은 아래 링크를 타고 가시면 확인해보실 수 있습니다.

튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 1
pubs.acs.orgpubs.acs.org

이미 많은 MD simulation들이 즐비한 상황이지만, 해당 논문을 이 튜토리얼에서 모사하는 이유로는,

  • 시뮬레이션 시간이 짧다
  • 시뮬레이션 관련 정보가 상세히 제공되었다
  • 많은 문헌들에서 인용되었다

정도의 이유를 들 수 있겠습니다. 해당 문헌에서 진행한 시뮬레이션이 과연 진짜로 재현되는지, 한 번 이 튜토리얼에서 확인해보세요.

2. 방법 파헤치기

우선, 저자들이 사용한 시뮬레이션 시스템 및 방법들에 대해서 상세히 알아볼 필요가 있습니다.

Materials

  • 펙틴 (Pectin, gromos53a6)
    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 2
  • Water (TIP4P-2005)
  • Methane (united-atom, Lennard-Jones)

Barostat & Thermostat

  • Barostat: Parrinello-Rahman
  • Thermostat: Nose-Hoover

Constraint algorithm

LINCS

Short-range interaction

truncated at 10Å

Long-range interaction

PME

Source code

GROMACS

Simulation box

2.376 x 2.376 x 4.752

Simulation procedure

  1. Energy minimization (steepest descent algorithm으로 추정)
  2. NVT simulation (260 K, 30 ps)
  3. NPT simulation (260 K, 15 MPa, 30 ps)
  4. Production run (NPT, 260 K, 15 MPa, 20 ns)

3. 시뮬레이션 셋팅

본격적인 시뮬레이션 셋팅에 앞서, 편의를 위해 논문에서의 셋팅을 조금 수정해보겠습니다.

  • United atom 모델이었던 메탄 분자를 All-atom 모델로 변경하겠습니다.
  • 메탄 힘장을 LJ 에서 OPLS-AA로 수정하겠습니다.
  • Pectin 힘장 역시 gromos53a6에서 OPLS-AA로 수정하겠습니다.

나머지 셋팅은 논문과 거의 동일하게 맞춰서 진행하겠습니다.

(1) Obtaining pectin structure

논문에 따르면, sI 하이드레이트 slab 은 2 x 2 x 2 크기로 디자인하였고, liquid region에는 368개의 물 분자, 64 개의 메탄 분자를 넣었다고 합니다.

논문에서 사용한 pectin 2.46% 및 3.62%는 pectin chain 길이에 따른 농도임을 알 수 있습니다 (각각 dimer, trimer라고 지칭하겠습니다).

왼쪽: 2.46% pectin, 오른쪽: 3.62% pectin
왼쪽: 2.46% pectin, 오른쪽: 3.62% pectin

이에 기반하여, dimer와 trimer 파일들을 다음과 같이 얻을 수 있었습니다.

Dimer 관련 파일
튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 3

DIM.gro 1.8KB

DIM.itp 21.6KB

Trimer 관련 파일
튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 4

TRI.gro 2.7KB

TRI.itp 33.1KB

.gro 파일 및 .itp 파일들을 모두 다운로드 받아 디렉토리 내에 아래와 같이 저장해주세요.

튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 5

이제 Packmol을 설치해야 합니다. 기존 컴퓨터에 Packmol이 이미 설치되어 있다면, 그것을 활용해주세요.

packmol source code 설치하기

아래 압축 파일을 디렉토리에 저장 후, 커맨드들을 입력하면 설치가 완료됩니다.

packmol.tar.gz 97.2KB

$ tar -zxf packmol.tar.gz
$ cd packmol/
$ ./configure
$ make
성공 시 출력되는 창.
성공 시 출력되는 창.

(2) Hydrate slab 만들기

2 x 2 x 2 sI CH4 hydrate 슬래브를 만들어야 합니다.

아래 링크를 활용하면 쉽게 하이드레이트 구조를 만들 수 있습니다.

Google Colaboratorycolab.research.google.com
튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 6

코랩 내에서 셋팅 값을 위와 같이 설정한 후, 아래와 같은 하이드레이트 슬래브가 만들어졌는지 확인합니다.

튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 7

성공적으로 만들었다면, 다음과 같은 Slab.gro 파일을 다운로드 할 수 있습니다.

Slab.gro 79.5KB

(3) Packmol 구동하기

이제 주어진 파일들을 바탕으로, packmol 을 구동합니다.

그 전에, packmol은 input 파일로 .pdb 포맷만을 지원하므로, 우리는 모든 .gro 파일을 먼저 .pdb 파일로 변경 할 필요가 있습니다.

여러 가지 방법이 있겠지만, 제가 추천하는 방법은 gmx editconf 플러그인을 활용하는 것입니다. GROMACS가 실행되는 컴퓨터에서 다음 bash 파일을 실행해보세요.

vi ./gro2pdb.sh
./gro2pdb.sh 파일 생성하여 편집하기.
#!/bin/bash

# gro2pdb.sh
gmx editconf -f DIM.gro -o DIM.pdb;
gmx editconf -f TRI.gro -o TRI.pdb;
gmx editconf -f Slab.gro -o Slab.pdb
./gro2pdb.sh 내부에 입력할 내용들
chmod +x * && ./gro2pdb.sh
.gro2pdb.sh 실행하기
.gro2pdb.sh 통해 변환된 .pdb 파일들

DIM.pdb 3.2KB

Slab.pdb 138.4KB

TRI.pdb 4.7KB

이와 더불어, 물 분자와 메테인 분자의 .pdb 파일들도 packmol 구동을 위해 별도로 다운로드 합니다. 추후 사용을 위해, _U1M.itp 및 tip4p-2005 파일 역시 미리 다운로드 해주세요.

물 및 메테인 .pdb 파일들

water.pdb 0.7KB

_U1M.pdb 0.9KB

_U1M.itp 0.7KB

tip4p-2005.itp 1.1KB

이제, 아래와 같은 packmolinput.inp 파일을 만들어 실행시킬 준비를 합니다.

vi packmolinput.inp
packmolinput.inp 파일 형성하기
tolerance 2.0
output finalbox.pdb
filetype pdb
# sidemax 50000.d0
nloop0 1000

##############################################
# PECTIN DIMER
##############################################
# Locating 1 pc of PECTIN DIMER molecule in the right-hand side.

structure DIM.pdb
	number 1
	resnumbers 2
	inside box 5. 5. 30.0 19. 19. 40.0
end structure

##############################################
# Liquid water molecules
##############################################
# Locating 368 water molecules in the right-hand side.

structure water.pdb
	number 368
	resnumbers 2
	inside box 0. 0. 24.1 24.1 24.1 47.5
end structure

##############################################
# CH4 molecules
##############################################
# Locating 64 CH4 (entitled as _U1M) molecules in the right-hands side. 

structure _U1M.pdb
	number 64
	resnumbers 2
	inside box 0. 0. 24.1 24.1 24.1 47.5
end structure

##############################################
# sI slab
##############################################
# Placing sI at the left of the PBC box.

structure Slab.pdb
	number 1
	resnumbers 2
	inside box 0. 0. 0. 24.1 24.1 24.1
end structure
packmolinput.inp 파일 내에 넣을 내용들
./packmol < packmolinput.inp
packmolinput.inp 실행하기

생성된 finalbox.pdb 를 확인해봅니다. 다음과 같은 파일이 형성되어 있으면 정상입니다.

finalbox.pdb 286.8KB

finalbox.pdb를 가시화한 결과.
finalbox.pdb를 가시화한 결과.

(4) editconf 활용하여 시뮬레이션 최종 준비

논문에서의 셋팅을 참고하여, 시뮬레이션 박스 크기를 최종 결정해줍니다.

gmx editconf -f finalbox.pdb -c -box 2.376 2.376 4.752 -o finalbox.gro

그러면 아래와 같은 final.gro 파일이 생성됩니다.

finalbox.gro 159.3KB

마지막으로, EM → NVT → NPT → NPT production run 구동에 필요한 .mdp 파일들을 사용해야합니다. 내부 셋팅들은 논문에 있는 값들을 최대한 반영하였습니다. (⚠️ 꼭 구동 전 내부 내용을 숙지하시기 바랍니다!)

em.mdp 1.0KB

nvt.mdp 2.1KB

npt.mdp 2.1KB

prod.mdp 2.0KB

해당 파일들을 모두 다운로드 하여 현재 디렉토리에 위치시킵니다.

(5) oplsaa.ff 힘장 폴더 준비 및 topol.top 작성하기

앞서 말씀드린 것처럼, 저희는 OPLS-AA 힘장을 사용할 예정입니다.

아래 bash 스크립트를 실행하여 oplsaa.ff/ 폴더를 현재 디렉토리에 위치시키고, 미리 준비한 .itp 파일들을 oplsaa.ff/ 폴더로 모두 옮깁니다.

vi prepareopls.sh
prepareopls.sh 파일 편집하기
#!/bin/bash

# prepareopls.sh
# 해당 스크립트는 현재 디렉토리의 `.itp` 파일들을 모두 `oplsaa.ff/` 폴더 안으로 옮기고, `oplsaa.ff/` 폴더 내에 있는 `DIM.itp`가 정상적으로 시뮬레이션에서 불러와질 수 있도록 파일 내 내용 정리를 도와줍니다. 

# 힘장을 로컬 디렉토리에 위치시킵니다. 
cp -r /usr/local/gromacs/share/gromacs/top/oplsaa.ff/ ./oplsaa.ff/ &&
mv ./_U1M.itp ./oplsaa.ff/_U1M.itp;

# DIM.itp 파일 내부의 일부 내용을 `ffnonbonded.itp` 파일에 옮겨넣고, `DIM.itp` 파일을 힘장 폴더 안으로 위치시킵니다. 
awk '/\[ atomtypes \]/{flag=1;next}/\[ moleculetype \]/{flag=0}flag' DIM.itp >> ./oplsaa.ff/ffnonbonded.itp;
sed -i '1,/\[ moleculetype \]/{/\[ moleculetype \]/!d}' DIM.itp;
mv ./DIM.itp ./oplsaa.ff/DIM.itp

# tip4p-2005 파일 내부의 일부 내용을 `ffnonbonded.itp` 파일에 옮겨넣고, `tip4p-2005.itp` 파일을 힘장 폴더 안으로 위치시킵니다. 
awk '/\[ atomtypes \]/{flag=1;next}/\[ moleculetype \]/{flag=0}flag' tip4p-2005.itp >> ./oplsaa.ff/ffnonbonded.itp;
sed -i '1,/\[ moleculetype \]/{/\[ moleculetype \]/!d}' tip4p-2005.itp;
mv ./tip4p-2005.itp ./oplsaa.ff/tip4p-2005.itp;
prepareopls.sh 내에 들어 갈 내용
chmod +x prepareopls.sh && ./prepareopls.sh
prepareopls.sh 실행하기

topol.top 파일은 아래와 같습니다. 현재 디렉토리에 마찬가지로 넣어주세요.

vi topol.top
topol.top 파일 만들기
; Include forcefield parameters
#include "oplsaa.ff/forcefield.itp"
#include "oplsaa.ff/DIM.itp"
#include "oplsaa.ff/tip4p-2005.itp"
#include "oplsaa.ff/_U1M.itp"

[ system ]
; PECTINDIMER

[ molecules ]
; Compound	#mols
LIG 			1
SOL				368
_U1M			64
SOL       368
_U1M      64
topol.top에 들어 갈 내용

4. 시뮬레이션 구동

구동은 아래 bash file 을 실행하여 EM → NVT → NPT → production NPT 순서로 진행하시면 됩니다.

vi runsim.sh
runsim.sh 파일 형성하기
#!/bin/bash

# runsim.sh

echo "EM 시뮬레이션을 시작합니다." 
sleep 1 
gmx grompp -f em.mdp -c finalbox.gro -p topol.top -o em.tpr -maxwarn 10;
gmx mdrun -v -deffnm em;

echo "NVT 시뮬레이션을 시작합니다." 
sleep 1 
gmx grompp -f nvt.mdp -c em.gro -r em.gro -p topol.top -o nvt.tpr -maxwarn 10;
gmx mdrun -v -deffnm nvt;

echo "NPT 시뮬레이션을 시작합니다." 
sleep 1
gmx grompp -f npt.mdp -c nvt.gro -r nvt.gro -t nvt.cpt -p topol.top -o npt.tpr -maxwarn 10;
gmx mdrun -v -deffnm npt;

echo "Production run을 시작합니다." 
sleep 1 
gmx grompp -f prod.mdp -c npt.gro -r npt.gro -t npt.cpt -p topol.top -o prod.tpr -maxwarn 10;
gmx mdrun -v -deffnm prod

echo "모든 시뮬레이션이 종료되었습니다."
sleep 2

exit
runsim.sh파일에 추가 할 내용
chmod +x runsim.sh && ./runsim.sh
runsim.sh파일 실행하기

5. 트래젝토리 분석

(1) 문헌 내 스냅샷 모사해보기

우선, 시뮬레이션이 정상적으로 구동되었는 지 확인하기 위해, production run 트래젝토리를 가시화해줍니다.

#!/bin/bash

gmx trjconv -f nvt.trr -s nvt.tpr -o nvt_trjconv.gro << EOF
0
EOF

gmx trjconv -f npt.trr -s npt.tpr -o npt_trjconv.gro << EOF
0
EOF

gmx trjconv -f prod.trr -s prod.tpr -o prod_trjconv.gro << EOF
0
EOF

echo "트래젝토리를 빠르게 확인해보세요."
sleep 2
exit
trjconv.sh
chmod +x trjconv.sh && ./trjconv.sh

만약 relaxation이 잘 되었는지 확인하려면 nvt_trjconv.gro나 npt_trjconv.gro를, production run이 잘 되었는지 확인하려면 prod_trjconv.gro를 가시화 소프트웨어에서 불러오면 됩니다.

저는 OVITO를 활용하여 가시화해보겠습니다.

튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 8

2.46%의 펙틴이 존재해도 하이드레이트가 잘 자라는 것을 확인할 수 있습니다.

튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 9

이 경향은 문헌에서도 보여진 바 있으므로, 시뮬레이션이 잘 재현되었다고 말할 수 있겠습니다.

문제는 저희가 출력한 prod_trjconv.gro로는 문헌 그림에서처럼 저해제와 하이드레이트, 그리고 메테인 분자를 구분 지어 표현할 수 없다는 점인데, 이는 모든 분자들이 단 하나의 .gro 파일로 출력되었기 때문입니다.

종류 별 분자들을 구분지어 보고 싶을 때에는 다음과 같이 개별적으로 파일들을 출력해봅니다.

#!/bin/bash

gmx trjconv -f prod.trr -s prod.tpr -o prod_trjconv_water.gro << EOF
5
EOF

gmx trjconv -f prod.trr -s prod.tpr -o prod_trjconv_methane.gro << EOF
3
EOF

gmx trjconv -f prod.trr -s prod.tpr -o prod_trjconv_246PECTIN.gro << EOF
2
EOF

echo "종류 별로 분자들을 관찰하세요."
sleep 2
exit
trjconv2.sh
chmod +x trjconv2.sh && ./trjconv2.sh

출력된 세 가지 서로 다른 .gro 파일을 visualization 소프트웨어에 업로드해봅니다.

저는 OVITO에 이 세 가지 파일들을 전부 로딩한 후, 최대한 문헌과 비슷한 그림이 출력될 수 있도록 간단히 칼라 코드를 만져보았습니다. 그 결과,

튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 10

즉, Pectin dimer와 물, 그리고 메테인 분자들을 모두 구분지어 표현할 수 있습니다.

(2) 하이드레이트 구조 식별해보기

OVITO 내에 implemented 되어 있는 CHILL+ 플러그인을 사용하면, 복잡한 코딩 없이 손 쉽게 하이드레이트 구조만 식별할 수 있습니다.

이전에 CHILL+ 코드를 사용하기 위해서는 포트란으로 작성된 코드를 구동시켜 한 프레임, 한 프레임에 대해서 하이드레이트 식별을 진행해야 했으나, Henrik Andersen Sveinsson의 도움으로 OVITO 내에서 마우스 클릭만으로도 해당 식별 코드를 사용할 수 있게 되었습니다. 상세한 내용은 여기를 확인해주세요.

물론, 하이드레이트 식별 코드를 혼자서 작성해볼 수도 있겠지만, visualization 프로그램 내에서 인터랙티브하게 하이드레이트 구조를 알아볼 수 있다는 점, 그리고 식별 속도가 커스텀 코드에 비해서 매우 빠르다는 것 등 여러 장점 때문에 왠만해서는 OVITO 내 코드를 사용하는 것이 빠르고 편합니다.

Xu et al.은 문헌 내에서 하이드레이트 식별을 별도로 진행하지 않았지만, 해당 튜토리얼에서는 하이드레이트가 얼마나 자랐는지 육안으로 직접 확인해보기 위해 바로 CHILL+을 적용해보도록 하겠습니다.

CHILL+ 트래젝토리에 쉽게 적용하고 시각화하기
  1. OVITO를 열고 prod_trjconv_water.gro 파일을 로드한다.
  2. Select type을 클릭한다.
    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 11
  3. Particle Type을 선택한다.
    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 12
  4. X, H를 클릭한다.
    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 13
  5. Modification 탭의 Delete selected를 클릭한다.
    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 14
  6. 2~3 과정을 반복하고, 이번에는O 를 클릭한다.
    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 15
  7. Structure identification - Chill+을 클릭한다.
    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 16
  8. Select type 파이프라인을 추가한 후,Hydrate만 제외 모든 항목에 체크를 누른다.
    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 17
  9. 다시 Delete selected 파이프라인을 클릭한다.
  10. Visualization 탭의 Create bonds 파이프라인을 클릭한다.
    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 18
  11. Pair-wise cutoffs 를 체크하고, 나머지 값은 모두 비운 채 O - O cutoff 값을 3.5로 설정한다 (O…O 수소 결합 길이 = 3.5 Å).
    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 19
  12. 하이드레이트 구조만 식별되는 것을 확인할 수 있다.
    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 20
  13. 정상적으로 파이프라인들을 쌓았다면 다음과 같은 모습일텐데,
    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 21

    다음에 이 스택들을 또 쌓지 않기 위해 프리셋에 저장해둔다.

    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 22

    맨 밑의 아이콘을 누른다.

    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 23

    New… 를 탭하고

    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 24

    쌓은 파이프라인들에 모두 체크하고, Template name에 내 프리셋 이름을 저장해둔다.

    튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 25

    잘 저장되었음을 알 수 있다.

위 방법을 통해 CHILL+ 을 적용하고, 칼라코드를 적당히 잘 손보면, 다음과 같은 visualization이 가능해집니다.

튜토리얼 2: 하이드레이트 저해제 유무에 따른 하이드레이트 성장 관찰해보기 — image 26

6. 몇 가지 정량 분석들

시뮬레이션을 통해 얻어 낸 결과 파일들을 통해, 몇 가지 정량 분석들을 진행해보겠습니다. 정량 분석은 참고 문헌에서 진행한 것을 최대한 따라해보겠습니다.

해당 논문에서는

  • Radial distribution functions (RDFs) analysis (시간 별 - RDF 추이 비교; ⇒ Carbon atom of molecule)
  • 시간 별 potential energy 추이 비교

를 정량 분석으로 진행하였습니다.

(1) , , 구해보기

참고 논문에서는 아래와 같이 시스템 내 원자들 간의 RDF, 원자들 간의 RDF, 그리고 와 간의 RDF 프로파일들을 비교하였습니다. 이 튜토리얼에서도 과연 가능한지 시도해보겠습니다.

Cm-Cm RDF 레퍼런스
Cm-Cm RDF 레퍼런스
Ow-Ow RDF 및 Ow-Op RDF 레퍼런스
Ow-Ow RDF 및 Ow-Op RDF 레퍼런스

다음 bash 코드를 실행시키면, .xvg라는 확장자의 RDF 결과 파일들을 Cm-Cm_RDF/ , Ow-Ow_RDF/, 그리고 Op-Ow_RDF/폴더 안에서 발견할 수 있습니다.

analrdf.sh 및 실행
#!/bin/bash 

########
# 인덱싱 #
########

# 메테인의 C 원자들을 인덱싱
gmx make_ndx -f prod.gro -o Cm_index.ndx << EOF
a C
q
EOF

# 물 분자의 O 원자들과 펙틴 분자들의 O 원자들을 모두 인덱싱
gmx make_ndx -f prod.gro -o Ow+Op_index.ndx << EOF
a O
a O00 O05 O08 O0C O0G O0N O0P O0Q O0S O0V O0Z O11 O12
q
EOF


#####################
# Cm-Cm RDF 분석 진행 #
#####################

# 1. 0 ~ 1 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_0-1ns_Cm-Cm.xvg -tu ns -b 0 -e 1 -n Cm_index.ndx << EOF
7
7
EOF

# 2. 9 ~ 10 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_9-10ns_Cm-Cm.xvg -tu ns -b 9 -e 10 -n Cm_index.ndx << EOF
7
7
EOF

# 3. 19 ~ 20 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_19-20ns_Cm-Cm.xvg -tu ns -b 19 -e 20 -n Cm_index.ndx << EOF
7
7
EOF


#####################
# Ow-Ow RDF 분석 진행 #
#####################

# 1. 0 ~ 1 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_0-1ns_Ow-Ow.xvg -tu ns -b 0 -e 1 -n Ow+Op_index.ndx << EOF
7
7
EOF

# 2. 9 ~ 10 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_9-10ns_Ow-Ow.xvg -tu ns -b 9 -e 10 -n Ow+Op_index.ndx << EOF
7
7
EOF

# 3. 19 ~ 20 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_19-20ns_Ow-Ow.xvg -tu ns -b 19 -e 20 -n Ow+Op_index.ndx << EOF
7
7
EOF


#####################
# Ow-Op RDF 분석 진행 #
#####################

# 1. 0 ~ 1 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_0-1ns_Ow-Op.xvg -tu ns -b 0 -e 1 -n Ow+Op_index.ndx << EOF
7
8
EOF

# 2. 9 ~ 10 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_9-10ns_Ow-Op.xvg -tu ns -b 9 -e 10 -n Ow+Op_index.ndx << EOF
7
8
EOF

# 3. 19 ~ 20 ns 구간 RDF 출력
gmx rdf -f prod.trr -s prod.tpr -o rdf_19-20ns_Ow-Op.xvg -tu ns -b 19 -e 20 -n Ow+Op_index.ndx << EOF
7
8
EOF



##############
# 파일 정리하기 #
##############

# 출력된 `.xvg` 파일들을 한 폴더 안에 묶기 
mkdir Cm-Cm_RDF/;
mv ./rdf_*ns_Cm-Cm.xvg ./Cm-Cm_RDF/;

mkdir Ow-Ow_RDF/;
mv ./rdf_*ns_Ow-Ow.xvg ./Ow-Ow_RDF/;

mkdir Ow-Op_RDF/;
mv ./rdf_*ns_Ow-Op.xvg ./Ow-Op_RDF/;

echo "RDF 분석이 완료되었습니다."
sleep 2
exit;
analrdf.sh
chmod +x analrdf.sh && ./analrdf.sh

xmgrace 가 작동되는 컴퓨터라면 다음과 같은 커맨드를 타이핑하여 RDF가 잘 출력되었는지 확인해보세요.

xmgrace ./Cm-Cm_RDF/*.xvg # Cm-Cm RDF 확인
xmgrace ./Ow-Ow_RDF/*.xvg # Ow-Ow RDF 확인
xmgrace ./Ow-Op_RDF/*.xvg # Ow-Op RDF 확인

a.

Cm-Cm RDF
Cm-Cm RDF

b. + 동시 플롯해보기

동시 플롯은 다음 커맨드를 이용하여 진행했습니다.

xmgrace ./Ow-Ow_RDF/*0-1ns* ./Ow-Op_RDF/*0-1ns*
Ow-Ow RDF 및 Ow-Op RDF
Ow-Ow RDF 및 Ow-Op RDF

레퍼런스와 비교했을 때 거의 비슷한 경향을 보입니다.

다만, 노이즈가 심하게 끼는 경향을 볼 수 있는데, 이는 RDF 탐색 구간을 더욱 길게 하여 그래프를 스무딩 하면 해결할 수 있을 것으로 보입니다.

(2) Potential energy 추이 구해보기

이 튜토리얼에서는 2.46% pectin 포함 시스템만 구동하였으나,

pectin이 포함되지 않은 시스템 (control)과 3.62% pectin 포함 시스템을 구동시킨 후 비교하면 저해제가 들어갔을 때 하이드레이트의 성장이 저해되었는지를 확인할 수 있을 것입니다.

따라서 여기서는 potential energy를 얻는 방법만 제시하고, 각 시스템 별 비교는 직접 구동을 진행하여 해보시기를 권장드립니다.

아래 bash 스크립트를 이용하여 potential energy를 플롯해보세요.

#!/bin/bash

gmx energy -f prod.edr -o potenergy.xvg << EOF
11
EOF

xmgrace potenergy.xvg
potenganal.sh
chmod +x potenganal.sh && ./potenganal.sh
Pectin 2.46% system의 potential energy plot
Pectin 2.46% system의 potential energy plot
  • 실제 문헌에서의 potential energy 값과는 다소 차이가 있습니다. 왜냐하면 이 튜토리얼에서는 all-atom CH4을 사용하였고, 문헌에서는 united-atom CH4 모델을 사용하였기 때문입니다.
  • 중요한 것은 pectin 3.62% 혹은 non-pectin 시스템과의 경향 비교입니다.

    → pectin 투여에 의해 효과적으로 하이드레이트 저해가 일어났다면, pectin을 투여한 시스템에서 potential energy 감소가 더 나중에 일어날 것입니다 (potential energy 낮아질 수록 하이드레이트 성장).

◻️

Settings설정

Theme테마
Language언어
Text size글자 크기
Font글꼴
Background grid배경 격자
Motion모션
Accent포인트 색

Saved in this browser.이 브라우저에 저장돼요.