新版VASP轨迹文件转换为GROMACS格式

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

vasp轨迹文件的格式经常变动, 这样导致和vmd的插件不兼容, 查看的时候只能显示一帧. 我最近使用的vasp 5.4.4输出的轨迹文件XDATCAR就存在这个问题. 为了解决这个问题, 我写了一个简单的脚本, 将XDATCAR转换为gromacs格式以便使用vmd查看. 简单来说, gromacs的gro格式是一种类似于xyz的格式, 但其中的坐标以nm为单位, 同时最后一行添加盒子矢量的信息.

x2gro.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
File=XDATCAR
awk ' BEGIN { Rad2Deg=180/4*atan2(1,1) }
	{	Tips=$0
		getline; a=$1/10; b=a; c=a;
		if(NF>=2) b=$2/10; if(NF>=3) c=$3/10
		getline; ax=$1*a; ay=$2*b; az=$3*c
		getline; bx=$1*a; by=$2*b; bz=$3*c
		getline; cx=$1*a; cy=$2*b; cz=$3*c
		Natm=0
		getline; Nelm=NF; for(i=1; i<=Nelm; i++) Sym[i]=$i
		getline; for(i=1; i<=Nelm; i++) { Numb[i]=$i; Natm=Natm+$i }
		getline; step=$NF
		YesCar=0; if($0~/^[::space::]*[C|c]/) YesCar=1

		print Tips " step= "step
		print Natm
		n=0
		for(i=1; i<=Nelm; i++) {
			for(j=1; j<=Numb[i]; j++) {
				getline; n++
				x=$1/10; y=$2/10; z=$3/10
				if(!YesCar) {
					x=ax*$1+ay*$2+az*$3
					y=bx*$1+by*$2+bz*$3
					z=cx*$1+cy*$2+cz*$3
				}
				printf("%8s%7s%5d%8.3f%8.3f%8.3f\n", i"ELM", Sym[i], n, x, y, z)
			}
		}
		print ax, by, cz, ay, az, bx, bz, cx, cy
	}
' $File  > $File.gro
随意赞赏

微信

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


前一篇: GROMACS非标准残基教程2:芋螺毒素小肽实例
后一篇: GROMACS分子动力学模拟教程:多肽-蛋白相互作用

访问人次(2015年7月 9日起): | 最后更新: 2019-12-13 13:30:19 UTC | 版权所有 © 2008 - 2019 Jerkwin