计算化学公社

标题: 基于Multiwfn产生的cube文件在VMD和GaussView中绘制填色等值面图的方法 [打印本页]

作者
Author:
sobereva    时间: 2018-1-6 18:38
标题: 基于Multiwfn产生的cube文件在VMD和GaussView中绘制填色等值面图的方法
基于Multiwfn产生的cube文件在VMD和GaussView中绘制填色等值面图的方法
The way of plotting color-filled isosurface maps based on cube files generated by Multiwfn

文/Sobereva @北京科音 2018-Jan-6

0 前言

填色等值面图是一种重要的描述三维实空间函数分布特征的方法,最常见的就是分子表面静电势填色图,就是将静电势这个函数在电子密度等值面上各个位置的数值大小通过颜色表现出来。这种图笔者之前专门说过怎么绘制,见
使用Multiwfn+VMD快速地绘制静电势着色的分子范德华表面图和分子间穿透图(含视频演示)
http://sobereva.com/443
巨大体系的范德华表面静电势图的快速绘制方法
http://sobereva.com/481
使用Multiwfn结合VMD分析和绘制分子表面静电势分布
http://sobereva.com/196

除了静电势外,也有很多其它函数也适合用填色等值面图考察,比如可以将福井函数、双描述符、HOMO/LUMO轨道波函数、平均局部离子化能(ALIE)、电子离域范围函数(EDR)等投影到电子密度等值面上,从而预测反应位点。实际上,利用Multiwfn的定量分子表面分析功能,可以对任意实空间函数构造等值面顶点,并计算任意实空间函数在上面的值,然后效仿《使用Multiwfn结合VMD分析和绘制分子表面静电势分布》的做法,即可通过在VMD中以point绘制方式显示出所有表面顶点,并根据pdb文件里的B因子的数据进行着色来绘制出填色等值面图。而更为一般化,也往往显示效果更好的做法是先用Multiwfn计算用来定义等值面的函数的格点数据,导出为cube文件;然后再计算出被投影的函数的格点数据,也导出cube文件。之后将这两个cube文件都载入到VMD、GaussView等程序里,就可以绘制填色等值面图了。此文就介绍一下在VMD和GaussView里具体怎么操作。

本文使用的是Multiwfn 3.5(dev)版,可在http://sobereva.com/multiwfn免费下载,如果之前没用过强烈建议看看《Multiwfn入门tips》(http://sobereva.com/167)。gview用的是6.0.16版。VMD用的是1.9.3版,在http://www.ks.uiuc.edu/Research/vmd/可免费下载。系统为Win7-64bit。如果不知道cube文件是什么,建议看此文了解一下基本知识《Gaussian型cube文件简介及读、写方法和简单应用》(http://sobereva.com/125)。


1 在Multiwfn中计算要用的cube文件

本文将以绘制晕苯(coronene)的福井函数f-在电子密度等值面上的填色图作为例子,用这种图可以预测体系亲电反应容易出现在哪。此体系的活性位点在笔者近期参与的一篇文章http://www.tandfonline.com/doi/full/10.1080/00268976.2017.1403657中也考察过。为了之后在VMD或gview中绘制这种图,我们先用Multiwfn计算体系电子密度cube文件和f-的cube文件。如果对福井函数不了解,应先看看《亲电取代反应中活性位点预测方法的比较》(http://www.whxb.pku.edu.cn/CN/abstract/abstract28694.shtml)。

先在Gaussian中在B3LYP/6-31G*下优化中性状态的晕苯,将得到的chk文件转换为fch后命名为N.fch。然后基于优化的中性的晕苯的结构,将电荷和自旋多重度改为1 2(即+1阳离子态),算个单点任务(切勿做优化任务),将得到的chk转换并命名为N-1.fch。这里N-1中的N代表中性时的电子数,因此N-1.fch就意味着这个fch里记录的是+1电荷阳离子态的波函数信息。

