Jerkwin分享 http://blog.sciencenet.cn/u/Jerkwin

博文

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

已有 7797 次阅读 2018-1-15 10:33 |系统分类:科研笔记

  • 2018-01-14 20:27:30

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

index.ndx
1
2
[ dist ]
3539313319

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

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

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.github.io/2018/01/14/GROMACS计算距离的方法及注意点/, 转载请注明◆
◆评论问题: https://jerkwin.herokuapp.com/category/3/博客, 欢迎留言◆



https://blog.sciencenet.cn/blog-548663-1094919.html

上一篇:Amber基础教程B5:模拟绿色荧光蛋白及构建修饰的氨基酸残基
下一篇:AMBER基础教程B0:AMBER分子动力学模拟入门
收藏 IP: 72.221.39.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-3-28 21:51

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部