计算化学公社

标题: 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=81)
(, 下载次数 Times of downloads: 0) (, 下载次数 Times of downloads: 0) 左侧:功能区,从上往下分别是
右侧:轨道视图(可以鼠标拖拽旋转)

与VMD渲染效果对比:
(, 下载次数 Times of downloads: 0)
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)










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