|
本帖最后由 ggdh 于 2021-1-10 11:44 编辑
O、前言和更新
鸽了很久了。但是迟到总比没有好。。。
和6年前的vmwfn相比,编程语言,操作方式,运行逻辑都有大的变化,不变的是偷懒的初心,以及对漂亮图片的肤浅追求。
这版本采用了模块化的设计,目前基本完工的有4个模块,分别是产生cube (MCubeGen),渲染cube (vcube),图片组合(MFigComp),以及产生表格(tmwfn) 4个部分。
这4个模块被设计为可以独立运行(但是相互之间可以提供便利)
这里我先介绍这个渲染cube的模块: vcube,它是纯tcl语言写的,在vmd中运行,没有调用Multiwfn,不过它所需要的各种cub文件都可以用Multiwfn产生。
(本贴施工中,我会把todo list放在这里,以及如果有版本更新,会把更新内容放在这里)
todo list:
视频教程(轨道图,空穴电子图,静电势图的制作)没耐心看图文的兄弟可以等两天看视频
视频教程(创建自定义的style文件)
欢迎试用,有建议一定要提,有bug一定要报告。。。可以在公社1群@我,也可以加我QQ 32589927提要求
MCubeGen 已经发布,在这里:调用Multiwfn批量产生cube的脚本MCubeGen 1.0
2.0版新特性(第一次使用的同学请从后面的正文开始看):
a) 添加命令vmol,批量读取分子结构
使用过程中发现。有时候仅仅需要读取分子结构,并不需要cube信息。所以添加了这样一个命令,它可以批量读取vmd所支持的所有的结构文件。用法如下:
这个命令的意思就是读取所有的cub文件以及所有的PDB文件。
b) 添加命令vrename,批量修改分子的名称
vmd中分子名称默认是读取的cub文件名,它可以影响到最后输出图片的这样一个文件名。 它也可以影响到分组的情况。用法如下:
这个命令的意思是,把所有的分子的文件名当中的_oH改_HOMO。另外这个命令支持正则表达式,不过需要把正则表达式放在大括号里面比如:
- vrename {^} confer1_ 0 1 2
复制代码 这个命令的意思是,在0 1 2 号分子文件名之前,加上这样一个confer1_的这样一个前缀。
c) 添加命令vrenders,渲染当前场景
这个命令和 vrender很像。但是他只是渲染当前的场景。这里的s的意思是scene。用法如下
把当前场景放大3倍,渲染到current.bmp 文件当中,如果多次使用此命令,则会覆盖之前的current.bmp
把当前场景放大3倍,渲染到orbital01.bmp 文件当中。
d) vrender 命令添加给文件名加后缀选项
有时候我们需要对同一个分子去渲染它不同的角度。但是如果你旋转新角度之后再去渲染的话,那么就会把之前渲染好的那些图片给覆盖掉。vrender加了一个选项,给文件名加后缀,避免覆盖,用法如下:
这样渲染文件,所有的文件名之后,都会跟上一个_topview这样一个后缀。然后我把所有的分子都旋转一下。然后再输下面的命令。
- vrender _sideview 4 0 1 2
复制代码 这个命令的意思是,对于0 1 2号分子,我用4倍放大的方法去渲染,然后产生的文件名,后面跟上一个_sideview这样一个后缀。
e) 支持对TachyonLOSPRAY的支持
window版带OSPRAY的见这里,官网上也有,但是据说bug很多。
这个渲染器和TachyonLOpix类似,都是非常的快,但是默认的风格没有针对他们优化过,这个渲染器不需要显卡,但是需要Intel的cpu。
启动vmd的时候,它会检测当前的vmd是否支持这样的渲染器,如果支持的话,它会提示:
TachyonLOSPRAYInternal is available. Turn it on by input "set ospray 1"
那么你需要输入
开启这个渲染器,如果把1改成0就是关闭该渲染器。
f)vgroup增加分组方法:
比如四个文件:mol1_S1_oH, mol2_S1_oH,mol1_S2_oH, mol2_S2_oH,如果用vgroup _ 命令,它会根据_把文件名分为3份,然后根据前2份去分组,这样这4个文件会被分为4组,如果我只想根据第一份去分组,那么需要输入vgroup {_ 0} 这里的_ 是指定分隔符,0就是指先产生0-0和剩余的部分(1-2),然后根据0-0,也就是第一份分组,这文件会被分为mol1 mol2两组,如果我只想根据最后一份去分组,那么需要输入vgroup {_ -1} -1就是指先产生0-1的部分和剩余的部分(2),然后根据剩余的部分分组。这时候文件只有oH这一组。
后续开发计划:
2.5版:支持原子label,以及measurement label
3.0版:重构style,style模块化,支持多style对不同分子分别使用
1.3版新特性(第一次使用的同学请从后面的正文开始看):
a) 支持在Windows下调好之后在Linux下渲染
如果图片多并且用的是配置比较低的笔记本电脑,或者是用了带AO效果的风格,那么渲染速度就会很慢。这时候可以把在windows下产生好的输入文件传到linux上去做渲染,步骤如下:
在window下正常操作,最后输入vrender之后程序会问你是否进行渲染,这时候输入n,回车之后,会弹出一个包含所有tachyon的输入文件的文件夹VCUBE。
该文件夹下包含dat文件:tachyon的输入文件,bat文件:windows下批量渲染的批处理文件,以及sh文件:linux下批处理的渲染文件。
将VCUBE文件夹拷贝到linux服务器上,确保服务器上装好vmd,并且vmd命令在PATH变量中。
cd到该文件VCUBE文件夹下,输入下面的命令进行渲染:
或者是输入下面的命令指定24核渲染(如果不指定,默认好像使用大线程数)
b) 用vtachyopt 命令修改tachyon的参数
tachyon有两个参数对渲染之后的效果影响非常大。分别是-trans_raster3d 和-shadow_filter_off,前者使得透明对象发亮,产生晶莹剔透的效果(默认关闭),后者关闭透明对象的投影使得画面更干净(默认开启)
vcube内置的一些风格中对这两个参数都有特定的设置,直接输入vtachyopt命令可以查看当前设置的参数。
而在实际情况下,可能需要修改这些参数,比如,如果需要把surface的透明度调高,alpha调到0.5,这时必须关掉-trans_raster3d,否则surface会太亮以至于失去细节,这时候应该输入下面的命令。这里没有设置-trans_raster3d就意味着这个选项使用默认值,也就是-trans_orig。
- vtachyopt "-shadow_filter_off"
复制代码 对于复杂的分子,可能希望画面干净一点,不想要那么多阴影,这时候可以输入:
- vtachyopt "-shadow_filter_off -trans_raster3d"
复制代码 来关闭透明对象投影,同时保留高亮透明效果。
对于比较简单分子,想让阴影丰富,但是又想设置高透明度的surface,可以输入下面的命令:
这里的参数是一个空格,其实就是空参数,这就是让着两个选项都用默认值。
1.2版新特性(第一次使用的同学请从后面的正文开始看):
a)支持Linux操作系统
- 巨型cube,Linux是64位的,而windos版只有32位的,因此如果cube文件特别大,比如所有cube加起来大小超过3G的话,windows下就会报错。
- 远程连接和纯文本模式,如果是远程连接Linux,推荐使用xmanager连接,否则无法显示图形界面,另外实在没有图形界面,也可以输入
来使用纯文本模式启动vmd,这种情况下无法调整分子的角度,使用快捷键,但是vcube自带的函数都能使用,也可以渲染产生图片。
- TachyonLOptiXInternal,如果Linux有cuda和不错的显卡,并且vmd装的是cuda,optix版本。那么可以使用TachyonLOptiXInternal进行超高速渲染,对于制作动画,或者加AO效果的大图片渲染用这个方式渲染将会大大减少时间(关于这个渲染方法可以参考http://bbs.keinsci.com/thread-12382-1-1.html)。启动vmd后,如果脚本检测出有TachyonLOptiXInternal这个方法,会给出提示:
TachyonLOptiXInternal is available. Turn it on by input "set optix 1"
这时候用户可以输入来启动OptiX渲染器,之后按v预览,以及vrender命令都会使用OptiX的方法渲染。
不过这种方法由于无法使用Tachyon的选项,比如”-trans_raster3d -shadow_filter_off“导致最终的图片效果和用Tachyon渲染出的不同。所以真要长期用这个渲染器渲染的话,可能需要优化一下styles(目前的styles是针对Tachyon优化的) - 自定义图片预览程序,Linux下脚本默认使用eog或者gwenview来预览图片,如果你安装了别的看图软件,可以通过来指定看图软件的启动命令
b)支持任意编组
1.1版本中vgroup命令只能基于文件名和分隔符号进行分组,比如mol1_hole.cube, mol1_ele.cube, mol2_hole.cube, mol2_ele.cube这四个文件,我把分隔符号设为"_"(输入vgroup _),那么mol1开头的两个文件会被分为一组,mol2开头的两个文件分为一组。
在1.2 中可以输入
这种情况下0,2,5号分子被分为一组,1,3,4号分子被分为一组。
c)支持自定义脚本
有时候可能需要对所有的分子做一些操作,比如通常是增加一个represention来用不同的风格显示分子不同的部分。
用户可以自己编写一个vmd脚本,对TOP分子进行操作。将该脚本命名为xxx.tcl 或者xxx.vmd
然后将该脚本放在当前目录下,或者styles目录下,或者scripts目录下(需要在vmdrc中设置scripts目录的路径,如果没有设置,那么scripts的路径会被设为styles的路径)
输入命令:
可以查看所有以vmd或者tcl为后缀的文件。
输入命令
可以将用户编写的脚本应用到每一个分子上。
d)支持自定义渲染核数
默认是使用最大物理核心数-2,去渲染图片。可以使用
去指定使用8核渲染图片。注意这个参数在用TachyonLOptiXInternal渲染的时候无效。
另外输入vrender之后,问你是否确定渲染的时候,会提示当前的核心数和图片分辨率如下:
nproc:42, resolution:2016 2544. Render Now?(Y/n)
一、脚本特性
- 多个cube文件批量渲染
- 支持单值cub (电子密度,LOL,ELF), 双值cub(各种轨道图), mapped cube(静电势图,RDG), 以及多cub同时作图(空穴电子图)
- 用快捷键实现快速预览,切换style,调节iso,color range,alpha
- cub文件编组,同一组内的分子可以一起移动,或者是同时显示
- 漂亮的多种内置风格,便捷的style管理,方便创建自定义风格
二、安装方法
1. 安装vmd(win10系统)
2. 下载附件中的压缩包vcube.rar,解压到某个不含空格和中文的目录,比如D:/vmwfn, 此时该文件夹下应该有vcube.tcl文件和styles文件夹
3. 在vmd的安装目录下(windows下的默认是C:\Program Files (x86)\University of Illinois\VMD\)找到vmd.rc文件, 用写字板打开编辑(此处需要管理员权限,建议安装Notepad++, 可以自动切换到管理员权限,在其中加入下面两行:
- source {D:\vmwfn\vcube.tcl}
- set style_dir {D:\vmwfn\styles}
复制代码
4. 启动vmd,然后在命令行窗口中看到类似如下的语句,则说明已经成功加载了vcube
5. 把vmd.exe加入到windows的环境变量中,这步非必须,但强烈推荐,能提供较大的方便。不知道怎么设置windows环境变量的请参考你应该知道的 Windows 环境变量
6. 安装irfanview,并关联bmp图片格式(非必需,但推荐,你用其他快捷的看图软件也行)
7. 安装WSL(非必需,但能提供方便)
三、快速上手教程
运行本程序需要用到命令行输入,快捷键操作,以及鼠标操作,这里以示例文件(附件MCUBEG.zip中的orb文件夹中的几个轨道cub文件)为例讲解操作流程如下
1. 准备好需要渲染的cub文件
2. (非必需步骤) 修改cub文件名为 分子代号_cub类型.cub 风格的名字,比如示例文件中的pyrrole_oL.cub表示吡咯分子的LUMO轨道,这样命名的目的是使得vcube脚本能进行分组,使得同一分子的不同cub能分到同一组,而分组的目的是使得同一组内的分子取向保持一致,或者是同时显示同一组内所有的cube文件,用MCubeGen脚本产生的cube会自动完成这种风格的命名,而这种风格的命名后续用MFigComp合并的时候还会用到。
3. 在含有cub文件的文件夹下按下shift+右键,在弹出菜单中点击“在此处打开Powershell 窗口”,如果装了WSL也可以点击“在此处打开Linux shell”
4. 在弹出的窗口中输入vmd.exe启动vmd,如果安装第5步的环境变量没有设好,这里就需要输入vmd.exe的完整路径。
5. 等待vmd加载完成后,输入下面命令载入所有cube文件。
6. vmd的图形窗口中会显示所有的轨道,这时候可以使用鼠标滚轮进行缩放,以及进行粗略的调整,使得窗口空白不要太多,分子也不要超过窗口
7. 选中vmd的图形窗口,切换到英文输入法,此时可以:
- 按键盘上的a d 切换单独显示前一个或者后一个分子(此时注意观察VMD主窗口中的文件列表中的变化)
- 切换一个分子后,可以用鼠标调整它合适的方向
- 按键盘上的q 和 e 来增大或者减小iso(此时注意观察VMD命令窗口中的iso值的变化)
- 用PgUp PgDn切换不同的style(此时注意观察VMD命令窗口中当前使用的风格文件,以及所有可用的风格文件)
- 由于VMD窗口中显示的分子和实际渲染效果差异较大,按下键盘上的v来进行快速渲染,并预览实际渲染效果(此处对硬件配置有一定的要求)
- 确定所有的分子都摆好pose以后,在命令行输入下面命令进行渲染,这时脚本会问你是否立即渲染,这时候直接按回车就会弹出一个窗口,里面显示渲染进度。
8. 渲染完成后,在cub文件的所在目录下会有一个VCUBE文件夹,渲染好的图片文件就在其中。
PS1. 关于分组,按a d来选择分子的时候,是保持了同组分子的联动,在本例当中,同一分子的HOMO,LUMO被分在了一组,所以观察并旋转HOMO的时候,LUMO也在被同步旋转,这样做的目的是为了使得HOMO LUMO图当中的分子取向一样。如果你想单独调节HOMO和LUMO的角度,用w s来选择分子。
PS2. 关于同时显示多个cube,按g在三种状态之间切换:a.显示单个分子,b.显示同一组内所有分子,c.显示所有的分子。
PS3. 关于VMD图形窗口无响应,如果你不小心在VMD命令窗口中输入了字符,这时候你会发现VMD的图形窗口卡死动不了了,这时候你只需要在VMD命令窗口中按下回车,然后在切换回VMD图形窗口就好了。
PS4. 关于透明度,可以用Home End 快捷键快速调整isosurface的透明度,但是注意修改透明度可能对最终的渲染效果产生意想不到的影响,需要及时按v渲染看效果。
PS5. 关于渲染分辨率,目前的默认渲染分辨是桌面窗口大小的3倍,由于打印分辨率通常是桌面分辨率的3倍左右,因此屏幕上显示的分子大小就会约等于本脚本产生的图片打印出来的大小。因此这里不建议在桌面上把分子的显示窗口调得很大,这样不仅会降低预览时的渲染速度,而且最终会产生过大的没有必要的高分辨率图片。
四、绘制静电势图
静电势图是把静电势的cube文件 map 到电子密度的cube之上获得的,在示例文件中也准备了一个esp文件夹里面有用来绘制静电势的cub文件,其中xxx_den.cub就是电子密度的cub,xxx_esp.cub就是静电势的cub文件,这里的操作和上面基本一样,只是在第5步载入cub时略有不同
- vcube *_den.cub map *_esp.cub
复制代码 这里加了一个map关键词,表示把该关键词后的cub按照一一对应的关系map到前面的cub上去,对于静电势图目前内置的风格较少,只有sob提供的两种。
此外,可以用快捷键Insert Delete快速切换不同的颜色标尺,用左上 右下按键分别对标尺的最小值 最大值进行快速调节。
如果需要显示Color scale bar,请按下面步骤操作:
1,先把所有的mapped cube调好
2,用常规的方法制作好一个Color scale bar。
3,在VMD的主窗口中找到改Color scale bar 对应的molid,也就是最左边的编号。
4,假设上一步找到的编号是8,在命令行中输入vshowalways 8,使得该bar始终显示
5,再浏览一遍所有的cube,确保他们和Color scale bar的相对位置正确,然后输入vrender渲染全部。
五、迷你手册
在vmd命令窗口中输入
可以看帮助,这里面显示了所有的可用命令和快捷键,在vmd命令窗口中输入
可以查看某个具体的命令(这里是viso)的具体用法。vcube自带的所有命令都是以v开头的,方便和vmd中别的命令区别。
六、内置风格预览
作为钢铁直男,本人的审美也就那样,不过还是尽力搞了几套风格不同的内置style,希望能起到抛砖引玉的作用。
sob艺术级:这个是vcube的默认风格,大家应该都熟悉把,没错,这就是我抄袭的用VMD绘制艺术级轨道等值面图的方法(含演示视频)
环境光遮蔽:这两个是我之前用环境光遮蔽技术弄的风格,有独特的质感,不过渲染起来慢的一笔,非土豪电脑一定要慎重使用这种风格。
白色:这4种风格都是某种颜色和白色的搭配,但是材质各不相同,用白色的好处首先就是对色盲和黑白打印友好,其次就是颜色数量少,不容易让人产生“太花了”的感觉,所以很多内置style都使用了白色
莫兰迪:就是低饱和度颜色,又叫“性冷淡高级灰”,当你受够了滚滚红尘,灯红酒绿,也许这种配色能让你找回内心的宁静。。。。。。好了不开玩笑,如果你需要要在一张图片上显示很多轨道的话,如果颜色饱和度过高,会容易辣眼睛,使得审稿人内心产生莫名烦躁从而拒稿,而这种低饱和度配色,更容易让审稿人内心平静,从而在冷静的情况下发现文章的漏洞拒稿。。。
七、创建自定义风格
审美都是主观的,如果想尝试自定义风格,也非常容易,下面是步骤:
1. 找到styles文件夹(不知道在哪里的请跳转到第二部分)
2. 复制一个stl文件(普通cube),或者mtl文件(map cube),然后重命名一个英文名字,这个文件名也就是这个style的名字
3. 打开vmd,载入一个cube文件,先切换到一个和你理想相近的style,然后在VMD中调节各种参数,这里记得按v查看实际渲染后效果,记得准备好眼药水。
4. 根据下图,把你修改的参数填入第二步你复制的stl文件中(图中的红框就是可以改的参数)
5. 分享你独特的style,在茫茫人海中寻找知音。
|
评分 Rate
-
查看全部评分 View all ratings
|