启动Multiwfn,输入以下内容
N.fch
5   //计算格点数据
1   //电子密度
2   //中等质量格点(如果是大体系,建议选high quality grid以保证之后绘制的图像质量较好)
2   //将格点数据导出为当前目录下density.cub。然后手动把此文件改名为N.cub
0   //回主菜单
5   //计算格点数据
0   //自定义运算
1   //将有1个文件对N.fch进行运算
-,N-1.fch   //将令N.fch的函数值减去N-1.fch的函数值
1   //电子密度
2   //中等质量格点(必须与产生N.cub时用的格点设定严格相同)
2   //将格点数据导出为当前目录下density.cub。然后手动把此文件改名为f-.cub

然后可以直接关闭Multiwfn。如果想看一下刚刚算出来的f-函数的等值面图的话,选-1,然后恰当设置isovalue使图像能充分体现不同区域函数分布,比如设成0.002的时候图像如下。由于在靠边缘区域f-有较大正值(绿色主导),因此边缘的碳的亲电反应活性比中间的碳明显要高。
(, 下载次数 Times of downloads: 183)



2 在GaussView中绘制填色等值面图的过程

下文对操作的每一步都详细写明了,如果没能画出来,应反复仔细阅读反复尝试

把N.cub拖到gview里
Results - Surfaces/Contours
Cube Actions - Load Cube,选f-.cub
此时Cubes Available里面会有两套格点数据。选中第一个,把Density框里的数值改为0.01
Surface Actions - New Mapped Surface - OK
如果你的默认背景不是白色,选File - Preference - Display Format,点Background Color右边的按钮将颜色改成白色

此时屏幕上显示出的表面对应电子密度=0.01 a.u.的等值面,颜色对应于f-在这个表面上不同位置的数值,色彩刻度条在窗口上方。色彩刻度按照红-绿-蓝的顺序变化,对应f-数值由负到正。默认的色彩刻度下限是-0.00104 a.u.,上限是0.00104 a.u.。
(, 下载次数 Times of downloads: 196)


之后我们改进图像效果:
在图像上点右键,选View - Display Format
切换到Surface标签页,Format选Transparent。如果Fade mapped surface values没选上则选上。适当调节Transparent滑杆,使得色彩浓度合适,能清晰反映不同区域差异,同时图像又比较通透
在色彩刻度下限和上限的文本框里分别输入-0.001和0.001并按回车,使得色彩刻度上下限是比较整的数

最终图像效果如下,可见图像效果不错,图中越蓝的地方f-越大,亲电反应活性越高,这和在Multiwfn里看到的f-等值面图展现的分布特征是完全对应的。
(, 下载次数 Times of downloads: 189)


这里顺带一说怎么在gview里通过f-.cub显示其等值面,经常有人问此类问题。启动gview,将f-.cub拖入gview,选Results - Surfaces/Contours,Density设个合适的值比如0.002,选Surface Actions - New Surface,即得到下图。紫色和青色分别对应等值面为正和为负的区域。如果要改等值面颜色,进入File - Preferences - Colors - Surface Colors,选Default项,然后修改颜色设定即可。
(, 下载次数 Times of downloads: 185)



3 在VMD中绘制填色等值面图的过程

个人觉得在VMD里通过cube文件绘制的填色等值面图效果没gview好,操作也略微麻烦些,但好处是免费,而且比gview灵活得多,比如可以让Multiwfn把电子密度等值面上的福井函数的极值点位置找出来,导出成pdb文件,然后一起显示在VMD里,不过这点在本文不涉及,有兴趣可以参阅Multiwfn手册4.12.4节的信息和《使用Multiwfn结合VMD分析和绘制分子表面静电势分布》里的步骤。

启动VMD,然后执行以下操作:
Display - Rendermode - GLSL
Display - Depth Cueing将雾化关掉
Display - Axes - Off关闭坐标轴
将N.cub拖进VMD Main窗口载入之,然后在出现的项目上点右键选Load Data into Molecule
点Browse,选择f-.cub,点Load载入之,再关闭窗口
在VMD命令行界面输入color Display Background white将背景改为白色
Graphics - Representation,Drawing Method设为CPK
点Create Rep新建用于显示等值面的层
Drawing Method设为Isosurface,Isovalue设0.01。Vol右边的选项改为Vol0: N.cub,Draw右边的选项改为Solid Surface,Show右边的选项改为Isosurface
Coloring Method改为Volume,右边的选项改为“1:”,Material改为Transparent
点Trajectory标签页,Color Scale Data Range下面两个框分别输入-0.001和0.001,之后按回车(别输入一个后就按回车,必须两个都输入完再按一次回车)
Graphics - Materials,选Transparent,把Opacity一项往右拉,使得填色等值面透明度降低,从而令表面的颜色更明显

