- 2015-11-08 20:33:55
在涉及小分子溶液体系的模拟中, 经常需要构建一些特殊的构型, 如溶剂球, 板块体系(slab)等. 虽然GROMACS提供的gmx select模块可用以获得特定的构型, VMD中也可以使用选择语法或是TCL脚本完成同样的任务, 但使用起来都不是很方便. 前者经常需要先准备tpr文件, 而后者当构型较多时处理较慢. 因此, 我写了一个bash脚本getConf, 用于从一个较大的水(或其他溶剂)盒子中抽取特殊的构型. 这里我简单地介绍下这个脚本的使用.
脚本下载及设置(Linux)
- 下载脚本getConf, 放于自己指定的目录下
- 将脚本变为可执行文件: chmod u+x getConf
- 执行./getConf
如果你想在任意目录下使用这个脚本, 可以将其加入path环境变量中, 或是使用alias. 个人建议使用后一种方法. 具体操作是编辑你home目录下的.bashrc文件, 在其中加入一行alias getconf='/路径/getConf'. 然后source ~/.bashrc就可以在任意目录下使用getconf来调用getConf脚本了.
如果想在Windows下使用这个脚本, 你需要一个简单的bash环境以及awk程序. 可用的选择可参看在Windows下执行Linux命令的几种方式.
命令行选项说明
单纯执行getConf, 会给出使用方法的简单提示:
>>>>>>>>>>>>>>>>     getConf        <<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>> Jerkwin@gmail.com  <<<<<<<<<<<<<<<<
>>>>>>>>>>     2015-08-24 13:48:56     <<<<<<<<<
>> Usage: getConf <File.(gro|xyz)>
				  {-cent Ibgn:Istp:Iend}          # Atom index to define the center
				  {-geom sph|cyl|cub|slab|hollow} # Geometry of the configuration
				  {-box  a:b:c}                   # Box size in Angstrom
				  {-rad  Ra:Rb:Rc}                # Radius for sph, cyl, cub in Angstrom
				  {-tran Ta:Tb:Tc}                # Translation vector in Angstrom
				  {-zmin}                         # Translate based on zmin of atoms
				  {-dsurf Dsurf}                  # Distance of center atom from the slab surface
				  {-pbc x/y/z}                    # Apply PBC to X/Y/Z
				  {-out (gro|xyz)}                # Output File Format
>> Default: getConf <File.gro> -c 1:1:1 -g sph -b 1f:1f:1f -r 1f:1f:1f -t 0.5f:0.5f:0.5f -p xyz -o gro"
可见, 此脚本的主要功能是, 以指定的原子为中心, 构建(椭)球形, 圆柱形, 立方体, 板块或中空板块的结构, 同时还可以控制这些结构的大小及位置. 脚本可处理gro或xyz格式的输入文件, 输出文件格式也可以选择gro或xyz格式.
下面是几个选项的说明:
- -cent或- -c: 定义结构的中心, 可使用系列值, 格式为:- 起始值:递增值:终止值, 如- 1:1:10表示分别使用从1到10的原子作为中心构建结构.
- 
    -geom或-g: 定义结构的类型, 可用选项为- sph: (椭)球
- cyl: 圆柱
- cub: (长)方体
- slab: 板块
- hollow中空板块(板块的一种显示方式, 不影响模拟结果)
 
- 
    -box或-b: 输出盒子的大小, 单位埃
- 
    -rad或-r: 结构的参数值, 单位埃, 对不同结构, 含义不同- -g sph: (椭)球X, Y, Z三个方向的半径值
- -g cyl: 圆柱底面X, Y两个方向的半径值, Z方向的高度
- -g cub: (长)方体X, Y, Z三个方向的边长值
 
- -tran或- -t: 中心原子的平移向量
- -zmin或- -z: 指定此选项时会根据选取原子中Z方向的最小值来平移原子
- -dsurf或- -d: 中心原子距离板块表面的距离, 单位埃
- -pbc或- -p: 周期性边界条件施加的方向
- -out或- -o: 输出文件的类型
此外, 利用-r或-t选项指定数值时可使用两种方法, 一种是以埃为单位的数值, 一种是以输入盒子边长为单位的相对数值(数字后添加f).
应用示例
设我们有一个立方盒子, 其中包含一个Cl^-^和2224个水分子(gro文件).
- 
    构建以Cl^-^为中心, 距其5埃范围内水分子的水球 getconf ClW2224.gro -cent 1:1:1 -geom sph -rad 5:5:5或简写为 getconf ClW2224.gro -c 1 -g sph -r 5
- 
    构建以Cl^-^为中心, 底面半径为原盒子边长1/4, 高度为原盒子边长1/2的圆柱 getconf ClW2224.gro -c 1 -g cyl -r .25f:.25f:.5f
- 
    构建以Cl^-^为中心, 边长为原盒子边长1/2的立方体 getconf ClW2224.gro -c 1 -g cub -r .5f
- 
    构建以Cl^-^为中心的板块, 盒子Z方向长度变为原来的3倍 getconf ClW2224.gro -c 1 -g slab -b 1f:1f:3f
- 
    构建以Cl^-^为中心的中空板块, 盒子Z方向长度变为原来的3倍 getconf ClW2224.gro -c 1 -g hollow -b 1f:1f:3f
- 
    构建以Cl^-^为中心的板块, 盒子Z方向长度变为原来的3倍, 根据原子的最小Z值进行平移 getconf ClW2224.gro -c 1 -g slab -b 1f:1f:3f -zmin
- 
    构建以Cl^-^为中心的板块, 盒子Z方向长度变为原来的3倍, 使中心原子处于表面2埃处 getconf ClW2224.gro -c 1 -g slab -b 1f:1f:3f -d 2
评论
- 2015-11-15 15:45:10 逗比大懒猪这个chemdoodle是webgl的么, 一点都不卡啊~
- 2015-11-16 02:42:30 Jerkwin还行. 但是如果我开启旋转的话, 这么多构型就有点卡了.
- 2015-11-16 03:28:32 逗比大懒猪起码比我用jsmol要好啊!
- 2015-11-16 04:29:48 Jerkwinjsmol功能更强大, 但是我觉得现在还不是很成熟, 只用于简单地显示下构型大材小用了. 另外, 我看到你发了有关amber使用的几篇博文, 不介意的话, 我转载推荐下, 因为我的GROMACS群里有人询问如何使用.
- 2015-11-16 09:47:51 逗比大懒猪不介意..但是没写完..过几天吧.
- 2015-11-16 12:02:33 Jerkwin好, 写完了告诉我一声.
