gromacs教程练习1

gromacs能在win上运行,还是个开源的软件,这都很值得入手学习

记录下gromacs教程的练习情况:

Lysozyme in water

水中的溶菌酶,嗯,估计就是把蛋白处理后放在显试溶剂里跑MD这个模拟。

1、文件的准备:

1、先到PDB数据库下载1AKI的蛋白文件

2、用文本编辑器将water去掉,在VMD或者pymol里查看分子的结构,看是否有结构的缺失。

3、用gmx的pdb2gmx生成需要的文件:

  • 一个拓扑文件
  • 一个限制坐标信息文件
  • 一个坐标结构(预进程的结构)文件

拓扑文件(*.top)包含的信息:非键参数(原子类型和电荷信息)、键参数(键、键角和二面角)

bash 复制代码
gmx pdb2gmx -f .\1aki_delwat.pdb -o 1aki_processed.gro -water spce

#-f 后接pdb文件
#-water 选择要使用的水模型:none, spc, spce, tip3p, tip4p, tip5p,tips3p
#-o 输出的结构文件,gro格式
#-p 输出的拓扑文件

按下回车后,跳出系列力场进行选择

教程里选择15的all-atom OPLS力场,所以这里在光标处输入15,按下回车

然后结构文件gro、拓扑文件top就生成了

教程里介绍的几个gmx2pdb的关键字:

bash 复制代码
-ignh: #忽略pdb文件里的H原子,不去除,一般这种情况是需要pdb里H原子的坐标信息,但需要手动修改H原子的名字,让其符合gromacs的格式
-ter: #交互式地为N端和C端分配电荷状态。
-inter: #交互式地为 Glu、Asp、Lys、Arg 和 His 分配电荷状态;选择哪些Cys参与二硫键

2、检查拓扑文件:

3、定义盒子和填充溶剂:

这里主要的两个步骤:

  • 1、定义盒子的维度,通过editconf模块
  • 2、给盒子填上溶剂,使用solvate模块

使用命令:

bash 复制代码
gmx editconf -f 1AKI_processed.gro -o 1AKI_newbox.gro -c -d 1.0 -bt cubic

-f -o:#输入、输出坐标文件(*.gro)
-c: #让蛋白质放置在盒子中央(center)
-d:#指出盒子的尺寸,1nm
-bt:#指出盒子的类型,立方体

到盒子边缘的距离是一个重要的参数。由于我们将使用周期性边界条件,因此必须满足最小图像约定。也就是说,蛋白质永远不应该看到它的周期性图像,否则计算出的力将是虚假的。指定 1.0 nm 的溶质盒距离意味着蛋白质的任何两个周期图像之间至少有 2.0 nm。这个距离对于模拟中常用的任何截止方案来说都足够了。

bash 复制代码
gmx solvate -cp 1AKI_newbox.gro -cs spc216.gro -o 1AKI_solv.gro -p topol.top

-cp: #上一步editconf输出的gro文件
-cs: #gromacs自带的水模型,spc216.gro,这是一个通用的平衡3点溶剂模型。您可以使用它作为SPC、SPC/E 或TIP3P水的溶剂配置,因为它们都是三点水模型。

-o:#输出的更新的坐标文件
-p:#输出的更新的拓扑文件

检查拓扑文件的[moleucles]模块,里面的内容出现更新:

bash 复制代码
[ molecules ]
; Compound  #mols
Protein_A       1 
SOL         10832 

4、增加离子:

在拓扑文件中检查体系的电荷(蛋白的电荷)

在[atom]区域的信息里,有qtot的字眼,是原子电荷累计的总和,查看最后列的qtot数值就是体系的整体电荷。这个体系是8个正电荷。

Gromacs里增加离子的模块是genion

再用genion添加离子前,需要用grompp模块生成一个*.tpr文件

tpr是一个包含结构信息、拓扑信息和模拟参数的二进制输入文件

而用grompp之前,需要准备如下的*.mdp (molecular dynamics ++p++arameter file) 文件

复制代码
; ions.mdp - used as input into grompp to generate ions.tpr
; Parameters describing what to do, when to stop and what to save
integrator  = steep         ; Algorithm (steep = steepest descent minimization)
emtol       = 1000.0        ; Stop minimization when the maximum force < 1000.0 kJ/mol/nm
emstep      = 0.01          ; Minimization step size
nsteps      = 50000         ; Maximum number of (minimization) steps to perform

