计算化学公社
标题:
MOview.py:(相对)优雅地利用python可视化分子轨道等值面
[打印本页]
作者Author:
TretopL
时间:
yesterday 20:40
标题:
MOview.py:(相对)优雅地利用python可视化分子轨道等值面
本帖最后由 TretopL 于 2026-5-7 20:37 编辑
前言
众所周知,由于相关库的缺失,Multiwfn的重要功能之一——可视化轨道等值面(和其他GUI功能)在MacOS操作系统上不可用。目前,这个问题本人的解决方法是:先用Multiwfn导出cub,再用vmd(搭配vcube查看)。这个方法的好处是:可以直接看到高分辨率、较为美观的等值面。弊端是:每次观看等值面都需要等待Multiwfn导出cub,且观看等值面的同时不能便利地查看轨道能量/占据数。同时,导出的cub有时不能覆盖到感兴趣的轨道,一次导出太多耗时又太长,时常出现要返工导出的情况,消磨人类的耐心。
针对这一问题,我写了MOview.py,利用Python程序良好的多平台可移植性,实现在任何常用操作系统下(注,开发平台是MacOS,并未在其他平台测试过,如果其他平台有奇怪的bug,请您留言反馈)流畅、美观地预览轨道等值面的功能。目前支持直接读取fchk和molden中的波函数(单纯因为本人用这两个格式最多),后续或会更新更多支持格式。可视化界面的原子配色采用GaussView的配色(配色RGB取自
http://bbs.keinsci.com/thread-32074-1-1.html
)。
值得额外声明的是,本人完成程序初步构建后,发现程序运行效率过低,非常卡顿(本人代码水平属实一般Orz)。故使用 codex 调用 GPT-5.5 xhigh 模型对程序进行了效率优化和debug。优化后的程序可以做到在测试体系切换到新轨道等待时间小于1s,切换到已加载过的轨道基本无等待时间。最终版本的程序可视化结果与Multiwfn结果对比无肉眼可见差别,效果非常理想。
使用方法
运行依赖:Python(推荐3.12.x,其他版本本人未测试);pyqtgraph; PyQt6; PyOpenGL; scikit-image; numpy
conda create -n moview python=3.12
conda activate moview
pip install numpy scikit-image pyqtgraph PyQt6 PyOpenGL
程序开头有DEFAULT_PREFETCH_WORKERS变量,用于设置渲染并行数,1个核给2-3个并行数是比较合理的,默认的12对于大部分机器应该都可以接受。
使用方法:写好shebang,放入环境变量后直接 MOview.py xxx.fchk/xxx.molden;或者加载对应环境后,python MOview.py xxx.fchk/xxx.molden
常用选项:
--grid <56-81> : 设置渲染格点,默认最低56,越高越光滑,细节越多。本人测试后,认为grid=81基本上可以满足通常体系的美观度/细节需求且不卡顿。
--molden/--fchk : 手动指定文件类型,通常不需要,只有程序无法自动识别你的文件类型时需要手动指定。
--iso <number> : 默认为0,意思是自动设置isovalue,看分子轨道设置为0.05通常比较合理,视体系而定。通常不需要额外加这个选项,因为GUI界面有滑块可以看着图像调整isovalue。
常用快捷键:
A/D:切换前一个/后一个轨道(此操作同vcube)
方向键:旋转
C、然后点击某原子:切换旋转中心(此操作同vmd)
窗口介绍和效果展示(grid=81)
(, 下载次数 Times of downloads: 0)
上传 Uploaded
点击下载Click to download
(, 下载次数 Times of downloads: 0)
上传 Uploaded
点击下载Click to download
左侧:功能区,从上往下分别是
程序名/文件名/fchk的title
载入新分子(Open file)/渲染当前轨道(Render,一般自动进行,只在切换alpha/beta的时候需要点一下)
Spin:选择自旋(对于包含alpha/beta两套轨道的情况);Grid:格点数,建议最低56。81视觉效果已经很平滑,不建议用这个框调,建议直接启动时--grid指定
Margin:指定网格余量,防止等值面因为离分子太远而被截断,一般来说4.0是足够的,太大影响性能,不建议调
Isovalue:调节等值面数值,可以用滑块,也可以直接输入数字
Compare:输入轨道序号,可以在右侧同时显示这些轨道(实验功能),Synchronized复选框用于规定选中的这些轨道是否同步旋转(如果先勾选,再取消勾选,再勾选,会把所有轨道的视角调整为与第一个相同,效果如图2)
Corner axes复选框:是否显示右下角坐标系
轨道列表:双击可以切换到指定轨道,注意,与Multiwfn相同,如果读的是自然轨道,则Energy一列显示的是自然占据数NOON
右侧:轨道视图(可以鼠标拖拽旋转)
与VMD渲染效果对比:
(, 下载次数 Times of downloads: 0)
上传 Uploaded
点击下载Click to download
To do list(后续可能在本帖更新):
1. 显示原子序号和元素名
2. 支持储存视角
3. 支持导出预览图
4. 支持读cub画图(大概率不会做,因为都有cub了不如去用vmd)
5. 跨分子对比轨道(比如对比两个分子的HOMO)
6. 支持更多自定义效果(比如进入程序默认加载某个视角,或者修改原子颜色。当然,这些其实在代码里可以直接修改达成效果,比如ELEMENT_SYMBOLS这个列表定义了元素符号,ELEMENT_COLORS这个列表给元素符号定义了RGB,格式同vmd,是百分比形式的RGB,可以在这修改颜色。)
7. 支持更多格式
文件已附上,欢迎各位老师同学试用。
(, 下载次数 Times of downloads: 7)
上传 Uploaded
点击下载Click to download
欢迎光临 计算化学公社 (http://bbs.keinsci.com/)
Powered by Discuz! X3.3