计算化学公社

标题: 在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: 140)

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

注意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: 38)


作者
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内 ...

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





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