在给蛋白质添加水环境之后,一般要在水环境中添加金属离子,使模拟系统更加接近真实系统。如果系统中蛋白质本身已经带了静电量,那么就更要给系统加几个带相反电量的金属离子,使系统处于电中性。
gromacs中添加金属离子的命令是genion,使用" genion -h "可以得到其使用的参数,其中有几个比较常用:
---------------------------
" -s: "指定系统tpr文件。
" -p: "指定系统拓扑文件,在往系统中添加金属离子时,genion会往拓扑文件最后的分子类型中写入添加的离子数,并修改拓扑文件中系统原子数。
" -o: "指定输出文件,genion的输出是pdb文件或者gro等结构文件。也就是说你产生这个文件之后,还要再用这个文件产生tpr文件。
" -np/-nn: "带正/负电金属粒子的数目。这个数目有一点讲究,一般需要看个人的应用。假如想要得到" 0.1mol/L " 的离子浓度到底要加多少,可以自己算一下(很简单,方法很多,比如看课本)。也可以直接使用" -conc " 参数直接指定离子浓度,在使用" -conc "参数时,建议使用" -neutral "参数配合,即使系统的最后处于电中性。嗯,gromacs开发组想得不要太周到哦(南京话)。
" -pn/-nn "指定正负金属离子的名字,比如" NA+ "或者" CL- "。可以看看gromacs安装途径" share/gromacs/top/ " 下面你用的力场文件中离子到底用什么名字,也可以使用新的离子,但是要在力场中定义,或者把新离子的itp文件使用" include "添加到系统拓扑文件中。
" -random "随机位置添加离子。这个比较有说法,如果不用该参数,那么离子就会添加在势能最低处,即靠近蛋白质相反电量的部位。有的人说这样可以节省时间,但是这样一跑MD,离子就会抱跟着蛋白,死死不放,不是很好。
" -seed "有随机,就是随机种子,如果发现使用" -random "添加离子自由,离子离蛋白太近(比如说小于0.1nm),那么可以指定新的seed。
---------------------------
嗯,给一个例子:
------
" genion -s topol.tpr -o system_ion.pdb -p system.top -np 100 -pname Na -nn 100 -nname Cl -random "
------
说明一下:加了100个Na和100个Cl,随机加,输出文system_ion.pdb文件。
再使用grompp生成一个新的tpr,就可以计算了。
几乎gromacs的所有分析数据都可以输出为xmgrace的数据文件,g_traj可以产生gromacs轨迹的各个组的坐标,速度,受力和边界等等。使用” -com “参数可以求出轨迹中各个组的质心的坐标,速度,受力等;使用” -mol “则可以求取系统中各个分子的信息;” -ot “则可以求出系统中各个组的温度。
还有几个其他参数,比如” -cv “可以求平均速度,” -cf “可以求平均受力等。其他参数同其他命令无异,参加说明文件。
Gromacs的各个工具都很有个性,如果互相结合,可以做很多事情。
g_energy求系统轨迹各个能量的,一般跑完MD之后,使用g_energy处理ener.edr只能得到系统的各个能量项。但是如果想求系统中两个不同部分在模拟过程中的相互作用能量,那就要使用一些小窍门。
以下是实现的一个方法:
第一,根据原来的tpr文件建立一个新的tpr,在这个新的tpr中,明确定义感兴趣的组。这要用索引文件,见上文。
第二,用mdrun的" -rerun "参数指定原来的轨迹文件再跑一次模拟,这个过程很快。如果还想更快,可以使用trjconv把水分子去掉。这一个重复的模拟也产生轨迹文件,重要的是,还产生一个新的ener.edr文件,这个文件中包含了tpr文件中定义的各个组能量及相互作用能量(库伦相互作用能,范德华相互作用能等)。
第三,再使用g_energy把各个能量项提出来,想要什么提什么。
嗯,结果非常好。不信你试试。