计算化学公社

标题: 在VMD里将cube文件瞬间绘制成效果极佳的等值面图的方法 [打印本页]

作者
Author:
sobereva    时间: 2019-5-21 12:20
标题: 在VMD里将cube文件瞬间绘制成效果极佳的等值面图的方法
在VMD里将cube文件瞬间绘制成效果极佳的等值面图的方法
Easily drawing a cube file as an excellent isosurface map in VMD

文/Sobereva@北京科音  2019-May-21


1 前言

Multiwfn(http://sobereva.com/multiwfn)是产生量子化学研究和波函数分析中用到的各种格点数据特别方便、强大的工具,可以在自带的界面里直接显示出等值面,也可以把数据导出成cube文件从而在免费的VMD程序(http://www.ks.uiuc.edu/Research/vmd/)里绘制出效果更好的图像。不了解cube文件者请参看《Gaussian型cube文件简介及读、写方法和简单应用》(http://sobereva.com/125)。笔者感到每次给初学者解释怎么在VMD里操作显示出等值面特别费劲、费事。笔者之前写过一篇文章《用VMD绘制艺术级轨道等值面图的方法》(http://sobereva.com/449),里面介绍了一种利用自编的VMD脚本超级方便地绘制出效果绝赞的轨道等值面图的做法。于是笔者想到,不如干脆写一个脚本,从而对于任意类型的cube文件都可以敲几下键盘就能瞬间在VMD里画出极好的等值面图。本文就介绍一下这个脚本,我深信这个脚本会有极高的实用价值(相比之下,大部分其它可视化程序的显示效果都丑爆了,操作步骤还更繁琐)。


2 脚本

本文介绍的VMD脚本是showcub.vmd,在Multiwfn程序包里的examples\scripts目录下。将这个文件拷到VMD目录下,并且用文本编辑器编辑此目录下的vmd.rc文件(对于Windows版VMD而言),在末尾插入source showcub.vmd。这样每次VMD启动时就会自动执行此脚本使其中定义的命令生效。此脚本定义了四条命令,可以直接在VMD的控制台里输入,这里直接给出一些例子:

cub MIO:将VMD目录下的MIO.cub绘制成等值面图,正值和负值部分分别用绿色和蓝色显示,等值面数值分别为默认值0.05和-0.05
cub MIO 0.02:同上,但正值和负值部分等值面数值直接分别设为0.02和-0.02
cubiso 0.015:在使用cub命令后使用,把当前载入的格点数据的正值和负值部分分别设为0.015和-0.015

有的时候我们需要同时将两个cube文件显示在一起,此脚本里也定义了相应命令用于此目的,示例:
cub2 eri nozomi:将VMD目录下的eri.cub和nozomi.cub同时绘制成等值面,分别用绿色和蓝色表示,等值面数值都为默认的0.05(注:如果eri和nozomi格点数据里也有负值部分,负值部分不会被显示出来)
cub2 eri nozomi 0.02:同上,但是二者的等值面数值都直接设为0.02
cub2iso 0.015:在使用cub2命令后使用,代表把已载入的两套cube文件对应的等值面数值都设为0.015

每次使用cub或cub2命令之前都会自动将之前载入的格点数据从VMD中清掉,因此这俩命令可以反复用无数次。

和前述的《用VMD绘制艺术级轨道等值面图的方法》里的做法一样,用VMD绘制出来之后,可以借助Multiwfn程序包里的examples\scripts\VMDrender_full.bat将等值面通过Tachyon渲染器渲染成非常漂亮的图像。

下面给一些例子,VMD用的是1.9.3 Windows版。大家先按上述说明把vmd.rc设置好。


3 例子:用VMD显示自旋密度等值面

在《谈谈自旋密度、自旋布居以及在Multiwfn中的绘制和计算》(http://sobereva.com/353)一文中笔者举了丁烷双自由基的例子。我们用Multiwfn的主功能5计算完这个体系的自旋密度格点数据后,在后处理菜单选择导出cube文件,当前目录下就得到了spindensity.cub。将此文件挪到VMD目录下,启动VMD,直接输入cub spindensity 0.01,马上看到下图,绿色和蓝色分别对应自旋密度为正和为负的部分。
(, 下载次数 Times of downloads: 134)

为了得到更好的效果,我们把Multiwfn的examples\scripts目录下的VMDrender_full.bat拷到VMD目录下。在VMD里选择File - Render,渲染器选Tachyon(别选后面带internal的那个),点击Start Rendering。然后双击VMDrender_full.bat执行这个批处理文件,过一会儿VMD目录下就出现了full.bmp,效果如下,可见非常理想,富有立体感而且有阴影效果。
(, 下载次数 Times of downloads: 138)

之前笔者录过一段视频《使用Multiwfn结合VMD绘制自旋密度等值面图》(https://www.bilibili.com/video/av26312131),由视频可见,如果不用脚本而手动在VMD里进行操作来显示出等值面,操作步骤多,而效果还明显不如本文的做法好。


4 例子:用VMD同时显示电子激发过程中空穴和电子的等值面

笔者之前在《使用Multiwfn做空穴-电子分析全面考察电子激发特征》(http://sobereva.com/434)中介绍了一种极为重要的考察电子激发特征的方法,此方法可以把空穴和电子分布都给出来。按照文中的做法将空穴和电子格点数据都算出来后,在后处理菜单里可以看到将二者导出为cube文件的选项,选了之后会得到electron.cub和hole.cub。我们现在用VMD将二者同时绘制成等值面。

将这两个cube文件都挪到VMD目录下,启动VMD,在文本窗口输入cub2 electron hole。此时图形窗口里只看到了结构,没看到等值面,这是因为默认的等值面数值太大。我们通过cub2iso命令不断尝试不同的等值面数值,发现当输入cub2iso 0.002命令的时候,空穴和电子的分布特征看起来都比较明显。和上一节一样通过VMDrender_full.bat进行渲染,得到下图:
(, 下载次数 Times of downloads: 145)

这图虽然表面上效果看起来很不错,但对于空穴-电子分析来说并不算特别理想。因为我们希望能把空穴与电子分布的交叠特征比较清楚地展现出来,但是当前的图看不清楚这点。此时我们可以尝试其它材质。进入Graphics - Representation,把Material改为EdgyGlass,然后在Selected Molecule里切换成electron.cub,再次把Material改为EdgyGlass,此时空穴和电子就都是EdgyGlass材质了,二者的交叠在图形窗口中已经可以看得非常清楚了。如果你用VMDrender_full.bat来渲染,得到的图像如下
(, 下载次数 Times of downloads: 117)

此时的图很不错,但可能会有人觉得有点偏亮。你可以编辑VMDrender_full.bat的内容,把里面的-trans_raster3d改为-trans_vmd,-fullshade改为-mediumshade,再次运行脚本,得到下图
(, 下载次数 Times of downloads: 113)

可能又有人嫌这个图有点偏暗,你可以在图像编辑程序如ps里调调曝光度、饱和度之类直到最满意。在Photoshop里把上图的曝光度(Ctrl+Alt+E)增加0.6后得到下图,此时亮度正合适,而且空穴和电子的重叠看得非常清楚,完美!
(, 下载次数 Times of downloads: 111)



5 例子:用VMD显示水四聚体的密度差图

在Multiwfn手册4.4.8节给出了绘制水四聚体的密度差图的步骤,也就是让整个水四聚体的密度减去构成它的每个单体的密度。我们将算出来的密度差格点数据导出成cube文件,然后用VMD来渲染。如果直接用VMDrender_full.bat渲染,虽然效果很好,但是阴影搞得图像略微复杂,反倒有点不便于分析,因此我们还是按照上一节,改成-trans_vmd和-mediumshade选项然后再渲染,之后在Photoshop里按Ctrl+Alt+E,把灰度系数校正(Gamma)改为0.7后得到下图,可见又漂亮,又把密度差特征展现得很清楚。

(, 下载次数 Times of downloads: 120)


6 例子:苯甲酮的LOL-pi

在《在Multiwfn中单独考察pi电子结构特征》(http://sobereva.com/432)一文中介绍了怎么通过Multiwfn非常简单地绘制出平面和非平面体系的描述pi电子结构的函数的图像,其中对一个非平面体系苯甲酮绘制了LOL-pi等值面图。使用本文的脚本,直接用cub命令将LOL-pi的格点数据文件载入VMD,等值面设为0.5后,通过VMDrender_full.bat渲染直接就得到了下面这个效果非常理想的图像。

(, 下载次数 Times of downloads: 120)


7 总结&其它

本文提供的脚本可以又快又好又方便地将一个或两个cube文件绘制成等值面,尤其是建议Multiwfn用户都掌握本文的做法。

用VMDrender_full.bat渲染出的效果并非对任何情况都总是理想,应根据实际情况调节,在http://sobereva.com/449文中对于作图设定还有更多讨论,本文不再累述。尤为值得一提的是如果在.bat里加入-shadow_filter_off,可以避免由于等值面产生大量阴影而使得图像较暗,用了-trans_vmd后若感觉图像偏暗,除了如上文用ps调节外也可以尝试这个选项。大家也可以在Graphics - Representation中对设置自行进行各种修改、在Graphics - Materials里对材质定义进行调整、在Display里调整光源来试图改进效果。等值面是否光滑和格点间距有直接关系,间距越小越光滑,但计算也越昂贵,详见《Multiwfn FAQ》(http://sobereva.com/452)的Q39的讨论。

.bat里-res后面的数字定义的是渲染出来的图像尺寸,设得越小则Tachyon渲染耗时越低。
作者
Author:
exity    时间: 2019-5-21 16:17
个人感觉如果VMD能增设一个原子编号和符号的功能,GV在出图方面真的是完全没有存在之必要了。
作者
Author:
sobereva    时间: 2019-5-22 03:16
exity 发表于 2019-5-21 16:17
个人感觉如果VMD能增设一个原子编号和符号的功能,GV在出图方面真的是完全没有存在之必要了。

这个重要的功能VMD一直也没有,是很不应该的事。目前还是得靠自行ps
作者
Author:
captain    时间: 2019-5-22 20:56
大神 在这里
将此文件挪到VMD目录下,启动VMD,直接输入orb spindensity 0.01
orb 应该改成 cub 吧!
作者
Author:
captain    时间: 2019-5-22 21:09
我发现 full.bmp vmdscene.dat 等文件要点击 “兼容性文件” 才能显示出来
不知道大家是不是也是这样

作者
Author:
sobereva    时间: 2019-5-23 00:40
captain 发表于 2019-5-22 20:56
大神 在这里
将此文件挪到VMD目录下,启动VMD,直接输入orb spindensity 0.01
orb 应该改成 cub 吧!

对,笔误,已改
作者
Author:
84015917    时间: 2020-10-4 15:54
在绘制电子空穴分布图时,会有这样子不光滑的情况是因为什么?

作者
Author:
sobereva    时间: 2020-10-10 01:10
84015917 发表于 2020-10-4 15:54
在绘制电子空穴分布图时,会有这样子不光滑的情况是因为什么?

tachyon渲染一下就解决了
作者
Author:
84015917    时间: 2020-10-10 19:23
sobereva 发表于 2020-10-10 01:10
tachyon渲染一下就解决了

感谢sob老师
作者
Author:
破晓时的曙光    时间: 2021-3-8 15:06
请教一下老师,我在制作电子空穴图时,修改原子的颜色,用VMD的Graphics-Colors,选择Element修改原子颜色,发现用了脚本之后,原子颜色不能改,这个该怎么办呢
作者
Author:
sobereva    时间: 2021-3-9 04:23
破晓时的曙光 发表于 2021-3-8 15:06
请教一下老师,我在制作电子空穴图时,修改原子的颜色,用VMD的Graphics-Colors,选择Element修改原子颜色 ...

representation界面里弄清楚当前coloring method按照什么来着色,相应地在graphics - colors改相应条目就完了
作者
Author:
annaqz    时间: 2021-5-10 12:23
请教一下社长,在linux下的vmd里,想通过VMDrender_full.bat渲染LOL-pi的格点数据文件,应该怎么修改?windows下此文件前面是tachyon_WIN32.exe。
作者
Author:
sobereva    时间: 2021-5-10 13:37
annaqz 发表于 2021-5-10 12:23
请教一下社长,在linux下的vmd里,想通过VMDrender_full.bat渲染LOL-pi的格点数据文件,应该怎么修改?wind ...

默认方式安装VMD的话,Linux下Tachyon渲染器为/usr/local/lib/vmd/tachyon_LINUXAMD64。后面接的参数和windows下一样
作者
Author:
annaqz    时间: 2021-5-11 09:30
sobereva 发表于 2021-5-10 13:37
默认方式安装VMD的话,Linux下Tachyon渲染器为/usr/local/lib/vmd/tachyon_LINUXAMD64。后面接的参数和wi ...

好的,那我试试。谢谢社长!
作者
Author:
Vincentears    时间: 2023-5-16 16:13
sob老师,学生想请教一下这里的isovalue的值单位是什么?
作者
Author:
sobereva    时间: 2023-5-16 20:49
Vincentears 发表于 2023-5-16 16:13
sob老师,学生想请教一下这里的isovalue的值单位是什么?

当前格点数据文件以什么单位记录的函数,isovalue就是什么单位。Multiwfn产生的cube文件基本都是a.u.(除了范德华势等极个别的)
作者
Author:
Vincentears    时间: 2023-5-17 20:42
sobereva 发表于 2023-5-16 20:49
当前格点数据文件以什么单位记录的函数,isovalue就是什么单位。Multiwfn产生的cube文件基本都是a.u.(除 ...

感谢感谢!




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