文章来源:“分子动力学”公众号
原文链接:https://mp.weixin.qq.com/s/KeFd5OGBH9PYXIn1lNcJWg
分子动力学模拟
Gromacs分子动力学模拟主要可以分为以下几个步骤,不同的体系步骤可能略有不同。
预平衡
在开始之前,先简单了解一下预平衡:
分子动力学模拟的最终目的是对体系进行抽样,然后计算体系的能量,各种化学键,成分分析等等。打个比方说,我们有一个蛋白质,我们想将它放入一种溶液中(可能是水,也可能不是),然后看看这个体系的能量如何变化,蛋白质的化学键,与水分子形成的氢键等等信息,那么我们需要将蛋白质放入溶液中,映射到现实中就是讲溶剂放入溶剂中,然后等体系稳定后,观察其性质。
在MD中,这一过程不向现实中一样是自然发生的,我们需要通过模拟是体系演化到平衡状态,这就是预平衡。一般来说预平衡会有以下办法:
蛋白质结构能量最小化:PDB文件都是从晶体中获得的,所以蛋白质放入溶液中后必然会发生变化,这就需要对其进行能量最小化,确保蛋白质的结构是稳定结构。
蛋白质位置限定性模拟:有时加入溶剂后,分子间相互作用力会过大,导致蛋白质体系崩溃。这时我们需要限制蛋白质中重原子的位置,维持其结构,等溶剂分子弛豫之后再放开限制进行模拟。
NVT预平衡,NPT预平衡:一般先做NVT模拟,减小盒子内压力,然后再做NPT模拟。
以上步骤当然不用全做,视情况而定,不过一般蛋白质能量最小化和位置限定性NPT还是要做的。
步骤
以下是分子动力学模拟的步骤,有些步骤可以省略。
1.获取并处理PDB文件
一般PDB文件是从网站上下载,如http://www.rcsb.org/pdb/home/home.do。获取PDB文件后有可能还要做一些处理,如末端氢原子,结晶水,等等。视情况而定。
-
使用pdb2gmx获得拓扑文件
命令pdb2gmx的详细信息可以参加http://manual.gromacs.org/programs/gmx-pdb2gmx.html。具体的命令参数我会在另一篇文章中详述。一般而言,我们使用时会是向下面这样:
gmx pdb2gmx -ff amber99sb-ildn -f *.pdb -o .gro -p .top -water tip3p
-ff 选项,制定要使用的力场;
-f选项,制定输入的PDB文件;
-o选项,制定生成的gro文件名
-p选项,制定要生成的拓扑文件名
-water选项,制定要使用的水分子模型
注意,除了生成.gro文件和.top文件之外,还会生成一个posre.itp,位置限定性文件(我把它理解成position-restraints的缩写)。
如果不使用-ff选项的话,指令运行后会让你自行选择力场。 -
定义盒子
定义盒子和填充溶剂可以看做一步,在这里为了详细就分开来说。
与前面一样,涉及到的命令及文件都在其他文章中详述,下文不再赘述。使用editconf命令创建盒子:
gmx editconf -f *.gro -o *.gro -c -bt cubic -d 1.2
-f:指定输入的蛋白结构
-o:指定输出带盒子信息的结构文件
-c:将蛋白质置于盒子的中心,这个选项是可选的,不必须。
-d:蛋白质与模拟盒子在XYZ方向上的最小距离,一般不能小于0.9nm
-bt:指定盒子类型,这里使用了立方盒子,还可以用八面体,十二面体等。
这样我们就得到了周期型立方格子中的蛋白质分子。
ediconf命令可以用于gro文件与pdb文件的相互转换。用-f指定源文件,-o指定所需文件名即可。 -
蛋白质真空中的能量最小化(非必须)
一般而言这一步不是必须的,不过这里还是简述一下。如果我们只需要在真空中进行能量最小化的化,下一步就可以直接成品模拟了。
Gromacs使用grompp指令(GROMacs Pre-Preocessor)对带有格子信息的gro文件与蛋白质的拓扑文件,还有mdp文件进行处理,从而得到用于mdrun的输入文件*.tpr。tpr为二进制文件。具体指令如下:
gmx grompp -f .mdp -c .gro -p .top -o .tpr
-f:指定输入参数文件。mdp文件会有专门的文章叙述
-c:指定输入结构文件
-p:指定输入拓扑文件
-o:指定用于mdrun的tpr文件
运行之后我们得到.tpr文件和参数文件mdout.mdp
然后使用mdrun命令运行能量最小化:
gmx mdrun -v -deffnm *
-v:显示模拟过程中的信息
-deffnm:我把它理解成define-file-name的缩写。定义输出文件名,文件后缀会自动加上。
运行后得到日志文件.log,全精度轨迹问价.trr,能量文件.edr,能量最小化的结构文件*.gro。 -
向盒子中填充溶剂
其实这只是一小步,同上,为了详细我把它单独列为一步。
使用solvate命令填充溶剂,以水为例:
gmx solvate -cp *.gro -cs *.gro -o *.gro -p *.top
-cp:指定需要填充水分子的体系,即前面我们用editconf得到的带格子的结构文件
-cs:指定要使用的水模型
-p:指定体系的拓扑文件(原蛋白质的拓扑文件),这样solvate就可以修改体系的拓扑文件。
-:指定填充水分子后的输出文件
运行之后我们可以得到得到-o所指定的文件,并且-p指定的top文件也会发生改变。 -
添加离子
向盒子中添加溶剂之后,我们得到了一个带电荷的溶液体系,因此必须进行中和。GROMACS中添加离子的指令是genion(我把它理解成generate-ion的缩写),但是不巧的是genion需要的输入文件为tpr文件。跟前面一样,这需要grompp(GROMacs Pre-Processor)来产生。grompp可以处理坐标文件和拓扑(描述分子的文件)从而产生原子级别的输入文件,即tpr文件,tpr文件包含了体系中所有原子的参数。
为了将坐标信息(gro)和拓扑信息(top)结合起来,我们需要一个mdp文件。mdp文件通常用于进行能量最小化,这里只是简单的生成tpr文件。
gmx grompp -f *.mdp -c *.gro -p *.top -o *.tpr
-f:指定mdp文件
-c:指定结构文件(加入溶剂后的结构文件)
-p:指定拓扑文件(还是之前生成的蛋白质拓扑,当然在加入溶剂时该文件发生了变化)
-o:指定输出文件
得到tpr文件后,就可以在其中加入离子了:
gmx genion -s *.tpr -o *.gro -p *.top - pname * -nname * -nn *
-s:将上述生成的tpr文件作为输入
-o:生成新的结构文件
-p:再次改变top文件,反应蛋白质结构的改变
-pname:指定要添加的阳离子名称,后面未指定数量,即为不添加
-nname:指定添加的阴离子名称
-nn:添加的阴离子数目 -
能量最小化
现在,我们定义了盒子(周期性边界条件),溶剂分子,离子。整个体系已经到达电中性。在进行模拟之前,我们必须确保体系的结构正常,原子间距离不要太近,结合构型合理。这就需要对结构进行弛豫,这一过程称之为能量最小化(EM,energy minimization),是MD中非常重要的一步。
与前面类似,依然是需要用grompp来产生tpr文件,首先要定义一个minim.mdp文件,定义好之后:
gmx grompp -f minim.mdp -c *.gro -p *.top -o *.tpr
-f:指定mdp文件
-c:指定结构文件
-p:指定拓扑文件
-o:指定输出的文件名
得到tpr文件后就可以进行能量最小化了
gmx mdrun -v -deffnm em
mdrun的指令与前面一样。
我们将得到以下文件:
*.log 日志文件,记录了能量最小化过程
*.edr 二进制能量文件
*.trr 全精度的二进制轨迹文件
*.gro 能量最小化的结构
现在,我们的体系已经处于能量最小点了,可以做一些真正的模拟了! -
NVT平衡
NVT平衡实际上是很重要的一步,但是它的核心在于mdp文件,而mdp文件我将在另一篇文章中单独阐述,因此这里对于NVT模拟就简化处理。
在一开始的pdb2gmx中我们生成了一个posre.itp 文件,这里终于派上用场了!它的作用是对蛋白质中的重原子(非氢原子)施加位置限制力。施加限制之后,这些原子就不能随便移动,除非能量非常大。这样做的目的在于平衡蛋白质周围分子的同时而不引起蛋白质结构的变化。
定义好mdp文件后,就可以进行模拟了。
gmxgrompp -f *.mdp -c *.gro -p *.top -o *.tpr
-c指定前面生成的能量最小化的结构文件,-p依然指向那个被修改了多次的蛋白质top文件,-o指定输出文件。
gmx mdrun -deffnm *
指定输出文件名。 -
NPT平衡
与NVT平衡类似,关键在于mdp文件中,因此不再赘述,命令如下
gmx grompp -f *.mdp -c *.gro -t *.cpt -p *.top -o *.tpr
gmx mdrun -deffnm *
ct为断点文件(check point),详见关于文件的文章中。 -
成品MD
现在我们的体系已经在需要的温度和压强下平衡(弛豫)好了,我们可以放开位置限制并进行最终的MD,以收集数据了。
同样,先定义mdp文件,然后运行
gmx grompp -f *.mdp -c npt.gro -t npt.cpt -p *.top -o *.tpr
gmx mdrun -deffnm *