GROMACS计算距离的方法及注意点

类别:    标签: gmx   阅读次数:   版权: (CC) BY-NC-SA

低版本的GROMACS中(具体哪个版本就没有考古了, 猜想是3.x吧), g_distance计算距离时需要选择两个组, 然后程序会自动计算这两个组的原子两两配对之间的距离, 也可以计算这两个组的质心之间的距离. 可能是从4.x版本起吧, gmx distance使用的索引组的方法有了变化, 可以提供多个索引组, 每个组是独立的, 在其中列出要计算的原子对. 因此要计算距离的组中总原子个数必须是偶数, 否则会给出原子数目非偶数的错误. 例如, 我们要计算体系中3号原子和5, 9, 13, 19之间的距离, 那么可以在索引文件中定义如下组

index.ndx
1
2
[ dist ]
3 5 3 9 3 13 3 19

编号对也可以放于多行中, 每行一个原子对编号. 但值得注意的是, 至少在我测试的 2016.4版本中, 在处理这些编号对时, GROMACS存在错误, 对1 2 2 3这样的编号对, 会先将中间重复的编号合并为一个, 变成1 2 3, 从而导致无法计算. 解决办法也很简单, 就是更换顺序, 保证相邻编号之间不存在重复. 如上面的例子改成1 2 3 2就可以正常计算了.

采用这种模式, 需要我们自己提供要计算的原子对. 当原子数较少时并无困难, 但原子数一多起来, 组合就多了, 手写不太现实, 所以我就写了一段代码来处理这个问题.

gmx_ndx.bsh
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
usage="\
>>>>>>>>>>>>>>>>     gmx_ndx    <<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>    Jicun LI    <<<<<<<<<<<<<<<<
>>>>>>>>>>     2016-09-15 09:49:36     <<<<<<<<<
>>   Usage: gmx_ndx <File.ndx> [Group 1] [Group 2]
>> Default: gmx_ndx     N/A      Other     SOL"

[[ $# -lt 1 ]] && { echo "$usage"; exit; }

File=index; [[ $# -ge 1 ]] && { File=${1%.ndx}; }
Grp1=Other; [[ $# -ge 2 ]] && { Grp1=$2; }
Grp2=SOL;   [[ $# -ge 3 ]] && { Grp2=$3; }

echo -e "\n生成 $Grp1$Grp2 的组合新组 [ ${Grp1}_$Grp2 ] 并追加到 $File.ndx 文件"

awk -v Grp1=$Grp1 -v Grp2=$Grp2 ' BEGIN{ RS="[" }
	$1==Grp1 {
		N1=NF-2
		for(i=1; i<=N1; i++) G1[i]=$(i+2)
	}

	$1==Grp2 {
		N2=NF-2
		for(i=1; i<=N2; i++) G2[i]=$(i+2)
	}

	END {
		print "[ "Grp1"_"Grp2" ]"
		for(i=1; i<=N1; i++) {
			for(j=1; j<=N2; j++) printf "%d %d  ", G1[i], G2[j]
			print ""
		}
	}
' $File.ndx >> $File.ndx

运行脚本, 指定输出文件名称和两个组的名称, 这段代码会生成两个组的原子对组合, 并将其命名为一个新组追加到原来的索引文件中. 然后运行gmx distance -s -f -n -oav -oall, 选择这个新组, 就可以得到所要的距离文件了. 值得注意的是, 组中的原子对数目最好不要太多, 否则GROMACS运行时所需的内存太多, 可能导致失败.

使用这种模式计算原子之间的距离很简单, 但要想计算两个组的质心之间的距离就有点麻烦, 需要利用选区语法来完成. 例如我们要计算残基1-4与残基7-9质心之间的距离, 可以使用下面的方式:

gmx distance -s -f -select "com of resnr 1 to 4 plus com of resnr 7 to 9" -oav -oall

其中的选区语法请参考GROMACS选区(selection)语法及用法.

随意赞赏

微信

支付宝
◆本文地址: , 转载请注明◆
◆评论问题: https://jerkwin.herokuapp.com/category/3/博客, 欢迎留言◆


前一篇: Amber基础教程B5:模拟绿色荧光蛋白及构建修饰的氨基酸残基
后一篇: AMBER基础教程B0:AMBER分子动力学模拟入门

访问人次(2015年7月 9日起): | 最后更新: 2020-09-17 17:53:15 UTC | 版权所有 © 2008 - 2020 Jerkwin