; Parameters describing how to find the neighbors of each atom and how to calculate the interactions
nstlist         = 1         ; Frequency to update the neighbor list and long range forces
cutoff-scheme	= Verlet    ; Buffered neighbor searching 
ns_type         = grid      ; Method to determine neighbor list (simple, grid)
coulombtype     = cutoff    ; Treatment of long range electrostatic interactions
rcoulomb        = 1.0       ; Short-range electrostatic cut-off
rvdw            = 1.0       ; Short-range Van der Waals cut-off
pbc             = xyz       ; Periodic Boundary Conditions in all 3 dimensions

这些参数都是基于OPLS-AA力场设置的,跟换力场,参数可能不适用(来自教程的提示)。

bash 复制代码
gmx grompp -f ions.mdp -c 1AKI_solv.gro -p topol.top -o ions.tpr

-f #后接复制到的mdp文件
-c -f #后面是结构和拓扑文件
-o #是输出的*.tpr文件

这样,tpr文件就生成了

bash 复制代码
gmx genion -s ions.tpr -o 1AKI_solv_ions.gro -p topol.top -pname NA -nname CL -neutral

-s #加tpr文件
-o -p #更新的结构文件和拓扑文件
-pname -nname #增加的阴阳离子是什么元素
-neutral #让体系处于电中性
-conc #指出增加的离子浓度

然后选择13号组,嵌入离子

5、进行能量最小化(EM):

5.1、操作:

这一步和增加离子类似,要用grompp生成一个*.tpr文件,然后用gromacs的MD引擎mdrun进行能量最小化。

将上一步增加离子的ions.mdp拷贝一件,重命名为minim.mdp

bash 复制代码
gmx grompp -f minim.mdp -c 1AKI_solv_ions.gro -p topol.top -o em.tpr

-f: #后接模拟参数信息,这里的信息和增加离子的类似
-c -p: #后接结构、拓扑文件
-o: #后是输出的以上信息的组装的二进制文件

没有出错,接下来就是EM:

bash 复制代码
gmx mdrun -v -deffnm em

-v: #将细节输出到终端里
-deffnm: #后接所有的文件名(包括输出和输入)
-s: #后接输入文件,就是em.tpr

这里会得到系列输出文件,如果EM结束

  • em.log:文本文件,EM进程的日志文件
  • em.edr: 二进制的能量文件
  • em.trr: 二进制的精确的轨迹文件
  • em.gro: 能量最小化的结构

5.2、如何判断一个EM是否成功:

看两个因素:

①体系的势能Epot,对于一个水中的蛋白质,能量最小化后,其Epot应该在105-106之间。

②Fmax,在minim.mdp文件中,设置了一个参数:emtol = 1000.0,意思就是要Fmax<1000.0 kJ mol-1 nm-1

成功的最小化,要满足这两个条件。

提取em中的能量变化,进行分析:

bash 复制代码
gmx energy -f em.edr -o potential.xvg

输入命令后,会出现系列选项,这里选择10的potential

因为可以多选,在末尾输入0再回车

终端会返回poteintial的均值,和产生一个potential.xvg文件

xvg文件绘制图形,势能降至105-106kj/mol,说明最小化成功,可进行下一步的模拟。

6、平衡模拟:

EM保证一个合理的起始结构(建立的体系中水分子和蛋白的位置是人为放置的,原子间可能存在很近的,不合理的距离,从而产生极大的、不稳定的、不合理的能量),EM的目的就是解决这个。

在正式模拟(成品模拟)之前,体系中没有建立真实的密度,需要提高温度、再给予压力,让体系达到真实的密度。

好久前用pdb2gmx生成的posre.itp文件现在派上用场了

posre.itp文件的作用是约束蛋白质的重原子(C、O、N),受能量约束的原子依然可以移动,但是要克服一个巨大的能量惩罚(penalty)。这方便我们整顿蛋白周围的溶剂分子,而蛋白本身的结构没有发生太大的变化。

约束需要一个原点(约束力就像弹簧力,原子在原点,跑越远,受到拉扯回的力越大,向外的阻力也越大),这个原点就是能力最小化后的结构坐标。

一个平衡模拟由两个时相组成

6.1、NVT系综(NVT ensemble)模拟

在恒定的粒子数、体积和温度下进行模拟。这种程序的时间范围取决于系统的内容,但在NVT中,系统的温度应该达到所需值的平台,如果温度尚未稳定,则需要额外的时间。一般地,50~100ps是足够的。这里,我们进行一个100ps的NVT模拟。

拷贝如下的nvt.mdp文件:

