- 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
Jerkwin
jsmol功能更强大, 但是我觉得现在还不是很成熟, 只用于简单地显示下构型大材小用了. 另外, 我看到你发了有关amber使用的几篇博文, 不介意的话, 我转载推荐下, 因为我的GROMACS群里有人询问如何使用. - 2015-11-16 09:47:51
逗比大懒猪
不介意..但是没写完..过几天吧. - 2015-11-16 12:02:33
Jerkwin
好, 写完了告诉我一声.