计算化学公社

标题: 在VMD中绘制Gaussian计算的分子振动矢量的方法 [打印本页]

作者
Author:
sobereva    时间: 2020-9-8 17:01
标题: 在VMD中绘制Gaussian计算的分子振动矢量的方法
在VMD中绘制Gaussian计算的分子振动矢量的方法
Method for plotting molecular vibrational vectors calculated by Gaussian in VMD

文/Sobereva@北京科音
First release: 2020-Sep-8    Last update: 2024-Feb-4


Gaussian用户观看freq任务产生的振动矢量一般都是通过GaussView看(虽然也有ChemCraft等其它一些程序也可以看)。然而,起码对于GaussView 6来说,GaussView显示振动矢量的一个很大不足是箭头太细,而且头部不够粗,导致有时候都看不清楚,放在文章里不够美观。另外,GaussView绘制分子结构的作图选项不够灵活,而且还收费。VMD是极其流行的化学体系可视化程序,免费、灵活、图像效果好,本文介绍如何通过笔者写的VMD作图脚本非常方便地绘制Gaussian的振动分析任务产生的振动矢量。VMD可以在http://www.ks.uiuc.edu/Research/vmd/免费下载。

在这里下载笔者编写的绘图脚本和示例文件:http://sobereva.com/attach/567/file.zip。此脚本至少对于目前撰文时的VMD正式版中最新的1.9.3、Gaussian 09和16是完全适用的。

