计算化学公社

 找回密码 Forget password
 注册 Register
Views: 35449|回复 Reply: 42
打印 Print 上一主题 Last thread 下一主题 Next thread

[VMD] VMD初始化文件(vmd.rc)我的推荐设置

  [复制链接 Copy URL]

5万

帖子

99

威望

5万

eV
积分
112492

管理员

公社社长

跳转到指定楼层 Go to specific reply
楼主
VMD初始化文件(vmd.rc)我的推荐设置
My recommended settings of VMD initialization file (vmd.rc)

文/Sobereva@北京科音
First release: 2020-Apr-1   Last update: 2023-Apr-4


VMD(http://www.ks.uiuc.edu/Research/vmd/)是用得极为广泛的化学体系可视化程序,由于其极度灵活,有很多技巧可以使其用起来更方便。

VMD启动时会先用初始化文件对一些设置进行初始化,即执行里面的各种命令,用户也可以往里添加额外的命令。对于Windows版来说,这个文件就是VMD目录下的vmd.rc。对于Linux版来说,这个文件叫.vmdrc,VMD会先在当前目录下搜索,没有的话就去找~/.vmdrc,还没有的话去找$VMDDIR/.vmdrc(这里$VMDDIR环境变量是没有预先定义的),如果还找不到此文件,就会用默认设置。
注:Linux下的.vmdrc文件默认出现在安装目录下,比如以默认路径安装会出现为/usr/local/lib/vmd/.vmdrc,但如果不配置VMDDIR环境变量的话这个文件并不会被VMD在启动时自动载入。Linux下.vmdrc一般都是自行在用户主目录下创建。

在此我将我自己的初始化文件里的设置进行分享,其中额外添加的内容如下(放到原有内容后头即可)。下文的叙述是对撰文时最新版本VMD 1.9.3而言的。

mol default style {Lines 2.0}
display depthcue off
#color Display Background white
#axes location Off
display rendermode GLSL
display distance -8.0

proc bw {} {color Display Background white}
proc bb {} {color Display Background black}

user add key Right {animate next}
user add key Left {animate prev}
user add key Up {animate goto [expr $vmd_frame([molinfo top])+10]}
user add key Down {animate goto [expr $vmd_frame([molinfo top])-10]}
user add key b {mol bondsrecalc all; topo retypebonds}

proc bt {} {
global vmd_frame
trace variable vmd_frame([molinfo top]) w updatebond
}
proc updatebond {args} {
mol bondsrecalc all
topo retypebonds
}
proc bn {} {
global vmd_frame
trace vdelete vmd_frame([molinfo top]) w updatebond
}

proc fog {} {
display depthcue on
display cuemode Linear
display cuestart 1.75
display cueend 2.5
}

下面解释一下做这些设置有什么好处。

程序默认的显示方式是Lines,但是线的粗细太细,往往看不清楚,所以用mol default style {Lines 2.0}将默认的显示方式改为两倍粗细的Lines。

程序默认开着雾化,即让距离镜头越远的物体的颜色混入越多的背景色。这会导致在黑色背景下物体的颜色显得不够鲜艳,而在白色背景下物体又显得有点雾蒙蒙,因此用display depthcue off将雾化效果关掉。

#color Display Background white这行是被注释掉的。如果你想让VMD启动后默认就用白背景,就把#去掉。

#axes location Off这行也是被注释掉的,如果你想让VMD默认不显示坐标轴,就把#去掉。

VMD默认用称作Normal的Rendermode,但此时有些材质的显示效果很差,甚至Transparent材质根本没法正确显示出透明效果。因此通过display rendermode GLSL将默认的Rendermode设为效果好得多的GLSL。

有很多人肯定早已发现画面边缘的物体畸变得特别厉害,很难看。通过display distance -8.0语句可以充分避免。但导致一个问题就是原本在窗口左下方的坐标轴看不到了,需要坐标轴的时候可以选Display - Axes - Origin让坐标轴显示在窗口中央。

下面这两行是自定义命令。在VMD的文本窗口里输入bw(意为background white)就可以令背景立刻变为白的,输入bb就可以令背景立刻变为黑的,非常方便。
proc bw {} {color Display Background white}
proc bb {} {color Display Background black}


下面的内容是设置用户自定义快捷键。载入轨迹后,在图形窗口处于被激活的状态时(激活窗口就是鼠标点击这个窗口的意思),按左、右键就可以分别后退1帧、向前1帧,按上、下键就可以分别增加10帧、后退10帧。这使得观看轨迹方便很多。
user add key Right {animate next}
user add key Left {animate prev}
user add key Up {animate goto [expr $vmd_frame([molinfo top])+10]}
user add key Down {animate goto [expr $vmd_frame([molinfo top])-10]}


关于VMD判断原子间连接关系的问题我在《谈谈VMD可视化程序的连接关系的判断和设置问题》(http://sobereva.com/534)里有非常详细的说明。为了能很方便地让VMD对当前帧根据当前结构重新判断连接关系,增加了下面这句。图形窗口处于激活状态时按b键(意为bond)就能重新判断连接关系。
user add key b {mol bondsrecalc all; topo retypebonds}

如果想播放的时候实时自动更新连接关系,而不需要每次都按b键,靠以下语句可以实现。也就是定义了一个bt命令,如果在命令行窗口输入了bt,那么每当当前top体系的帧号发生了变化,就会调用updatebond命令自动来更新连接关系。这样做的代价就是对较大体系,每播放一帧都要根据距离重新判断连接关系,播放时会比较卡。
proc bt {} {
global vmd_frame
trace variable vmd_frame([molinfo top]) w updatebond
}
proc updatebond {args} {
mol bondsrecalc all
topo retypebonds
}


下面的内容定义bn命令。如果不想自动更新成键方式了,可以输入bn命令取消掉对帧号的跟踪即可。
proc bn {} {
global vmd_frame
trace vdelete vmd_frame([molinfo top]) w updatebond
}


雾化效果绝非毫无意义。只要恰当使用,就可以让近距离的物体完全不受影响,而让偏远的原子恰当地雾化,避免扰乱视觉、妨碍清楚地观看近距离的物体。下面的语句是自定义命令,只要在文本窗口输入fog,就可以打开雾化并且使用在我来看比较合适的雾化设置。如果觉得实际效果不好,需要进一步调节,可以用Display - Display Settings,修改里面的Cue Start和Cue End。
proc fog {} {
display depthcue on
display cuemode Linear
display cuestart 1.75
display cueend 2.5
}

评分 Rate

参与人数
Participants 17
eV +73 收起 理由
Reason
lunioneer + 4 赞!
kissw + 1 谢谢
石头砸鱼 + 4 谢谢
Lixiaolong + 3 好物!
Frozen-Penguin + 5 好物!
halouhapily + 4 好物!
TyDRfan + 5 赞!
LuLu-Chem + 4 赞!
丁越 + 5 赞!
verslalumiere + 4 233333
哇哇吐 + 5 谢谢
ezez + 5 赞!
exity + 5 好物!
leebo + 5 好物!
lijiayisjtu + 4 好物!
dazhong_jl + 5 赞!
liyuanhe211 + 5 好物!

查看全部评分 View all ratings

北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

82

帖子

0

威望

525

eV
积分
607

Level 4 (黑子)

傻傻的木瓜

43#
发表于 Post on 2024-11-13 13:38:24 | 只看该作者 Only view this author
能否在vmd.rc里写语句,使得每加载一个体系都同时默认产生VDW和HBonds两个显示方式?

今天的VMD-l邮件列表里正好有个解决方案,不过是谷歌的网站,为方便大家而转载如下。这里的关键技巧是利用tcl函数after idle把执行指令的时间推迟到其他事件(比如刚打开VMD时加载vmd.rc/.vmdrc或者刚载入新分子)执行完毕后。
Dr. Axel Kohlmeyer wrote in
VMD Init Script/Custom Actions at Molecule Load:

Occasionally people ask about having performing custom actions, like having a different visualization than the default, whenever a molecule is loaded. Now several defaults can be changed, but the following scheme goes far beyond that and allows adding multiple representations and performing other scripted actions. In order for this to work, we have to put a trace on the variable vmd_initialize_structure, but calling actions right away at that point would not work. We'll rather have to just schedule a call to a script whenever the main event handler is idle again. Here the procedure reset_viz does the work, but rather than calling it directly in the variable trace, we use a proxy function reset_viz_proxy that generates an after idle {} request to call reset_viz with the specific molecule id to operate on as argument. The final line makes sure that this is also applied to molecules loaded from the command line, i.e. which are initialized before the .vmdrc file is processed and thus before the variable trace is defined.
  1. proc reset_viz {molid} {
  2.   # operate only on existing molecules
  3.   if {[lsearch [molinfo list] $molid] >= 0} {
  4.     # delete all representations
  5.     set numrep [molinfo $molid get numreps]
  6.     for {set i 0} {$i < $numrep} {incr i} {
  7.       mol delrep $i $molid
  8.     }
  9.     # add new representations
  10.     mol color Name
  11.     mol representation VDW 0.3 15.0
  12.     mol selection all
  13.     mol material Opaque
  14.     mol addrep $molid
  15.     mol representation DynamicBonds 1.6 0.3 6.0
  16.     mol selection {name C}
  17.     mol addrep $molid
  18.     mol representation DynamicBonds 1.2 0.3 6.0
  19.     mol selection {name C H}
  20.     mol addrep $molid
  21.   }
  22. }
  23. proc reset_viz_proxy {args} {
  24.   foreach {fname molid rw} $args {}
  25.   eval "after idle {reset_viz $molid}"
  26. }
  27. ## hook up the function.
  28. trace variable vmd_initialize_structure w reset_viz_proxy
  29. # take care of molecule loaded at start.
  30. after idle { reset_viz 0 }
复制代码
√546=23.36664289109

5万

帖子

99

威望

5万

eV
积分
112492

管理员

公社社长

42#
 楼主 Author| 发表于 Post on 2024-10-31 15:56:58 | 只看该作者 Only view this author
Uus/pMeC6H4-/キ 发表于 2024-10-31 13:41
在设置VMD初始化时,遇到几个关于HBonds的小问题:

1.能否在vmd.rc里写语句,使得每加载一个体系都同时 ...

1 没办法

2 不行

3 利用molinfo查询当前的显示设置情况

4 O-H键长取不同的值算出来的不一样

评分 Rate

参与人数
Participants 1
eV +1 收起 理由
Reason
Uus/pMeC6H4-/キ + 1 谢谢

查看全部评分 View all ratings

北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

82

帖子

0

威望

525

eV
积分
607

Level 4 (黑子)

傻傻的木瓜

41#
发表于 Post on 2024-10-31 13:41:16 | 只看该作者 Only view this author
在设置VMD初始化时,遇到几个关于HBonds的小问题:

1.能否在vmd.rc里写语句,使得每加载一个体系都同时默认产生VDW和HBonds两个显示方式?mol default style只能设置一个显示方式及其参数,如果写了两行mol default style的话第二行会覆盖第一行的。

2.如果不行,能否修改文件,使得Graphical Representations窗口里点Create Rep再切换Drawing Method到HBonds时默认的阈值不是3.0埃和20°?

3.如果不行,还可在vmd.rc里自定义快捷键执行mol addrep top ; mol modstyle rep_number top HBonds 3.5 43.1 2,但此处显示方式的序号rep_number能否通过自定义变量的方式设置,免得查看Graphical Representations窗口?由于mol addrep top并不返回任何东西,像set x [mol addrep top] ; mol modstyle $x top HBonds 3.5 43.1 2这样写并不能管用。

4.上面3.5和43.1两个阈值是从分子动力学与GROMACS培训班的讲义里看到的,讲义介绍氢键D-H··A的统计时说:GROMACS的判据为氢键给体D与受体A之间距离要求小于3.5埃(对应于SPC水O-O rdf第一个极小点)、H-D键和D..A连线夹角小于30°;但VMD用的氢键键角判据为D-H··A的补角,GROMACS默认的键角判据30°对应VMD键角43.1°。但是这个43.1°是如何推导的?
若在一个O-H··O的氢键模型中用上述3.5埃和30°的数据,再取SPC刚性水O-H键长1.0000埃,则用余弦定理计算的H··O距离为d=sqrt(1^2+3.5^2-2*1*3.5*cos(30°))=2.681埃,D-H··A的钝角余弦为(1^2+2.681^2-3.5^2)/(2*1*2.681)=-0.7576,相应于139.3°,这样补角只有40.7°,比43.1°要严一点。
√546=23.36664289109

82

帖子

0

威望

525

eV
积分
607

Level 4 (黑子)

傻傻的木瓜

40#
发表于 Post on 2024-10-21 17:26:07 | 只看该作者 Only view this author
sobereva 发表于 2020-4-1 01:47:08
有很多人肯定早已发现画面边缘的物体畸变得特别厉害,很难看。通过display distance -8.0语句可以充分避免。但导致一个问题就是原本在窗口左下方的坐标轴看不到了,需要坐标轴的时候可以选Display - Axes - Origin让坐标轴显示在窗口中央。

最近刚发现透视视角下把坐标轴调回画面内显示的另一个方法,即设置display distance的同时适当调整display height,比如display distance -8.0搭配display height 13.0。

对窗口左下角显示坐标轴的情况,经过尝试感觉可以的(distance, height)的搭配包括(-7.0, 12.0), (-6.0, 10.8),(-5.0, 9.4),(-4.0, 8.0),(-2.5, 6.0)等,结合鼠标滚轮缩放把边缘显示畸变范围排除出视野。

正交视角下display distance不再影响画面,而display height仍能调节坐标轴(以及体系)显示的大小和位置。


√546=23.36664289109

7

帖子

0

威望

49

eV
积分
56

Level 2 能力者

39#
发表于 Post on 2024-3-22 16:22:19 | 只看该作者 Only view this author

好的老师,我决定把这些文字部分都直接p上去了

5万

帖子

99

威望

5万

eV
积分
112492

管理员

公社社长

38#
 楼主 Author| 发表于 Post on 2024-3-21 21:40:20 | 只看该作者 Only view this author
diyimin10234 发表于 2024-3-21 12:01
老师,给绘制出的结构加标尺的时候,它的字体及字号可以改吗?

应该不能
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

7

帖子

0

威望

49

eV
积分
56

Level 2 能力者

37#
发表于 Post on 2024-3-21 12:01:15 | 只看该作者 Only view this author
老师,给绘制出的结构加标尺的时候,它的字体及字号可以改吗?

5万

帖子

99

威望

5万

eV
积分
112492

管理员

公社社长

36#
 楼主 Author| 发表于 Post on 2023-11-26 02:23:39 | 只看该作者 Only view this author
bxc 发表于 2023-11-25 11:47
老师,这些可以直接在hotkeys.tcl里添加吗

这个文件专门定义快捷键的,快捷键的那些自定义命令可以加入这里
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

28

帖子

0

威望

163

eV
积分
191

Level 3 能力者

35#
发表于 Post on 2023-11-25 11:47:19 | 只看该作者 Only view this author
老师,这些可以直接在hotkeys.tcl里添加吗

1061

帖子

0

威望

3274

eV
积分
4335

Level 6 (一方通行)

34#
发表于 Post on 2023-4-4 11:48:46 | 只看该作者 Only view this author

5万

帖子

99

威望

5万

eV
积分
112492

管理员

公社社长

33#
 楼主 Author| 发表于 Post on 2023-4-4 06:10:09 | 只看该作者 Only view this author
乐平 发表于 2023-4-3 18:53
Sob 老师这句话需要更正

Linux 下安装 VMD 也是存在 .vmdrc 文件的。

改了
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

1061

帖子

0

威望

3274

eV
积分
4335

Level 6 (一方通行)

32#
发表于 Post on 2023-4-3 18:53:05 | 只看该作者 Only view this author
本帖最后由 乐平 于 2023-4-3 19:00 编辑

Sob 老师这句话需要更正
Linux下的.vmdrc文件是事先不存在的,一般都是在用户目录下自行创建。

Linux 下安装 VMD 也是存在 .vmdrc 文件的。

比如,如果是默认安装,那么可以在下面的路径里找到
  1. /usr/local/lib/vmd/.vmdrc
复制代码


如果自定了安装路径,比如指定 VMD 安装到  ~/tools/vmd 路径下,那么可以在下面的路径找到
  1. ~/tools/vmd/lib/vmd/.vmdrc
复制代码


21

帖子

0

威望

395

eV
积分
416

Level 3 能力者

31#
发表于 Post on 2023-2-6 13:35:24 | 只看该作者 Only view this author
太好啦,谢谢分享!

1379

帖子

0

威望

3992

eV
积分
5371

Level 6 (一方通行)

30#
发表于 Post on 2023-2-6 11:48:24 | 只看该作者 Only view this author
本帖最后由 牧生 于 2023-2-6 13:50 编辑

proc bb {} {color Display Background black}

这个命令可以将VMD的背景变成黑色,我将 black改成yellow,那么可以把背景色变成黄色。

那如果我要改成别的任意颜色,不是corlorID中的那32种颜色,比如浅灰色,或者浅蓝色,或者[191,166,166]这样的数值表示的颜色,我该怎么弄呢
又菜又爱玩

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-26 21:51 , Processed in 2.795265 second(s), 23 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list