最终图像如下,越蓝说明f-越正,和gview的图展现的信息一致
(, 下载次数 Times of downloads: 188)


在VMD里如果想调节色彩刻度的颜色变化,可以进Graphics - Colors,点Color Scale,Method选其它的。

怎么在VMD里显示f-.cub的等值面本文就不说了,按照《使用Multiwfn观看分子轨道》(http://sobereva.com/269)里说的步骤做就行了,只不过是把分子轨道的cube文件改成f-.cub。
作者
Author:
youyno    时间: 2018-1-6 20:58
很绚丽的图片!赞!!!
作者
Author:
mumeizili    时间: 2018-1-7 13:04
太感动了。老师专门写了个帖子回答我。为您的精神点赞,向您学习不止在学识上,还在做事的态度上。谢谢。
作者
Author:
fhh2626    时间: 2018-1-7 14:10
vmd绘制的时候选tachyon(internal),效果会好很多很多
作者
Author:
sobereva    时间: 2018-1-7 14:11
fhh2626 发表于 2018-1-7 14:10
vmd绘制的时候选tachyon(internal),效果会好很多很多


对于当前的图,渲染之后整体泛白,色彩对比度变差,所以才刻意没用这个
作者
Author:
fhh2626    时间: 2018-1-7 14:13
sobereva 发表于 2018-1-7 14:11
对于当前的图,渲染之后整体泛白,色彩对比度变差,所以才没用这个

确实,VMD就是要调的参数太多了,比较麻烦

作者
Author:
usedgo    时间: 2019-3-18 16:28
本帖最后由 usedgo 于 2019-3-18 16:31 编辑

sob老师,用vmd作图,使用DynamicBonds调节cutoff时,怎么控制分子中特定部分的原子之间有键连接?比如我的图中的粉色的Au原子和墨绿色的P原子与青色的碳原子之间成键连接。我现在存在的问题是,如果elemen all 则改变cutoff时,苯环上会产生特别多的键连接。
作者
Author:
sobereva    时间: 2019-3-18 17:02
usedgo 发表于 2019-3-18 16:28
sob老师,用vmd作图,使用DynamicBonds调节cutoff时,怎么控制分子中特定部分的原子之间有键连接?比如我的 ...

那就别用dynamic bonds,用licorice或CPK,手动用mouse-add/remove bonds修改成键
作者
Author:
usedgo    时间: 2019-3-18 19:21
sobereva 发表于 2019-3-18 17:02
那就别用dynamic bonds,用licorice或CPK,手动用mouse-add/remove bonds修改成键

多谢sob老师,我目前用的就是这种方法。
作者
Author:
第十九路猪猴    时间: 2020-2-21 11:49
计算完了N.cub和f-.cub后,若通过GV绘制填色等值面图,可以先通过1)把N.cub拖到gview里,再在cube action里load f-.cub,和2)先把f-.cub拖到gview里,再load N.cub。
只要New Mapped Surface时选中的是N.cub,两者得到的结果是没有区别的是吧?不知道按文章这么理解对不对


作者
Author:
sobereva    时间: 2020-2-21 19:49
第十九路猪猴 发表于 2020-2-21 11:49
计算完了N.cub和f-.cub后,若通过GV绘制填色等值面图,可以先通过1)把N.cub拖到gview里,再在cube action ...