复制代码
title                   = OPLS Lysozyme NVT equilibration 
define                  = -DPOSRES  ; position restrain the protein
; Run parameters
integrator              = md        ; leap-frog integrator
nsteps                  = 50000     ; 2 * 50000 = 100 ps
dt                      = 0.002     ; 2 fs
; Output control
nstxout                 = 500       ; save coordinates every 1.0 ps
nstvout                 = 500       ; save velocities every 1.0 ps
nstenergy               = 500       ; save energies every 1.0 ps
nstlog                  = 500       ; update log file every 1.0 ps
; Bond parameters
continuation            = no        ; first dynamics run
constraint_algorithm    = lincs     ; holonomic constraints 
constraints             = h-bonds   ; bonds involving H are constrained
lincs_iter              = 1         ; accuracy of LINCS
lincs_order             = 4         ; also related to accuracy
; Nonbonded settings 
cutoff-scheme           = Verlet    ; Buffered neighbor searching
ns_type                 = grid      ; search neighboring grid cells
nstlist                 = 10        ; 20 fs, largely irrelevant with Verlet
rcoulomb                = 1.0       ; short-range electrostatic cutoff (in nm)
rvdw                    = 1.0       ; short-range van der Waals cutoff (in nm)
DispCorr                = EnerPres  ; account for cut-off vdW scheme
; Electrostatics
coulombtype             = PME       ; Particle Mesh Ewald for long-range electrostatics
pme_order               = 4         ; cubic interpolation
fourierspacing          = 0.16      ; grid spacing for FFT
; Temperature coupling is on
tcoupl                  = V-rescale             ; modified Berendsen thermostat
tc-grps                 = Protein Non-Protein   ; two coupling groups - more accurate
tau_t                   = 0.1     0.1           ; time constant, in ps
ref_t                   = 300     300           ; reference temperature, one for each group, in K
; Pressure coupling is off
pcoupl                  = no        ; no pressure coupling in NVT
; Periodic boundary conditions
pbc                     = xyz       ; 3-D PBC
; Velocity generation
gen_vel                 = yes       ; assign velocities from Maxwell distribution
gen_temp                = 300       ; temperature for Maxwell distribution
gen_seed                = -1        ; generate a random seed

上面的NVT参数以及EM后的结构和拓扑文件,利用grompp集合成一个二进制文件nvt.tpr:

bash 复制代码
gmx grompp -f nvt.mdp -c em.gro -r em.gro -p topol.top -o nvt.tpr

用MD引擎mdrun进行模拟:

bash 复制代码
gmx mdrun -deffnm nvt

CPU烧了6min,就好了。教程里说"如果在 16 个内核左右并行运行,则不到一个小时"

但我的机子没这么厉害......

分析模拟后的温度变化:

bash 复制代码
gmx energy -f nvt.edr -o temperature.xvg

终端里输入16 0

对*xvg绘图的结果应该是:

从图像中可见,体系的温度迅速达到目标温度(300K),然后在其附近稳定波动。

对于这样的体系,NVT只需要50ps的模拟就能达到

6.2、NPT系综(NPT ensemble)模拟:

稳定温度后,需要稳定体系的压力,让体系的密度达到稳定,更接近实验条件。

NPT模拟同样进行100ps

模拟的参数信息(文本格式)如下,拷贝成一个npt.mdp文件

复制代码
title                   = OPLS Lysozyme NPT equilibration 
define                  = -DPOSRES  ; position restrain the protein
; Run parameters
integrator              = md        ; leap-frog integrator
nsteps                  = 50000     ; 2 * 50000 = 100 ps
dt                      = 0.002     ; 2 fs
; Output control
nstxout                 = 500       ; save coordinates every 1.0 ps
nstvout                 = 500       ; save velocities every 1.0 ps
nstenergy               = 500       ; save energies every 1.0 ps
nstlog                  = 500       ; update log file every 1.0 ps
; Bond parameters
continuation            = yes       ; Restarting after NVT 
constraint_algorithm    = lincs     ; holonomic constraints 
constraints             = h-bonds   ; bonds involving H are constrained
lincs_iter              = 1         ; accuracy of LINCS
lincs_order             = 4         ; also related to accuracy
; Nonbonded settings 
cutoff-scheme           = Verlet    ; Buffered neighbor searching
ns_type                 = grid      ; search neighboring grid cells
nstlist                 = 10        ; 20 fs, largely irrelevant with Verlet scheme
rcoulomb                = 1.0       ; short-range electrostatic cutoff (in nm)
rvdw                    = 1.0       ; short-range van der Waals cutoff (in nm)
DispCorr                = EnerPres  ; account for cut-off vdW scheme
; Electrostatics
coulombtype             = PME       ; Particle Mesh Ewald for long-range electrostatics
pme_order               = 4         ; cubic interpolation
fourierspacing          = 0.16      ; grid spacing for FFT
; Temperature coupling is on
tcoupl                  = V-rescale             ; modified Berendsen thermostat
tc-grps                 = Protein Non-Protein   ; two coupling groups - more accurate
tau_t                   = 0.1     0.1           ; time constant, in ps
ref_t                   = 300     300           ; reference temperature, one for each group, in K
; Pressure coupling is on
pcoupl                  = Parrinello-Rahman     ; Pressure coupling on in NPT
pcoupltype              = isotropic             ; uniform scaling of box vectors
tau_p                   = 2.0                   ; time constant, in ps
ref_p                   = 1.0                   ; reference pressure, in bar
compressibility         = 4.5e-5                ; isothermal compressibility of water, bar^-1
refcoord_scaling        = com
; Periodic boundary conditions
pbc                     = xyz       ; 3-D PBC
; Velocity generation
gen_vel                 = no        ; Velocity generation is off 

