注:本文有配套演示视频,强烈建议一看,见https://www.bilibili.com/video/av33733749/
使用Multiwfn+VMD快速地绘制静电势着色的分子范德华表面图和分子间穿透图
文/Sobereva @北京科音 2018-Oct-13
1 前言
静电势对于考察分子间静电相互作用、预测反应位点、预测分子性质等方面有重要意义,被广为使用,相关学习资料和笔者之前写过的全部跟静电势有关的博文见《静电势与平均局部离子化能综述合集》(http://bbs.keinsci.com/thread-219-1-1.html),Multiwfn(主页为http://sobereva.com/multiwfn)是分析分子静电势最灵活、最强大的工具。很久以前,笔者写过一篇文章《使用Multiwfn结合VMD分析和绘制分子表面静电势分布》(http://sobereva.com/196,以下简称“196”)介绍了怎么将Multiwfn和免费的可视化程序VMD相结合绘制静电势着色的分子范德华表面图以及分子间范德华表面穿透图,但是笔者在大量网上答疑中感到很多接受能力较差的Multiwfn用户还是不能很好按照博文里详细讲述的步骤做出图来,另一方面那篇博文的过程涉及很多手动操作过程,对于手慢的用户绘图效率较低。考虑到这些,笔者这次专门写一篇文章,介绍通过利用批处理文件和绘图脚本极其便利地绘制上述图形,将步骤最大程度简化。相信此文会令读者深感Multiwfn+VMD绘图又快又便利,初学者也能很容易地获得非常漂亮的图像。此文并不能完全取代之前那篇博文,那篇文章里对细节讲述很详细,如果能把那篇文章完整阅读、深刻领会,读者就可以根据实际要求恰当调节选项获得更好效果。
(注:请初学者仔细一个字一个字阅读本文内容,绝对不要无视文中任何字句!)
本文涉及两种展现分子表面静电势分布的做法,第一种是196文中已经详细交代的,用Multiwfn的主功能12对静电势做定量分子表面分析导出表面顶点文件vtx.pdb,载入到VMD中显示出来,并根据vtx.pdb的B因子字段数据(对应静电势)来着色。第二种是类似《基于Multiwfn产生的cube文件在VMD和GaussView中绘制填色等值面图的方法》(http://sobereva.com/402)文中的做法,用Multiwfn产生电子密度和静电势的cube文件,载入到VMD里,将静电势的数据以不同颜色映射到电子密度的等值面上。本文说的范德华表面是指Bader的定义,即把电子密度0.001 a.u.等值面作为范德华表面。
本文使用2018-Oct-12更新的Multiwfn 3.6(dev)版,不要用更老版本。不了解Multiwfn的话参看入门贴《Multiwfn入门tips》(http://sobereva.com/167)。VMD使用1.9.3版,可在http://www.ks.uiuc.edu/Research/vmd/免费下载。这里假定用户使用的是Windows系统,笔者用的是Win7-64bit。笔者在绘图前已经按照http://sobereva.com/435文中的说明,将Multiwfn的settings.ini里的cubegenpath指向了Gaussian目录下的cubegen程序路径以显著降低静电势计算耗时(输入文件必须是.fch格式时才有效)。本文的做法绝对不仅限于Gaussian用户,GAMESS-US、ORCA、Molpro等绝大部分主流程序的用户都可以按照本文的做法绘制,只要提供带有波函数信息的文件即可,参考《详谈Multiwfn支持的输入文件类型、产生方法以及相互转换》(http://sobereva.com/379)。
2 本文涉及的文件和准备工作
此文用到的所有输入文件都可以在此下载:http://sobereva.com/attach/443/file.rar。本文用到的.bat、.txt、.vmd文件在目前最新版Multiwfn的examples\drawESP目录下都可以找到,这些文件在这里介绍一下。
以下三个Windows下的批处理文件,在绘图前读者必须将它们放到Multiwfn所在目录下。
ESPiso.bat:用于产生电子密度和静电势的cube文件,即density[序号].cub和ESP[序号].cub
ESPpt.bat:用于产生分子结构和表面顶点的pdb文件,即mol[序号].pdb和vtx[序号].pdb
ESPext.bat:在ESPpt.bat基础上,还会额外产生分子表面静电势极值点的pdb文件(surfanalysis.pdb)
ESPiso.txt、ESPpt.txt、ESPext.txt分别被上述三个.bat文件所利用,里面每一行记录了Multiwfn中每一步要输入的命令,在绘图前读者必须将它们放到Multiwfn所在目录下。
运行以上批处理文件调用Multiwfn计算前,读者要将被计算的分子的fch文件改名为1.fch放到当前目录下。双击批处理文件时,就会自动调用Multiwfn对当前目录下的1.fch文件进行计算并得到绘图所需的文件,并且会自动把结果文件拷到VMD目录下。在使用批处理文件前,用户必须自己编辑.bat文件,把里面默认的VMD目录D:\study\VMD193改成自己机子的实际VMD目录。
如果当前目录下还有2.fch、3.fch、4.fch,那么它们也会被这些批处理文件计算并产生相应的结果文件并自动拷到VMD目录下,这用于绘制范德华表面穿透图。
以下三个.vmd文件都是VMD的绘图脚本,在使用VMD绘图前读者必须将之拷到VMD目录下。
ESPiso.vmd和ESPiso2.vmd:其中ESPiso2.vmd用于读取VMD目录下density1.cub、ESP1.cub、density2.cub、ESP2.cub...绘制成静电势填色等值面图。读者可以自行编辑这个文件修改里面默认的色彩刻度下限和上限,以及设置文件序号最多读取到多少,文件中的#开头的注释行都写得非常明白。ESPiso.vmd和ESPiso2.vmd的差异在于前者只是用于绘制单个分子的,而且一些作图设定不一样。
ESPpt.vmd和ESPpt2.vmd:其中ESPpt2.vmd用于读取VMD目录下mol1.pdb, vtx1.pdb, mol2.pdb, vtx2.pdb...绘制静电势着色的分子表面顶点图。读者可以自行编辑这个文件修改里面默认的色彩刻度下限和上限、点的尺寸、文件序号最多考虑到多少。ESPpt.vmd和ESPpt2.vmd的差异在于前者只是用于绘制单个分子的,而且一些作图设定不一样。
ESPext.vmd:用于读取VMD目录下的surfanalysis.pdb,将其中记录的分子表面静电势极值点绘制成圆球,里面默认用的颜色都可以自己改
最后,为了绘图时敲的命令更简短,读者应当用文本编辑器打开VMD目录下的vmd.rc文件(对Windows版VMD而言),在最后添加以下内容:
proc iso {} {source ESPiso.vmd}
proc iso2 {} {source ESPiso2.vmd}
proc pt {} {source ESPpt.vmd}
proc pt2 {} {source ESPpt2.vmd}
proc ext {} {source ESPext.vmd}
之后在VMD的文本窗口里只要输入比如pt,就等价于输入source ESPpt.vmd来执行这个作图脚本了。注意运行这些命令前用户在VMD里最好没做过任何其它操作,否则应该重启VMD,否则可能看不到预期的效果。
总结一下,绘图之前用户要做的事包括:
(1)把examples\drawESP目录下的.txt和.bat文件拷到Multiwfn可执行文件所在目录
(2)把.bat文件里的VMD路径改成实际路径
(3)把examples\drawESP目录下的.vmd拷到VMD路径下
(4)在.vmdrc里加入上述proc语句
按照以上说明配置后,就可以开始做下面的例子了。如果没成功重复出文中的图,说明要么没一个字一个字看上面的配置方式说明,要么没一个字一个字看下面的操作步骤。如果绘制某个体系的时候VMD里显示出了之前绘制过的其它体系,应当自行把VMD目录下相应的其它体系对应的pdb或cube文件删除。如果下文的透明的等值面显示得很诡异很难看,可能是显卡驱动和VMD不兼容而没能打开GLSL,尝试更新驱动或者用其它机子。
3 绘制单个分子的分子表面静电势图例子
这里用乙酰胺为例。将Multiwfn的examples目录下的CH3CONH2.fch拷到Multiwfn可执行文件所在目录,改名为1.fch。
我们先通过表面顶点着色方式展现分子范德华表面静电势分布。双击ESPpt.bat。在笔者的Intel 4核机子(i7-2630QM)上5秒钟就运算完毕。然后启动VMD,在文本窗口输入pt,立刻看到下图
ESPpt.vmd脚本里默认色彩刻度是-50kcal/mol ~ 50 kcal/mol,对应颜色按照“蓝-白-红”过渡。如果想在VMD的界面里直接修改显示设定,诸如点的尺寸、色彩刻度范围等,见196一文。
接下来我们通过电子密度等值面着色展现分子范德华表面静电势分布。双击ESPiso.bat,也是很快就算完了。然后启动VMD,在文本窗口输入iso即可,看到的图像很接近于下图。为了显示效果更好,笔者此处使用了VMD自带的Tachyon渲染器渲染,步骤在《用Multiwfn+VMD做RDG分析时的一些要点和常见问题》(http://sobereva.com/291)文中说明了,得到的图像比在图形窗口直接看到的更有光泽感而且有抗锯齿效果。
上面两种显示效果你觉得哪种好就用哪种。由于ESPiso.bat要计算静电势格点数据,所需要算的点数远远高于ESPpt.bat要算的分子表面顶点数,因此对于大体系耗时可能高几倍甚至一个数量级。基于格点数据显示静电势着色的分子表面时,还可以进入Graphics - Representation里拉动Isovalue滑条快速查看不同电子密度等值面的静电势填色图。
最后,再看怎么把范德华表面静电势极值点位置显示出来。双击ESPext.bat开始计算,它所干的事和ESPpt.bat一样,只不过还额外产生一个记录极值点的surfanalysis.pdb文件。按照如上任意一种方法显示出静电势图后,在文本窗口输入ext即会看到极值点也显示出来了。黄球对应静电势极大点,青球对应静电势极小点。以下左图是先输入pt再输入ext的效果,右图是先输入iso再输入ext然后用Tachyon渲染后的效果(之后在Graphics - Representation里把Selected Molecule切换为density1.cub,把Material选项材质改为Transparent,此时背面的极值点才能看到。如果你想默认就用这种材质,把ESPiso.vmd里的$id EdgyGlass替换为$id Transparent即可)
表面静电势极值点上的静电势的具体数值可以通过ps来标出来,在196文中详细说了。基本过程是点击键盘上的0进入VMD的查询模式,然后比如点击一个黄球(必须点正中心。如果目前同时显示了表面顶点则先关闭显示表面顶点免得妨碍选取),文本窗口里如果提示比如index 1,那么把这个数加上1就是它的实际序号。在surfanalysis.pdb文件中静电势极大点和极小点分别用C和O原子表示,因此你去此文件里找第2个C,其倒数第2列数值就是静电势的数值了。比如当前第2个C的信息是
HETATM 2 C MOL A 1 -0.426 -2.953 0.281 1.00 44.12 C
故44.12 kcal/mol就是这个点的静电势值。注意对于带电体系,由于kcal/mol单位下的静电势数值可能超过了pdb格式的B因子这一列的可记录范围,此时Multiwfn自动会改用eV为单位记录,你看一眼pdb文件开头提示用的是什么单位就知道了。
3 绘制静电势着色的分子间范德华表面穿透图
绘制这种图实际上就是把每个单体的静电势着色的分子表面图显示到一起,从图中可以一目了然看到哪些地方范德华表面被互相穿透,由此可以讨论相互作用强度,还可以通过颜色讨论静电相互作用特征(一般是呈现静电势正负互补的,在《静电效应主导了氢气、氮气二聚体的构型》http://sobereva.com/209一文有详细讨论)。在产生输入文件过程中一定要记住,只需要对复合物进行优化,而单体的坐标必须直接从优化后的复合物的坐标里直接抠出来(比如可以用gview打开优化后的输出文件,把其中某个单体复制到一个新窗口里,保存成gjf文件),之后对各个单体做单点计算任务得到含有波函数信息的文件即可。对于Gaussian,一定要记得计算单体的时候要加nosymm关键词,否则由于Gaussian自动会把分子调整到标准朝向,导致坐标和复合物不对应。详见《谈谈Gaussian中的对称性与nosymm关键词的使用》(http://sobereva.com/297)。
3.1 Guanine-Cytosine碱基对
这个例子的Guanine和Cytosine单体的Gaussian输入文件,以及计算产生的.fch文件都提供在本文文件包里的GC目录下了。将1.fch(对应Cytosine)和2.fch(对应Guanine)都拷到Multiwfn目录下,双击ESPpt.bat,就会开始计算,输出文件被自动拷到了VMD目录下。然后启动VMD,在文本窗口输入pt2命令,得到基于表面顶点绘制的范德华表面穿透图
由图可见在形成氢键区域,范德华表面穿透很明显,而且是红色和蓝色相互穿透,体现静电势的互补特征,也反映出氢键的静电吸引相互作用的本质。在VMD里按键盘上的2,然后点击恰当的两个表面顶点,就可以通过测量顶点的距离来考察穿透距离,这在196文中已经说了,请仔细阅读(由于显示出来的距离值的文字是白色的,当前背景也是白色的,可能难以观察。只要把ESPpt2.vmd里的color Display Background white删掉再作图,或者VMD文本窗口输入color Display Background black命令,就可以切换到黑背景。为了便于点击恰当的表面顶点,建议一次只显示一个单体的表面顶点,即在VMD main窗口里双击vtx1.pdb或vtx2.pdb的单体的"D"标记将之取消显示,并且恰当旋转和缩放视角以便于点击顶点)
下面基于静电势着色的电子密度等值面再来绘制穿透图。双击ESPiso.bat,需要运算一会儿,算完后启动VMD,输入iso2命令,即得到下图(对于这种重叠图不建议用Tachyon渲染,否则等值面交界处会有明显痕迹,不好看)
3.2 水四聚体
本文文件包里的water_tetramer里面的complex.gjf是含有优化过的四聚体的坐标的Gausian输入文件,1/2/3/4.gjf是基于其中每个单体坐标构建的Gaussian输入文件,计算产生的相应的.fch文件也都提供了。将这些fch文件拷到Multiwfn目录下,然后按照上一节的做法操作,得到如下两种图
左边的图比较素雅清爽,右边的图比较浓郁。当然绘制左图时也可以把表面顶点尺寸加大,缩窄色彩刻度上下限来让颜色更艳一些,这些在196文章里都有涉及。
4 总结
本文介绍的绘制分子表面静电势图的方法算是目前最快、最好的绘制方法了,而且用到的Multiwfn和VMD都完全免费。相比之下,用GaussView绘制的操作步骤数目、耗时都要高于此文,效果也不如本文,而且程序是收费的,还没法把静电势极值点显示出来,也没法绘制穿透图,显然绝对不再是可取的绘制分子表面静电势的方法。
希望大家尽量试图理解本文涉及的脚本中的语句内容,以便根据自己实际情况修改,从而用起来更方便,比如可以在ESPpt.bat和ESPiso.bat倒数第二行分别加上del D:\study\VMD193\*.pdb和del D:\study\VMD193\*.cub来使得运行时自动把VMD目录下之前的pdb和cub文件删除。值得一提的是ESPpt.txt里的0.15是Multiwfn中定量表面分析时的格点间距,如果改大这个值,表面顶点就会变得更稀疏,同时由于表面顶点数变少了,计算耗时也会降低。ESPiso.txt里面的命令对应于计算电子密度和静电势格点数据时分别用medium quality grid和low quality grid(后者低于前者是为了节约时间),对于中、小体系这样的设置已经够了,但如果体系很大,比如100原子,得分别用high quality grid和medium quality grid来增加计算的点数这样作图效果才好(当然代价是耗时显著增加),否则等值面可能很不平滑而且对应静电势的颜色很模糊。
本文最多考虑到了四聚体,更多聚体的穿透图也可以类似地绘制,比如绘制8聚体,就把ESPiso.bat和ESPpt.bat里计算命令的序号上限从4扩展到8,并且把ESPiso2.vmd和ESPpt2.vmd里的nsystem参数从4改成8,则运行这些绘图脚本时VMD目录下的后缀从1到8号的文件都会被载入和绘制。
此文的.bat批处理文件是Windows下的,在Linux下大家也可以写类似的脚本,极其简单。