一试便知。结果相同就说明等价
作者
Author:
sophieding    时间: 2021-2-1 15:11
老师,您好!请问福井函数首先采用结合本帖产生的N,结合multiwfn计算得到(手册4.7.3方法)f-f+f0(即不采用本贴步骤中产生f-),采用GaussView绘制福井函数各反应的等值线图是否也可以呢?
作者
Author:
sobereva    时间: 2021-2-1 20:45
sophieding 发表于 2021-2-1 15:11
老师,您好!请问福井函数首先采用结合本帖产生的N,结合multiwfn计算得到(手册4.7.3方法)f-f+f0(即不采用 ...

看不懂你的描述
Multiwfn手册4.7.3算的是简缩福井函数,怎么可能用于GaussView的绘图

想画福井函数的等值线图直接就用Multiwfn的主功能4画相应的密度差图就完了,又省事效果又好
使用Multiwfn作电子密度差图
http://sobereva.com/113

作者
Author:
sophieding    时间: 2021-2-3 19:18
sobereva 发表于 2021-2-1 20:45
看不懂你的描述
Multiwfn手册4.7.3算的是简缩福井函数,怎么可能用于GaussView的绘图

感谢老师的回答。我的目的是为了画出本帖中图3的等值线图的效果,即采用Multiwfn+Gaussview绘制的等值线效果图。刚开始已按照http://bbs.keinsci.com/thread-13328-1-1.html产生了f0、f+、f-的cube等文件和密度差图,现想将图改为本帖的Multiwfn+Gaussview绘制的等值线图效果图。因此想请问,若采用本帖中N.cube与我先前按照http://bbs.keinsci.com/thread-13328-1-1.html产生的f-.cube进行绘制等值线图与本帖步骤产生的效果图对比(格点数据均采用高质量),是否是一致的?
作者
Author:
sobereva    时间: 2021-2-4 03:23
sophieding 发表于 2021-2-3 19:18
感谢老师的回答。我的目的是为了画出本帖中图3的等值线图的效果,即采用Multiwfn+Gaussview绘制的等值线 ...

此帖所有图都是等值面图,不是等值线图,对于平面图才有等值线图,先说清楚到底要等值面图还是等值线图
作者
Author:
sophieding    时间: 2021-2-4 16:14
sobereva 发表于 2021-2-4 03:23
此帖所有图都是等值面图,不是等值线图,对于平面图才有等值线图,先说清楚到底要等值面图还是等值线图

老师,需要的是等值面图
作者
Author:
sobereva    时间: 2021-2-6 03:52
sophieding 发表于 2021-2-4 16:14
老师,需要的是等值面图

直接用下面文中的做法让Multiwfn产生福井函数的格点数据并导出为cube文件,放到gview里显示等值面图就完了,简单至极,完全不用管其它什么cub文件
使用Multiwfn超级方便地计算出概念密度泛函理论中定义的各种量
http://sobereva.com/484http://bbs.keinsci.com/thread-13328-1-1.html
作者
Author:
嘟嘟嘟嘟    时间: 2021-5-27 10:15
老师您好,博文中【而更为一般化,也往往显示效果更好的做法是先用Multiwfn计算用来定义等值面的函数的格点数据,导出为cube文件;然后再计算出被投影的函数的格点数据,也导出cube文件】,我想问下,如果我想画f+和f0,定义等值面的函数的格点数据是N+1.cub和N+1.cub/2吗?
作者
Author:
sobereva    时间: 2021-5-27 22:38
嘟嘟嘟嘟 发表于 2021-5-27 10:15
老师您好,博文中【而更为一般化,也往往显示效果更好的做法是先用Multiwfn计算用来定义等值面的函数的格点 ...

看不懂你的意思
如果你要绘制f+和f0投影到范德华表面的图像,显然得用电子密度格点数据的cub来显示等值面,这样才能得到rho=0.001等值面。之后把什么函数往上投影是另外一回事
作者
Author:
嘟嘟嘟嘟    时间: 2021-5-28 10:20
sobereva 发表于 2021-5-27 22:38
看不懂你的意思
如果你要绘制f+和f0投影到范德华表面的图像,显然得用电子密度格点数据的cub来显示等值 ...

老师,不好意思,基础知识不过关,对这里不清楚,表述的不大到位。我按照您f-的做法,说一遍f+相应的做法,麻烦您看对不对哈:
(1)基于优化的中性的晕苯的结构,将电荷和自旋多重度改为-1 2,算个单点任务,将得到的chk转换并命名为N+1.fch。
(2)启动Multiwfn,输入以下内容
(3)N+1.fch
        5   //计算格点数据
        1   //电子密度
        2   //中等质量格点(如果是大体系,建议选high quality grid以保证之后绘制的图像质量较好)
        2   //将格点数据导出为当前目录下density.cub。然后手动把此文件改名为N+1.cub
        0   //回主菜单
        5   //计算格点数据
         0   //自定义运算
        1   //将有1个文件对N+1.fch进行运算
        -,N.fch   //将令N+1.fch的函数值减去N.fch的函数值
        1   //电子密度
        2   //中等质量格点(必须与产生N+1.cub时用的格点设定严格相同)
        2   //将格点数据导出为当前目录下density.cub。然后手动把此文件改名为f+.cub

然后在Gaussview中绘制填色等值面
(4)把N+1.cub拖到gview里
        Results - Surfaces/Contours
(5) Cube Actions - Load Cube,选f+.cub
此时Cubes Available里面会有两套格点数据。选中第一个,把Density框里的数值改为0.01
Surface Actions - New Mapped Surface - OK
作者
Author:
sobereva    时间: 2021-5-28 13:01
嘟嘟嘟嘟 发表于 2021-5-28 10:20
老师,不好意思,基础知识不过关,对这里不清楚,表述的不大到位。我按照您f-的做法,说一遍f+相应的做法 ...

不对。
显示等值面应当用N.cub
作者
Author:
嘟嘟嘟嘟    时间: 2021-5-28 13:28
sobereva 发表于 2021-5-28 13:01
不对。
显示等值面应当用N.cub

好的,老师。就是实际操作的时候,在(4)中使用N.cub,而替换的只是(5)中f-,f0,f+,等函数对吗?实际上就是把电子密度差值投影到初始状态,观察其相应的变化?
作者
Author:
sobereva    时间: 2021-5-29 00:19
嘟嘟嘟嘟 发表于 2021-5-28 13:28
好的,老师。就是实际操作的时候,在(4)中使用N.cub,而替换的只是(5)中f-,f0,f+,等函数对吗?实 ...


作者
Author:
嘟嘟嘟嘟    时间: 2021-5-29 10:43
sobereva 发表于 2021-5-29 00:19

谢谢老师!
作者
Author:
刘看山看山    时间: 2024-7-25 22:05
本帖最后由 刘看山看山 于 2024-7-25 22:26 编辑

启动Multiwfn,输入以下内容
N+1.wfn
5   //计算格点数据
1   //电子密度
2   //中等质量格点(如果是大体系,建议选high quality grid以保证之后绘制的图像质量较好)
2   //将格点数据导出为当前目录下density.cub。然后手动把此文件改名为N.cub
0   //回主菜单
5   //计算格点数据
0   //自定义运算
1   //将有1个文件对N.wfn进行运算
-,N.wfn   //将令N+1.wfn的函数值减去N.wfn的函数值
1   //电子密度
2   //中等质量格点(必须与产生N.cub时用的格点设定严格相同)
2   //将格点数据导出为当前目录下density.cub。然后手动把此文件改名为f+.cub

N.cub拖到gview里
Results - Surfaces/Contours
Cube Actions - Load Cube,选f+.cub
此时Cubes Available里面会有两套格点数据。选中第一个,把Density框里的数值改为0.01
Surface Actions - New Mapped Surface - OK

请问老师们f+在gaussView中的填色等值面图是这样画的嘛,为什么我画出来和f-一样
作者
Author:
sobereva    时间: 2024-7-26 03:56
刘看山看山 发表于 2024-7-25 22:05
启动Multiwfn,输入以下内容
N+1.wfn
5   //计算格点数据

先确保对f-.cub和f+.cub绘制等值面图确实看到的不一样再说。如果不同,说明当前作图设置下填色等值面图的差异太小,肉眼难以分辨




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3