用grompp对文件整合成二进制文件tpr:

bash 复制代码
gmx grompp -f npt.mdp -c nvt.gro -r nvt.gro -t nvt.cpt -p topol.top -o npt.tpr

-t: #检查点文件,来自上一步的NVT模拟

用md引擎开始跑:

bash 复制代码
gmx mdrun -deffnm npt

同样也需要点时间

完成模拟后,用energy模块进行压力数据提取:

bash 复制代码
gmx energy -f npt.edr -o pressure.xvg

命令回车后,输入18 0

压力的波动很大,图中红线是每10ps计算均值绘制出的曲线。

100ps模拟的压力均值是7.5 ± 160.5 bar,参考的压力设置为1bar,这在npt.mdp文件里可以找到

由于均值较大的RMSF(160.5 bar),尚不能从统计学上分析样本均值和参考均值有无差异。

用energy对密度进行提取:

bash 复制代码
gmx energy -f npt.edr -o density.xvg

输入24 0在光标处

100ps内的平均密度是1019 ± 3 kg m-3,和实验值(1000 kg m-3)接近,使用的SPC/E model的预期密度是1008 kg m-3。

模拟过程中,密度、温度、压力达到稳定,体系达到平衡。

NPT模拟还需要延长点时间

7、成品模拟:

7.1、操作:

拷贝如下的模拟参数,命名为md.mdp

复制代码
title                   = OPLS Lysozyme NPT equilibration 
; Run parameters
integrator              = md        ; leap-frog integrator
nsteps                  = 500000    ; 2 * 500000 = 1000 ps (1 ns)
dt                      = 0.002     ; 2 fs
; Output control
nstxout                 = 0         ; suppress bulky .trr file by specifying 
nstvout                 = 0         ; 0 for output frequency of nstxout,
nstfout                 = 0         ; nstvout, and nstfout
nstenergy               = 5000      ; save energies every 10.0 ps
nstlog                  = 5000      ; update log file every 10.0 ps
nstxout-compressed      = 5000      ; save compressed coordinates every 10.0 ps
compressed-x-grps       = System    ; save the whole system
; Bond parameters
continuation            = yes       ; Restarting after NPT 
constraint_algorithm    = lincs     ; holonomic constraints 
constraints             = h-bonds   ; bonds involving H are constrained
lincs_iter              = 1         ; accuracy of LINCS
lincs_order             = 4         ; also related to accuracy
; Neighborsearching
cutoff-scheme           = Verlet    ; Buffered neighbor searching
ns_type                 = grid      ; search neighboring grid cells
nstlist                 = 10        ; 20 fs, largely irrelevant with Verlet scheme
rcoulomb                = 1.0       ; short-range electrostatic cutoff (in nm)
rvdw                    = 1.0       ; short-range van der Waals cutoff (in nm)
; Electrostatics
coulombtype             = PME       ; Particle Mesh Ewald for long-range electrostatics
pme_order               = 4         ; cubic interpolation
fourierspacing          = 0.16      ; grid spacing for FFT
; Temperature coupling is on
tcoupl                  = V-rescale             ; modified Berendsen thermostat
tc-grps                 = Protein Non-Protein   ; two coupling groups - more accurate
tau_t                   = 0.1     0.1           ; time constant, in ps
ref_t                   = 300     300           ; reference temperature, one for each group, in K
; Pressure coupling is on
pcoupl                  = Parrinello-Rahman     ; Pressure coupling on in NPT
pcoupltype              = isotropic             ; uniform scaling of box vectors
tau_p                   = 2.0                   ; time constant, in ps
ref_p                   = 1.0                   ; reference pressure, in bar
compressibility         = 4.5e-5                ; isothermal compressibility of water, bar^-1
; Periodic boundary conditions
pbc                     = xyz       ; 3-D PBC
; Dispersion correction
DispCorr                = EnerPres  ; account for cut-off vdW scheme
; Velocity generation
gen_vel                 = no        ; Velocity generation is off

