使用Packmol填充小分子
Roy Kid
# 使用Packmol填充小分子
我们已经熟悉了如何建立简单的隐式溶液(implicit solvent)体系,如果想让一个体系实实在在充满水分子应该怎么办呢,不会手动一个个添加水吧,不会吧不会吧?
# Packmol安装
tar -zxvf packmol.tar.gz
cd packmol
make
1
2
3
2
3
# Packmol脚本语言入门
新建一个脚本文件ethane_solvent.inp
, 先写三行:
tolerance 2.0 # 能接受的能差
filetype pdb # 输出格式(pdb, xyz ...)
output ethane_solvent.pdb # 输出文件名
structure ethane.xyz # 待填充分子1
number 100 # 数量
inside cube 0. 0. 0. 98 # 范围,98防止pbc时重叠
end structure
structure water.pdb # 待填充分子2
number 1000
inside cube 0. 0. 0. 98
end structure
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
pdb文件可以用多种方式得到,如MS、avogadro等。这里最推荐使用chemdraw,一个分子式直接出图。 pdb文件格式 (opens new window)
water.pdb
,注意这个虚原子M是手动添加的,因为不符合化学结构因此chemdraw不能导出。另外OPLSAA联合TIP4P力场下,M与O的距离是0.15埃。
REMARK This PDB file was created by CS Chem3D.
HETATM 1 O 1 0.000 0.000 0.000 O
HETATM 2 H 1 0.816 0.577 0.000 H
HETATM 3 H 1 -0.816 0.577 0.000 H
HETATM 4 M 1 0.000 0.150 0.000 M
CONECT 1 2 3 4
CONECT 1 2
CONECT 1 3
CONECT 1 4
END
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
ethane.xyz
: 同样我们也可以使用xyz文件
6
Ethylene
C1 -0.6695 0.000000 0.000000
C2 0.6695 0.000000 0.000000
H11 -1.234217 -0.854458 0.000000
H12 -1.234217 0.854458 0.000000
H21 1.234217 -0.854458 0.000000
H22 1.234217 0.854458 0.000000
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# (中性)溶剂化
Packmol利用solvate.tcl
脚本来完成溶剂化的工作,比如将像蛋白质放在缓冲溶液中。显然,这时也需要向溶液中填充钠离子和氯离子。
假定你现在已经有了你要放进去的大分子的PDB文件,那么下一步运行:
solvate.tcl PROTEIN.pdb
1
运行结束时候,Packmol会生成一个叫packmol_input.inp
的文件,注意这个拓展名,就跟你平时用Packmol填充各种分子的那个指令文件一样.
那么下一步,运行:
packmol < packmol_input.inp
1
运行结束,大分子就被淹没在中性溶液环境中啦。NaCl的浓度默认是0.16M,也就是生理盐水的浓度。 如果你不想要这个浓度,或者你想自定义这个溶剂化过程中的其他参数,你可以这样做:
solvate.tcl structure.pdb -shell 15. -charge +5 -density 1.0 -i pack.inp -o solvated.pdb
1
这里面加入的flag分别代表如下意思:
- “15”是溶剂盒子的尺寸,你可以改成其他的,15是默认值;
- “+5”是溶剂化前整个体系的净电荷。如果你不指明这个值,那么系统会默认组氨酸电中性,Arg(蛋白质简写)和Lys带+1电荷,Glu和Asp带-1电荷。在平衡这些净电荷使溶剂化后整个体系达到电中性的基础上,Packmol会填充特定数目的钠离子和氯离子使NaCl浓度尽可能接近0.16M。如果你不想在这个过程中加入任何离子,只有水,那么在命令中加入-noions。
- “1.0”是默认溶剂的密度,你可以改。
- “solvate.pdb”是输出文件的默认名字,当然也可以改。
- “pack.inp”是生成的Packmol输入文件的默认名字,也可以改。