这里以绘制多巴胺的振动矢量为例进行演示。把文件包里的dopamine.out放到VMD目录下,这是多巴胺的Gaussian的freq任务的输出文件。然后我们得把这个.out文件转化成一个VMD可以认的结构文件的格式,比如可以把此文件载入GaussView,然后另存为.pdb或.mol2文件。也可以下载Multiwfn(http://sobereva.com/multiwfn),启动Multiwfn后载入此文件,然后选主功能100的子功能2,通过相应选项导出为.pdb或.xyz文件。

把文件包里的drawarrow.tcl和GauNorm.tcl都放到VMD目录下,然后用文本编辑器打开GauNorm.tcl,把开头的set filename后面的文件名改为dopamine.out。之后启动VMD,把多巴胺的结构文件载入VMD,然后在文本窗口输入source GauNorm.tcl执行此脚本,此时振动矢量信息就被读入了,与此同时定义了名为norm的绘制振动矢量的命令。之后在VMD的文本窗口输入比如norm 4,就可以把4号振动模式通过箭头画出来。

norm后面还可以接第2个参数,用来设置箭头长度是正则矢量的几倍,数值越大箭头越长,默认是3。norm后面还可以接第3个参数,用来设置箭头的半径,默认为0.05。比如norm 5 6 0.07就代表用6倍长度、0.07的半径绘制第5个振动矢量。默认是用黄色绘制箭头,如果想用别的颜色,把GauNorm.tcl中的draw color后面的yellow改成其它颜色名,比如cyan。

此例输入norm 17 5,然后令分子以CPK方式显示(在Graphics - Representation里把Drawing method改为CPK,再把Sphere Scale设为0.6),效果如下,可见非常理想!和GaussView显示的相对比,可见展现的信息是相同的,而GaussView画的箭头相比之下明显太小气了。

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

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

注意GauNorm.tcl开头还有个set ilinear语句,如果当前体系是线型体系,必须把后面的值改为1。

如果你在Gaussian做freq或opt freq任务中按照《在Gaussian中做限制性优化的方法》(http://sobereva.com/404)中的做法将N个原子的笛卡尔坐标冻结了,运行source GauNorm.tcl之前必须把里面set nfreeze后面的值设为N(默认为0,没有原子被冻结)。

如果你希望让箭头的始端位于各个原子上(和GaussView的风格一致),就把本文文件包里的drawarrow2.tcl放到VMD目录下,把GauNorm.tcl里的两处drawarrow都改为drawarrow2并保存。之后再按上文绘图即可。用norm 17 4命令,效果如下

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


作者
Author:
liuyuje714    时间: 2020-9-8 21:34
测试了一下1.9.4阿尔法测试版,需要先unset x,就可以正常工作。
作者
Author:
snljty    时间: 2020-9-8 22:13
本帖最后由 snljty 于 2020-9-8 22:29 编辑
liuyuje714 发表于 2020-9-8 21:34
测试了一下1.9.4阿尔法测试版,需要先unset x,就可以正常工作。

vmd这个有点儿无厘头啊,定义x为string是要闹哪样,明显x是用户非常常用的关键词吧...感觉1.9.4和1.9.3内置的tcl语法也不一样了,以前好多脚本都得改...
顺便,卢老师博文写的GauNorm.tcl,文件包里是GauNormal.tcl

作者
Author:
sobereva    时间: 2020-9-9 06:38
既然1.9.4有这么恶心的默认情况,脚本里新加了行if {[info exist x]} {unset x},已更新了脚本
作者
Author:
Peter_zhong    时间: 2020-9-9 08:55
老师 原子标号能显示出来吗 我见您的图中没有
作者
Author:
kay    时间: 2020-9-9 09:34
sob老师,频率类似63.89的,该如何输入呢?刚才测试了一下,提示can't read "x(1,63.89)": no such element in array
作者
Author:
冰释之川    时间: 2020-9-9 09:52
kay 发表于 2020-9-9 09:34
sob老师,频率类似63.89的,该如何输入呢?刚才测试了一下,提示can't read "x(1,63.89)": no such element ...

输入振动模式的编号,不是其频率
作者
Author:
kay    时间: 2020-9-9 10:26
冰释之川 发表于 2020-9-9 09:52
输入振动模式的编号,不是其频率

好的,谢谢冰老师,误以为输入频率了
作者
Author:
sobereva    时间: 2020-9-10 03:56
Peter_zhong 发表于 2020-9-9 08:55
老师 原子标号能显示出来吗 我见您的图中没有

在VMD中显示原子序号的方法
http://sobereva.com/197
作者
Author:
Peter_zhong    时间: 2020-10-9 15:40
sobereva 发表于 2020-9-10 03:56
在VMD中显示原子序号的方法
http://sobereva.com/197

老师 按您博文说的做,原子数多的话,标签在一侧很乱,cpk模式下,标签还被遮住了。想请问您,还有什么软件是VMD和Gaussview的结合体吗? 那样就可以使标签在原子中心不被遮挡,振动矢量又美观。谢谢老师
作者
Author:
sobereva    时间: 2020-10-10 00:29
Peter_zhong 发表于 2020-10-9 15:40
老师 按您博文说的做,原子数多的话,标签在一侧很乱,cpk模式下,标签还被遮住了。想请问您,还有什么软 ...

CPK下没法避免被遮挡。
只能PS
作者
Author:
pyscf    时间: 2020-12-12 05:51
前几天闲逛的时候看到了这个github项目 利用pymol来显示分子振动的动画 感觉比vmd的功能多一些
https://github.com/smutao/PyVibMS
感兴趣的小伙伴可以看一下
作者
Author:
sobereva    时间: 2022-5-19 21:44
对本文的脚本进行了更新,支持了振动分析时对原子做限制的情况,已给本文加入了以下内容:
如果你在Gaussian做freq或opt freq任务中按照《在Gaussian中做限制性优化的方法》(http://sobereva.com/404)中的做法将N个原子的笛卡尔坐标冻结了,运行source GauNorm.tcl之前必须把里面set nfreeze后面的值设为N(默认为0,没有原子被冻结)。


作者
Author:
Nemoyu    时间: 2023-3-1 20:22
老师,我第一次接触VMD,按您描述的方法做拉曼分子振动矢量图,但是到输入norm4这一步,会显示命令无效,请教一下问题在哪里呢?(脚本问题如下)谢谢老师!

can't set "x(1,1)": variable isn't array
vmd > norm4invalid command name "norm4
作者
Author:
sobereva    时间: 2023-3-2 05:18
Nemoyu 发表于 2023-3-1 20:22
老师,我第一次接触VMD,按您描述的方法做拉曼分子振动矢量图,但是到输入norm4这一步,会显示命令无效,请 ...

看清楚文中的每一个空格
作者
Author:
Nemoyu    时间: 2023-3-3 12:20
老师,我是按着文中描述来的呀,还是没找到问题在哪儿,请老师再指教一下
作者
Author:
sobereva    时间: 2023-3-8 22:24
Nemoyu 发表于 2023-3-3 12:20
老师,我是按着文中描述来的呀,还是没找到问题在哪儿,请老师再指教一下

装VMD 1.9.3 32bit,别装到带空格目录下。有问题到时候再说
作者
Author:
sobereva    时间: 2024-2-4 17:23
更新了下文、添加了新脚本,现在允许让箭头的始端位于原子上了
作者
Author:
VanChester    时间: 2024-2-7 23:40
sobereva 发表于 2024-2-4 17:23
更新了下文、添加了新脚本,现在允许让箭头的始端位于原子上了

1.9.4把脚本里所有变量名x,y,z改成x0,y0,z0就可以正常使用了
作者
Author:
Huangff    时间: 2024-11-7 20:00
snljty 发表于 2020-9-8 22:13
vmd这个有点儿无厘头啊,定义x为string是要闹哪样,明显x是用户非常常用的关键词吧...感觉1.9.4和1.9.3内 ...

您好,我在最新版本的脚本文件夹没有找到这个文件

作者
Author:
zhangwei2713    时间: 2024-12-6 15:18
请问一下sob老师,我想把分子中某些部分隐去并且将这个原子上的振动箭头隐去,比如氢原子,请问这个能实现吗?
作者
Author:
sobereva    时间: 2024-12-7 03:00
zhangwei2713 发表于 2024-12-6 15:18
请问一下sob老师,我想把分子中某些部分隐去并且将这个原子上的振动箭头隐去,比如氢原子,请问这个能实现 ...

自己改脚本就行了
作者
Author:
Uus/pMeC6H4-/キ    时间: 2025-2-14 11:07
然而,起码对于GaussView 6来说,GaussView显示振动矢量的一个很大不足是箭头太细,而且头部不够粗,导致有时候都看不清楚,放在文章里不够美观。


小声说一句,其实File - Preferences - Vibrations里能做的振动矢量显示设置与具体版本有关:6.0.16版里只能通过Scale设长短,6.1.1版里除Scale外还增加了颜色与半径的设置。把半径从默认的0.02增大到0.1以后效果如下,这样箭头清楚多了。当然除了形式键级外,其他如箭头起点的调节还是VMD更灵活。
(, 下载次数 Times of downloads: 68)
作者
Author:
好兄弟    时间: 2025-3-20 21:33
sobereva 发表于 2024-12-7 03:00
自己改脚本就行了

sob老师好,我想用VMD画Gaussian里显示的第71个模式的振动,但是VMD中输入71    或者是那一行信息中的123,都不显示振动矢量,请问这是什么原因呢?
(, 下载次数 Times of downloads: 75) (, 下载次数 Times of downloads: 73)


作者
Author:
sobereva    时间: 2025-3-21 06:05
好兄弟 发表于 2025-3-20 21:33
sob老师好,我想用VMD画Gaussian里显示的第71个模式的振动,但是VMD中输入71    或者是那一行信息中的123 ...

上传压缩后的Gaussian输出文件,否则没法测试
作者
Author:
好兄弟    时间: 2025-3-21 17:51
sobereva 发表于 2025-3-21 06:05
上传压缩后的Gaussian输出文件,否则没法测试

(, 下载次数 Times of downloads: 5) ,使用orca优化的结构,使用OfakeG转换过了。麻烦sob老师了

作者
Author:
sobereva    时间: 2025-3-22 16:01
好兄弟 发表于 2025-3-21 17:51
,使用orca优化的结构,使用OfakeG转换过了。麻烦sob老师了。

本文的脚本是给Gaussian输出文件用的,OfakeG转换的情况不在考虑范围内
作者
Author:
好兄弟    时间: 2025-3-23 19:34
sobereva 发表于 2025-3-22 16:01
本文的脚本是给Gaussian输出文件用的,OfakeG转换的情况不在考虑范围内

好的,感谢sob老师
作者
Author:
Uus/pMeC6H4-/キ    时间: 2025-3-24 13:54
好兄弟 发表于 2025-3-20 21:33
sob老师好,我想用VMD画Gaussian里显示的第71个模式的振动,但是VMD中输入71    或者是那一行信息中的123 ...

确定真是完全画不出箭头,而不是箭头太小被原子球遮盖吗?可以把分子的显示方式的材质调成透明的Transparent或Glass1之类(甚至索性关闭显示)或调小Sphere scale,以及用正文所说norm的参数增大箭头的长度和半径试试。单看你的例子,我没感觉OfakeG转换的输出文件有什么特殊之处是不兼容GauNorm.tcl的,至少看那些string first以及scan读取内容的命令没看到。
作者
Author:
好兄弟    时间: 2025-3-31 08:23
Uus/pMeC6H4-/キ 发表于 2025-3-24 13:54
确定真是完全画不出箭头,而不是箭头太小被原子球遮盖吗?可以把分子的显示方式的材质调成透明的Transpar ...

感谢老师答疑,只有较低的振动模式可以显示,71以上的振动模式,确实无法显示。
作者
Author:
snljty2    时间: 2025-3-31 10:02
好兄弟 发表于 2025-3-31 08:23
感谢老师答疑,只有较低的振动模式可以显示,71以上的振动模式,确实无法显示。

就是箭头太短了,我用你的文件画出来71号模式完全没有问题。脚本前面加了
  1. if {[info exist x]} {unset x}
复制代码
。楼上已经说了解决方案,增加箭头的长度,卢老师博文里也说的很清楚。用norm 71 10命令画出来如下。
(, 下载次数 Times of downloads: 79)

作者
Author:
好兄弟    时间: 2025-4-7 11:57
本帖最后由 好兄弟 于 2025-4-26 17:12 编辑
snljty2 发表于 2025-3-31 10:02
就是箭头太短了,我用你的文件画出来71号模式完全没有问题。脚本前面加了 。楼上已经说了解决方案,增加 ...
感谢老师,已成功绘制。


作者
Author:
hu520130    时间: 2025-4-14 23:23
sobereva 发表于 2025-3-22 16:01
本文的脚本是给Gaussian输出文件用的,OfakeG转换的情况不在考虑范围内

卢老师您好,ORCA输出的OUT文件,对于这个脚本可以画振动矢量图么?我按照教程,VMD里输入source GauNorm.tcl的时候,就显示can't read "iatm": no such variable,不知道是什么原因,是因为只支持高斯的输出文件么?ORCA的需要怎么来画好看的振动矢量图呢?希望能得到老师的解答,非常感谢!
作者
Author:
sobereva    时间: 2025-4-15 04:17
hu520130 发表于 2025-4-14 23:23
卢老师您好,ORCA输出的OUT文件,对于这个脚本可以画振动矢量图么?我按照教程,VMD里输入source GauNorm ...

将Gaussian与ORCA联用搜索过渡态、产生IRC、做振动分析
http://sobereva.com/422http://bbs.keinsci.com/thread-10141-1-1.html
作者
Author:
hu520130    时间: 2025-4-15 10:53
sobereva 发表于 2025-4-15 04:17
将Gaussian与ORCA联用搜索过渡态、产生IRC、做振动分析
http://sobereva.com/422(http://bbs.keinsci.c ...

谢谢卢老师!
作者
Author:
身在盘丝洞    时间: 2025-6-19 12:49
老师绘制振动矢量图所选的模式是选择重组能较大的还是黄昆因子较大的?
作者
Author:
sobereva    时间: 2025-6-19 14:20
身在盘丝洞 发表于 2025-6-19 12:49
老师绘制振动矢量图所选的模式是选择重组能较大的还是黄昆因子较大的?

纯粹取决于你的目的。没头没尾问这么一个问题别人没法回答
作者
Author:
身在盘丝洞    时间: 2025-6-19 15:46
sobereva 发表于 2025-6-19 14:20
纯粹取决于你的目的。没头没尾问这么一个问题别人没法回答

谢谢老师,我想用来看一下不同分子非辐射跃迁不同导致荧光量子产率不同这方面的,不知道该按照哪一个来。
请问老师,重组能和黄昆因子都分别解释什么方面比较好




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