进行信息整合为一个二进制的tpr文件:

bash 复制代码
gmx grompp -f md.mdp -c npt.gro -t npt.cpt -p topol.top -o md_0_1.tpr

grompp 将打印 PME 负载的估计值,这将指示应将多少处理器专用于 PME 计算,以及有多少处理器专用于 PP 计算。

开始成品模拟:

bash 复制代码
gmx mdrun -deffnm md_0_1 -nt 4

-nt:#使用多少线程

我机子能开8个线程,但这里占了我60~70%的CPU

Gabba Gabba Hey!

7.2、RMSD分析:

现在我们已经模拟了我们的蛋白质,我们应该对系统进行一些分析。哪些类型的数据很重要?这是运行模拟之前要问的一个重要问题,因此您应该对要在自己的系统中收集的数据类型有一些想法。在本教程中,将介绍一些基本工具。

第一个是trjconv,它被用作后处理工具,用于剥离坐标,校正周期性或手动更改轨迹(时间单位,帧频率等)。在本练习中,我们将使用 trjconv 来解释系统中的任何周期性。蛋白质将通过晶胞扩散,可能看起来"破碎"或可能"跳"到盒子的另一侧。要解释此类行为,请发出以下问题:

gmx trjconv -s md_0_1.tpr -f md_0_1.xtc -o md_0_1_noPBC.xtc -pbc mol -center

选择 1("蛋白质")作为要居中的组,选择 0("系统")作为输出。我们将对这种"修正"的轨迹进行所有分析。让我们先看一下结构稳定性。GROMACS有一个内置的RMSD计算实用程序,称为rms。要使用 rms,请发出以下命令:

gmx rms -s md_0_1.tpr -f md_0_1_noPBC.xtc -o rmsd.xvg -tu ns

选择 4("主干")作为最小二乘拟合和用于 RMSD 计算的组。-tu 标志将以 ns 为单位输出结果,即使轨迹是用 ps 写的。这样做是为了输出的清晰度(特别是如果你有一个长时间的模拟 - 1e + 05 ps看起来不如100 ns)。输出图将显示相对于最小化平衡系统中存在的结构的RMSD:

如果想要将能量最小化后的结构(晶体结构)作为RMSD计算的参考结构,可以用如下的命令:

gmx rms -s em.tpr -f md_0_1_noPBC.xtc -o rmsd_xtal.xvg -tu ns

两个时间序列都显示RMSD水平降至~0.1 nm(1 Å),表明结构非常稳定。

图之间的细微差异表明t = 0 ns时的结构与该晶体结构略有不同。这是意料之中的,因为它已被能量最小化,并且因为位置约束不是 100% 完美的,如前所述。

7.3、Rg分析:

蛋白质的回转半径(Rg)是一种衡量它的紧凑性的参数。 如果一个蛋白质是稳定的折叠,它将有可能保持相对稳定的Rg。 如果一个蛋白质的在模拟过程中展开,其Rg将随着时间而改变。

gmx gyrate -s md_0_1.tpr -f md_0_1_noPBC.xtc -o gyrate.xvg

选择 1("蛋白质")作为分析的组

图形绘制如下:

我们可以看到从合理的不变Rg值的蛋白质仍然非常稳定,在其紧凑(折叠)的形式过程中1ns在300K.这种结果并不意外,但说明了一个先进的能力GROMACS分析,来建立

相关推荐
涔溪1 小时前
HTTP TCP三次握手深入解析
网络·tcp/ip·http
憨子周1 小时前
2M的带宽怎么怎么设置tcp滑动窗口以及连接池
java·网络·网络协议·tcp/ip
三菱-Liu2 小时前
三菱MR-J4-B伺服连接器和信号排列
网络·驱动开发·硬件工程·制造·mr
WeeJot嵌入式2 小时前
网络安全:挑战、策略与未来趋势
网络
a1denzzz5 小时前
Linux系统的网络设置
linux·服务器·网络
黑客K-ing6 小时前
网络安全名词解释
开发语言·网络·安全·网络安全·php
Z pz7 小时前
网络编程——Python简单TCP通信功能代码实践
网络·python·tcp/ip
QQ_7781329747 小时前
信息收集、漏洞扫描、漏洞利用、权限提升、数据泄露
网络·计算机网络
运维小文7 小时前
K8资源之endpoint资源&EP资源
linux·网络·k8s·运维开发
迷途小码农零零发8 小时前
http的发展史
网络·网络协议·http