Gromacs中的角度,距离等分析工具的使用都涉及到特殊的分组方法,能不能以合适的格式分组是计算成功的关键。
选取分组主要有两种方法,一是直接在命令中使用Select语法进行分组,二是建立相应的索引文件。
第一种方法更加灵活并支持动态选区,可以在命令中直接用''
括起来放入其中。当然前提是整个体系中原子命名等信息不能有重复。例如在一条碳链中,每个碳最好分别命名为"C1""C2"...而不能统一命名为"C",这样将很难通过Select语法来甄别。例如,要是要计算一条碳链与z轴之间的夹角,则可以使用命令gmx gangle -f ..xtc -s ..tpr -n ..ndx -g1 vector -group1 'name C1 C5 permute 1 2' -g2 z -oav -oall -oh
。此处的'name C1 C5 permute 1 2'
意为从名为C1的原子指向名为C5原子的向量,1 2
表明向量的方向从第一组指向第二组。有关Select详细的语法和使用实例在李老师的博文中有详细的介绍,感兴趣的可以访问这里GROMACS选区(selection)语法及用法。
若是没有明智地提前将原子名称区分好,或是即使用Select语法也无法选定特定的组,就只好通过建立相应的索引文件了。在distance与gangle等命令中所用的组往往需要选定两个位置,这两个位置应当在索引文件中成对出现。若是作为向量,则是从第一个向量指向第二个向量。同理,对于需要三个位置的组,则应三个为一行。下面是个简单的例子:
[ Vector1 ] 1 5 2 6 3 7 ... [ Plane1 ] 1 3 5 2 4 6 ...
这样,在做好相应的索引文件后,就可以直接在命令执行时选择相应的组就可以了。这时,上述的例子就可以写成: gmx gangle -f ..xtc -s ..tpr -n ..ndx -g1 vector -group1 -g2 z -oav -oall -oh
,在执行命令后会出现选择分组的提示,根据提示选择相应的组就可以了。
另外,在建立特定索引组的过程中,可以寻求出序号之间的规律,写一个小程序直接生成。索引文件的格式很简单,保证组名和数字就好。并不是非得使用gmx make_ndx
工具的。