计算化学公社

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

[建模与可视化] MOview.py:(相对)优雅地利用python可视化分子轨道等值面

[复制链接 Copy URL]

17

帖子

0

威望

925

eV
积分
942

Level 4 (黑子)

本帖最后由 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)
左侧:功能区,从上往下分别是
  • 程序名/文件名/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渲染效果对比:

To do list(后续可能在本帖更新):
1. 显示原子序号和元素名
2. 支持储存视角
3. 支持导出预览图
4. 支持读cub画图(大概率不会做,因为都有cub了不如去用vmd)
5. 跨分子对比轨道(比如对比两个分子的HOMO)
6. 支持更多自定义效果(比如进入程序默认加载某个视角,或者修改原子颜色。当然,这些其实在代码里可以直接修改达成效果,比如ELEMENT_SYMBOLS这个列表定义了元素符号,ELEMENT_COLORS这个列表给元素符号定义了RGB,格式同vmd,是百分比形式的RGB,可以在这修改颜色。)
7. 支持更多格式

文件已附上,欢迎各位老师同学试用。
moview.py (144.3 KB, 下载次数 Times of downloads: 7)





评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
wal + 5

查看全部评分 View all ratings

本版积分规则 Credits rule

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

GMT+8, 2026-5-8 00:43 , Processed in 0.201451 second(s), 25 queries , Gzip On.

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