无论是对于新手还是有经验的操作者,LAMMPS输入文件的构建都是很费脑筋的计算环节。这是由于LAMMPS的数据格式比较特殊,与其他软件的接口差异大,不能直接导出或者导出文件的错误率高。
在建模软件中,moltemplate是LAMMPS官方支持的建模工具之一。它是一个通用的分子构建器和力场数据库系统,适用于LAMMPS建模。该程序创建了一种简单的文件格式来存储分子定义和力场,即模板LT。LT文件包含与特定分子有关的所有文本(包括坐标,键拓扑,角度,力场参数,约束,组和修复)。Moltemplate可以复制分子,对其进行自定义,然后用它作为构建更大、更复杂分子的基础。构建后,可以自定义单个分子和亚基(原子和键,以及可以插入、移动、删除和/或替换子单元)。Moltemplate支持所有LAMMPS力场样式以及几乎所有原子样式(现在和将来)。
Moltemplate主要用于粗粒化模型的构建。要实现全原子模拟,可以使用ATB服务(https://atb.uq.edu.au)下载适应于目标分子的LT文件,或手动创建LT文件。对于全原子模拟的情况,如果想使用moltemplate附带的力场参数集(例如OPLSAA,GAFF2,COMPASS),必须手动选择分子中每个原子的类型。Moltemplate不会自动分配原子类型。比如OPLS力场的参数在oplsaa.lt文件中给出,需要手动选择匹配的原子类型(可能还需要调整其部分电量)。这对于简单的有机分子或材料片段(例如聚乙烯或苯)来说不难,但是对于像蛋白质和大分子这样的复杂分子或者材料而言还是很有难度的。
Moltemplate不具有原子类型的自动分配功能,使用的原子类型需要从pdb文件获取,也不会自动修复残缺不完整的pdb文件。事实上,在读取pdb文件时仅读入原子坐标,丢弃其他所有信息。对于复杂分子,鼓励用户使用ATB或者其他方法构建LAMMPS DATA格式文件。获得后还可以使用Itemplify.py脚本将其转化为moltemplate的模板。
由于Moltemplate原本是为模拟粗粒化分子模型而设计的,而粗粒化模型经常使用包含许多原子的大颗粒,在这样的大小尺度上将电荷分配给粒子是没有意义的,因此moltemplate不会强迫使用带电荷的粒子表示形式。如果要为粒子分配电荷,有几种方法可做到这一点。现代的分子构建工具通常会将电荷分配给原子,并使用复杂的从头算方法来计算,moltemplate不支持这种模式。
Moltemplate手动建模过程:
A. 绘制基本分子单元的结构,并保存成pdb或者xyz格式。可用的软件较多,常用的有MS、Gaussian Viewer、Chem3D、Avogadro等;周期性结构建议保存为pdb格式;不同软件生成的xyz格式文件经常存在原子个数差异;
B. 利用moltemplate操作已有数据文件,如复制、旋转、删除等,根据基本单元的拓扑信息生成模拟体系的坐标、键角、二面角、电荷等信息,最后获得LAMMPS的in文件和data文件;
Moltemplate主要语法
1. 常用$和@变量
$atom: name 定义分子中某原子的唯一ID号 (如果出现此变量的分子仅包含一个原子,则可以省略:name后缀)。
@atom: type 定义某个原子的类型。
$bond: name 定义某个化学键的唯一ID号(注意:如果出现此变量的分子仅包含一个键,则可以省略:name后缀。)
@bond: type 定义某个键的类型
$angle: name 定义某个键角的唯一ID号(注意:如果出现此变量的分子仅包含单个角相互作用,则可以省略:name后缀。)
@angle: type 定义某个键角的类型
$dihedral: name 定义某个二面角的ID号(注意:如果出现此变量的分子仅包含一个二面角相互作用,则可以省略:name后缀)
@dihedral: type 定义某个二面角的类型
$improper: name 定义某个improper作用的ID号(注意:如果该分子仅包含一个improper相互作用,则可以省略后缀)
@improper: type 定义某个improper作用的类型
$mol或$mol:. 此变量是指此分子对象的ID号(注意: $mol是 $mol:. 的简写)
$mol: ... 分配给该对象所属分子的ID号(如果适用)
2. 路径语法
通常,可以使用多个斜杠(“ /”)和(“ ../”)来构建路径指示对象中任何其他分子的(相对)位置层次结构。这里,“.”和“ /”以及“ ..”符号的用法与类Unix文件系统中相同。例如,“.”在“ $mol:.”中表示当前分子处于当前目录(注意:“ $mol”即“$mol:.”)。斜杠本身是指全球环境,是定义/创建所有分子的最外部环境。
对于全原子手动建模,moltemplate更适合基本片段或基本分子较少的情形,可以通过手动输入各类参数将其扩展成更大尺度的模拟体系。对于更加复杂的模拟体系则需要用到packmol软件,该软件允许在输入文件中添加限制条件,从而生成复合体系的pdb格式文件。
由于排版困难,详细地功能和语法命令讲解请阅读公众号的文章(计算模拟之道,jsmnzd)。请结合最新版的moltemplate使用手册阅读本教程,英文原教程已上传到QQ讨论群 (2099901833),希望对大家有帮助!