计算化学公社

 找回密码 Forget password
 注册 Register
Views: 18060|回复 Reply: 16

[辅助/分析程序] 使用PyVibMS可视化分子和固体中的振动模式

[复制链接 Copy URL]

287

帖子

8

威望

1664

eV
积分
2111

Level 5 (御坂)

发表于 Post on 2021-4-28 09:47:40 | 显示全部楼层 Show all |阅读模式 Reading model
本帖最后由 smutao 于 2022-1-31 06:45 编辑

相关帖文:
I. PyVibMS现已支持ORCA/xtb/Q-Chem输出 http://bbs.keinsci.com/thread-22955-1-1.html
II. 使用UniMoVib+PyVibMS显示其他量化程序振动分析结果 http://bbs.keinsci.com/thread-22975-1-1.html


1. 前言

在日常的计算化学研究中,我们经常需要将计算得到的 分子 或者 固体/晶体 体系简谐振动通过动画的方式直观地呈现
在屏幕上,从而可以清楚地知道在某个特定的振动模式下是哪些原子在运动。一方面,这种振动的可视化可以在实验测量
得到了振动光谱(红外、拉曼)的情况下帮助我们借助理论计算对振动谱图进行指认;另一方面,在反应机理研究的过渡态
计算中,通过对虚频振动的观察,我们可以很快知道计算得到的过渡态结构是否能把反应物、产物的结构串起来。

以最常用的量化计算程序高斯为例,与之配套使用的GaussView软件可以很轻松地对振动分析 (freq) 计算结果进行可视化。
类似地,Q-Chem也有一个配套的IQmol程序(免费、开源)可以呈现Q-Chem的振动分析结果。此外,一些第三方的程序
如Avogadro、MOLDEN等 也可以对高斯程序的振动分析结果进行可视化。社长sob老师曾经写过一个可以将ORCA的振动分析
结果转换为高斯输出格式的工具(http://sobereva.com/498)以及一个可以在VMD程序中显示振动模式静态矢量的工具(http://sobereva.com/567).

以上是分子体系计算的情况,然而对于固体/晶体来说,能够显示振动模式的程序要少得多。笔者唯一用过的是与CRYSTAL程序
配套使用的一个网页插件(http://crysplot.crystalsolutions ... ves3/vibration.html). 这个网页插件是CRYSPLOT套件的
一部分,使用时需要将CRYSTAL程序计算好的振动分析结果文件先上传到服务器,然后才能得到结果。因此这种方法是需要上网才
可以操作,非常不便。

综合上面的多种原因,笔者构思开发了一款基于PyMOL程序的可以跨平台使用、适配多种量子化学、第一性原理计算程序的辅助插件
PyVibMS. 这块插件免费、开源,下载后可以在本地任意操作平台(Win, Linux和Mac)上使用。目前这款插件的源码在GitHub上托管
(https://github.com/smutao/PyVibMS).

2. 使用前准备
2.1 PyMOL程序的安装

由于PyVibMS需要依赖PyMOL程序才能使用,在还没有安装PyMOL的情况下,我们需要先安装PyMOL.

PyMOL是一款分子可视化程序,其强项在于对生物大分子进行可视化。与之相关的VMD,是另一款比较流行
分子可视化软件。

和其他计算化学程序不同的是,PyMOL以两种方式发行,一为通过薛定谔公司发布的商业版,二为由
社区发布的开源版。两个版本对于普通用户来说没有特别大的区别,而且在版本上是同步更新的。
商业版的使用需要申请或者购买授权证书,假如没有有效证书的话,商业版PyMOL的还可以打开继续使用,
但一些高级功能(如渲染出图)会受到影响。此外,商业版PyMOL的教育(edu)证书只能用于授课教学,
不能用于科学研究和文章发表。因此,为了避免不必要的麻烦,笔者推荐使用开源版PyMOL.

PyVibMS插件对商业版和开源版的PyMOL都适用.

下面是各个操作系统下PyMOL的安装方法
A)商业版
前往 https://pymol.org/2/ 下载适合你的PyMOL安装包,Windows和Mac系统下都很好操作,说一下Linux的情况.
将PyMOL安装包下载到Linux之后,需要先解压。然后打开一个终端窗口,进入解压后得到的pymol文件夹,输入
  1. chmod +x pymol
  2. ./pymol
复制代码
就可以开启PyMOL程序了。

如果已经获取了有效的证书,可以在这一步导入证书文件。

B)开源版
B.1) 在Windows下
加州大学尔湾分校的研究人员在他们的网站上(https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymol)定期发布
预编译的PyMOL程序,安装步骤如下:
1) 前往上述网站下载两个文件 pymol-2.5.0a0-cp38-cp38-win_amd64.whl 和 pymol_launcher-2.1-cp38-cp38-win_amd64.whl 到
本地文件夹 (如C:\Downloads)
2) 如果系统下没有安装Anaconda环境, 需要先前往 https://www.anaconda.com/products/individual 下载安装64位的Anaconda环境
3) 在开始菜单中找到并打开Anaconda Prompt 输入
  1. conda create -n pymol python=3.8
  2. conda activate pymol
复制代码
此时我们创建了一个名为pymol的python3.8环境,并激活了该环境,接着我们输入
  1. conda install -c anaconda pip
  2. conda install -c anaconda numpy
  3. conda install -c conda-forge pmw
复制代码
来安装相关的python库,接着我们进入刚刚下载的两个文件所在的文件夹(如C:\Downloads)
  1. cd C:\Downloads
复制代码
然后接着输入下面一行安装指令即可
  1. pip install --no-index --find-links="%CD%"  pymol_launcher-2.1-cp38-cp38-win_amd64.whl
复制代码
这个时候PyMOL开源版本就已经安装好了,输入下面的指令即可运行
  1. pymol
复制代码
假如这个Anaconda prompt的窗口关闭了,需要再次使用pymol的时候,则需要先加载pymol的环境然后运行pymol
  1. conda activate pymol
  2. pymol
复制代码


B.2) 在Linux下
在Linux的不同发行版中,我们可以利用系统自带的包管理工具一键安装开源版的PyMOL,非常方便。
比如在ubuntu中,我们可以使用
  1. sudo apt-get install pymol
复制代码
在centos中,可以使用
  1. sudo yum --enablerepo=epel install pymol
复制代码

其他的发行版可以参见 https://pymolwiki.org/index.php/Linux_Install

B.3)在Mac下
需要先安装MacPorts环境,见 https://www.macports.org/install.php
安装完毕后打开终端,输入
  1. sudo port install pymol
复制代码
即可一键安装。

2.2 PyVibMS插件的安装
在安装好PyMOL程序后,我们需要将本文介绍的插件安装妥当。首先我们前往 https://github.com/smutao/PyVibMS/
然后点击 Code->Download Zip 这样就把整个插件代码以压缩文件的形式下载至本地了。我们把这个压缩包解压,得到
一个名为PyVibMS-master的文件夹。接着我们打开PyMOL程序,点击菜单Plugin->Plugin Manager 在弹出的窗口中找到
Install New Plugin 标签页,接着点击 Choose file 然后载入 PyVibMS-master/src/__init__.py文件。在点击了一系列确定后,
PyVibMS插件便已经安装好了,也可以在PyMOL的Plugin菜单下找到。
plug.png


3. 使用PyVibMS
在一个干净的PyMOL窗口(如果此时PyMOL已经加载了分子,请先在PyMOL>这一栏输入 reinitialize 命令重新初始化PyMOL程序),点击Plugin->PyVibMS 即可打开本插件
w1.png

具体的使用方式请见下一节的实例。

使用完成后,请点击PyVibMS窗口的Close按钮。

4. 使用实例
4.1 高斯计算乙烯分子的振动分析、渲染出图 以及 动画导出
在打开PyVibMS插件窗口后,点击Input File这一行中 三个点(...)的按钮,然后选定 PyVibMS-master/examples/Gaussian/ethene/g16_ethene.log
文件,将文件类型调整为Log File (*.log)后载入。接着,回到PyVibMS界面后,将文件类型XYZ调成Gaussian 09/16. 因为这个高斯的输出文件内
包含振动分析的信息,我们勾选 Has Vib. Info. 然后点Load按钮。此时,PyMOL的显示界面会出现乙烯分子,而PyVibMS的表格区域则列出了乙烯
分子的12个振动模式对应的编号、频率(单位为波数cm-1)和对称性。表格的最后一栏为注释,可以任意添加笔记。

当鼠标选定表格中的一个振动模式后,可以点击 Start Animation 则可以显示该振动的动画。下方有两个拉杆,一个可以调节动画的播放速度,另一个
则可以调整动画中振动的幅度。当勾选了Displacement Vectors后,PyMOL的显示界面则会显示振动模式的矢量箭头,对应的拉杆可以调节矢量箭头
的长短。如果你希望矢量箭头以相反方向出现,则需要多次勾选 Displacement Vectors,有50%的几率会反转矢量箭头方向。

当我们需要制作高质量的图像时,可以点击 File->Export Image As->PNG, 然后在新弹出的窗口的下拉菜单中,选定ray trace with transparent background
这么一来,保存得到的高质量PNG图片将是透明背景的。除了这种方法之外,也可以在PyMOL>一栏使用 ray 命令在PyMOL显示窗口中先看到渲染效果,如果
满意的话再点击 File->Export Image As->PNG 并选择 capture current display 来保存图片。(需要注意:没有有效证书的商业版PyMOL会在渲染时加上水印。)

除了在电脑上对振动模式的动画进行显示之外,我们经常需要在做报告的时候将振动的动画呈现在幻灯片里面。下面分别针对商业版和开源版的PyMOL
介绍两种将振动动画导出成GIF动画图片的方法.

商业版:
在PyVibMS的表格中选定一个振动模式后,我们点击PyMOL的 File->Export Movie As->MPEG, 在弹出的新窗口中,我们把Rendering选为Ray(slow), 将
Encoder选为convert,下方选定GIF 然后导出即可。

开源版:
在PyVibMS的表格中选定一个振动模式后,我们点击PyMOL的 File->Export Movie As->PNG Images, 在弹出的新窗口中,我们把Rendering选为Ray(slow),
然后在导出时,新建一个空的文件夹并选为导出目的地,输入的文件名将作为导出的PNG图片的前缀。比如笔者输入eth作为导出文件名,那么在那个新文件夹
中,我们会得到eth0001.png ... eth0024.png 这24个图片文件。下一步则是将这24个图片文件串联起来转换成GIF动画文件。

我们前往 https://ezgif.com/maker 然后将刚刚导出的24个图片文件上传到该网站,点击 Upload and make a GIF上传。接着这个网页会把24个图片都罗列出来,
我们可以调整动画的播放速度,笔者觉得把延迟时间设为1比较合适。
w2.png
按照上图设置好之后,点击 Make a GIF即可制作,完毕后点击下方的save则可以将GIF动画下载到本地。下面是最终的效果图
gif-test.gif
如果需要提高动画的显示质量(比如减少毛刺),则可以在PyMOL导出成GIF或者PNG的时候增大图片的宽度和高度来提高分辨率。

4.2 VASP计算单晶硅的振动分析
在对VASP计算的振动分析进行可视化之前,我们需要振动计算后得到的OUTCAR和CONTCAR文件 (见PyVibMS-master/examples/VASP/original-data)。
前者包含了体系内原子的笛卡尔坐标、振动模式矢量信息,后者则包含了PBC盒子的信息以及体系的元素组成。然后我们把OUTCAR文件
复制一份出来并给它一个.out的后缀,接着将CONTCAR的内容插入到这个.out文件的第一行(见PyVibMS-master/examples/VASP/Si_OUTCAR.out)。

在打开PyVibMS插件窗口后,点击Input File这一行中 三个点(...)的按钮,然后选定 PyVibMS-master/examples/VASP/Si_OUTCAR.out文件,
将文件类型调整为Output File (*.out)后载入。接着,回到PyVibMS界面后,将文件类型XYZ调成VASP 5.x. 因为这个VASP输出文件既包含了PBC盒子的信息,
又包含了振动模式的信息,我们勾选 Has PBC 和 Has Vib. Info.,然后点击Load载入。

此时我们可以看到PyMOL的显示界面出现了两个相连的硅原子,这是单晶硅原胞内的原子。在PyVibMS窗口中,Lattice Vectors部分已经被自动填充了,这部分
设置的是PBC盒子的晶格矢量信息。在表格部分,出现了一共6个振动模式,前三个为真实的振动模式,后三个频率为0的模式对应了平移运动、并非单晶硅的真实
振动。

为了更好的理解单晶硅的振动,我们需要把原胞或者超胞显示出来。点击 Unit/Primitive Cell 按钮后,在PyMOL界面会出现一个六面体的框架,这个就是PBC的盒子。
如果想知道这两个硅原子和其他硅原子的相对运动,可以点击 Make Supercell 来建立超胞结构。在超胞结构中,中心元胞以外的原子会以小一号的球显示。

w3.png

4.3 CRYSTAL计算二维水层结构的振动分析
在打开PyVibMS插件窗口后,点击Input File这一行中 三个点(...)的按钮,然后选定 PyVibMS-master/examples/crystal17/2d-water/crystal_2d-water_translate.out
文件,将文件类型调整为Output File (*.out)后载入。回到PyVibMS界面后,将文件类型XYZ调成CRYSTAL17,并勾选Has PBC 和 Has Vib. Info.,然后点击Load载入。

此时PyMOL的显示界面会出现一个水分子,这是该二维体系中原胞包含的原子。在PyVibMS的界面中,晶格矢量的参数也已经自动设定为2D体系;表格区域罗列了
总共9个振动,其中前3个频率为0的模式实际上是平移运动,后面6个才是振动模式。通过和4.2节类似的操作,我们可以显示原胞和超胞下的振动。

w4.png

4.4  其他量子化学、第一性原理计算程序的振动分析
对于PyVibMS没有原生支持的量子化学、第一性原理的计算程序,PyVibMS目前仍然可以支持。这种情况下,PyVibMS需要两个输入文件:
一是体系的XYZ坐标文件 (格式见 https://en.wikipedia.org/wiki/XYZ_file_format),二是包含振动矢量信息可以被PyVibMS识别的mode文本文件。

下面以二氧化碳分子为例,演示PyVibMS的操作流程。
在打开PyVibMS插件窗口后,点击Input File这一行中 三个点(...)的按钮,然后选定 PyVibMS-master/examples/generic-xyz/co2.xyz 文件,载入后
以XYZ文件load载入。此时PyMOL的显示界面就出现了二氧化碳分子。然后在PyVibMS的界面上找到 Mode File一行,点击三个点(...)的按钮,
选定 PyVibMS-master/examples/generic-xyz/vib-modes.txt 文件并载入。此时PyVibMS的表格区域就出现了4个振动模式,说明已经读取成功。
w5.png
mode文件可以通过自写脚本的方式 从量子化学、第一性原理计算程序的振动分析结果里面提取相应的信息 来制作。下面以这个二氧化碳分子为例,介绍其文件格式。
#之后的文字为注释,在实际情况下不存在。
  1. 3 4    # 3 为原子个数,4 为该文件包含的振动模式个数

  2. N  673.5120  PIU  1  # N为固定字符 后面跟着振动频率、对称性 和 注释
  3. 0.88                        # 该振动在第1个原子的X分量
  4. -0.00                       # 该振动在第1个原子的Y分量
  5. -0.00                       # 该振动在第1个原子的Z分量
  6. -0.33                       # 该振动在第2个原子的X分量
  7. 0.00                        # ...
  8. 0.00
  9. -0.33   
  10. 0.00  
  11. -0.00
  12.                               # 空行
  13. N  673.5120  PIU  2
  14. 0.00   
  15. 0.88  
  16. -0.00
  17. -0.00  
  18. -0.33   
  19. 0.00
  20. -0.00  
  21. -0.33  
  22. -0.00

  23. N  1369.4505  SGG  3
  24. -0.00  
  25. -0.00   
  26. 0.00
  27. 0.00   
  28. 0.00   
  29. 0.71
  30. 0.00   
  31. 0.00  
  32. -0.71

  33. N  2400.9444  SGU  4
  34.   0.00   
  35.   0.00   
  36.   0.88
  37. -0.00  
  38. -0.00  
  39. -0.33
  40. -0.00  
  41. -0.00  
  42. -0.33
  43. END                  # 结束字符
复制代码

如果后续有用户希望可以让PyVibMS原生支持其他的量化、第一性原理程序,可以向笔者反馈。

5 PyVibMS的其他用途--显示分子、固体结构

除了显示振动模式之外,PyVibMS还可以借助PyMOL强大的可视化引擎对分子和固体结构进行可视化。对于分子体系来说,我们只需要准备相应的XYZ格式文件,直接载入即可。
对于固体/晶体结构,我们首先需要准备元胞内原子的XYZ坐标文件,按照上述方式载入;然后在PyVibMS的Dimensions下拉菜单选定合适的维度,点击Confirm.
然后在a1-a3部分填入晶格矢量信息即可。

下面以一维的聚乙炔体系为例进行演示:
首先我们载入PyVibMS-master/examples/crystal17/1d-trans-PA/cell-content.xyz文件,此时可以在PyMOL显示窗口看到一个C2H2的单体,这是聚乙炔的原胞内部包含的原子。
接着,我们用文本编辑器打开 PyVibMS-master/examples/crystal17/1d-trans-PA/pbc-lattice.txt 文本文件,可以看到三行数据。然后,我们将PyVibMS的Dimensions调为1 并点击Confirm.
将文本文件中的第一行数据复制到a1一栏,在前两个数据后加英文的逗号(,),再点击相应的按钮就可以显示原胞和超胞了。效果见下图

w6.png

当然,显示分子、固体结构的程序还有其他的选择,PyVibMS或者PyMOL并非唯一选择。

6 结语
PyVibMS作为一款免费、开源的PyMOL可视化插件诞生于2019年,笔者希望通过这篇文章能给广大的计算化学研究者对PyVibMS提供最直观的介绍,笔者也将倾听各位用户的反馈
对PyVibMS做及时的更新升级。

如果PyVibMS在你的科研中有所帮助,请引用我们的论文  
Tao, Y., Zou, W., Nanayakkara, S. et al. PyVibMS: a PyMOL plugin for visualizing vibrations in molecules and solids. J Mol Model 26, 290 (2020). https://doi.org/10.1007/s00894-020-04508-z



评分 Rate

参与人数
Participants 9
威望 +1 eV +53 收起 理由
Reason
丁越 + 5 赞!
卡开发发 + 5 好物!
夙雪夜归 + 5 GJ!
greatzdk + 5 好物!
ggdh + 5 好物!
hdhxx123 + 5 谢谢分享
sobereva + 1 + 15 精品内容
zjxitcc + 3 好物!
panernie + 5 好物!

查看全部评分 View all ratings

287

帖子

8

威望

1664

eV
积分
2111

Level 5 (御坂)

 楼主 Author| 发表于 Post on 2022-3-3 10:55:42 | 显示全部楼层 Show all
github访问不了的情况下,可以访问gitlab的镜像 https://gitlab.com/smutao/PyVibMS

60

帖子

0

威望

855

eV
积分
915

Level 4 (黑子)

发表于 Post on 2021-4-29 16:34:48 | 显示全部楼层 Show all
支持,超级牛啊

196

帖子

0

威望

3968

eV
积分
4164

Level 6 (一方通行)

发表于 Post on 2021-4-29 17:27:12 | 显示全部楼层 Show all
非gamma点怎么显示

287

帖子

8

威望

1664

eV
积分
2111

Level 5 (御坂)

 楼主 Author| 发表于 Post on 2021-4-30 06:21:53 | 显示全部楼层 Show all
get-it 发表于 2021-4-29 17:27
非gamma点怎么显示

你说的是非gamma点的声子振动模式吧?这种情况下需要构建超胞计算振动频率,算完振动之后导入PyVibMS为Unit/Primitice Cell.

393

帖子

0

威望

1446

eV
积分
1839

Level 5 (御坂)

娃娃儿鱼

发表于 Post on 2021-4-30 08:23:57 | 显示全部楼层 Show all
老师您好,在安装pymol的时候有这样的提示,不知道是否正常
QQ截图20210430082247.png
真·探

287

帖子

8

威望

1664

eV
积分
2111

Level 5 (御坂)

 楼主 Author| 发表于 Post on 2021-4-30 08:40:46 | 显示全部楼层 Show all
hdhxx123 发表于 2021-4-30 08:23
老师您好,在安装pymol的时候有这样的提示,不知道是否正常

根据红字部分的提示 原因可能是 pymol-2.5.0a0-cp38-cp38-win_amd64.whl 文件不在你的D:\目录下
需要把 pymol-2.5.0a0-cp38-cp38-win_amd64.whl 文件和 pymol_launcher-2.1-cp38-cp38-win_amd64.whl文件放在同一个目录下面  

393

帖子

0

威望

1446

eV
积分
1839

Level 5 (御坂)

娃娃儿鱼

发表于 Post on 2021-4-30 08:43:37 | 显示全部楼层 Show all
smutao 发表于 2021-4-30 08:40
根据红字部分的提示 原因可能是 pymol-2.5.0a0-cp38-cp38-win_amd64.whl 文件不在你的D:\目录下
需要把  ...

谢谢老师,我在安装时已经再三确认是在当前目录下的
QQ截图20210430082247.png
真·探

287

帖子

8

威望

1664

eV
积分
2111

Level 5 (御坂)

 楼主 Author| 发表于 Post on 2021-4-30 08:55:22 | 显示全部楼层 Show all
hdhxx123 发表于 2021-4-30 08:43
谢谢老师,我在安装时已经再三确认是在当前目录下的

文章里面的情况是针对64位的系统的
你的系统是不是64位的? 另外Anaconda也要安装64位版本的

6

帖子

0

威望

17

eV
积分
23

Level 1 能力者

发表于 Post on 2021-5-9 20:11:06 | 显示全部楼层 Show all
本帖最后由 daoshiliu 于 2021-5-9 20:15 编辑

请问大佬,按照流程进行安装插件,也提示安装成功,如图所示,但为什么在plugin manager 里头无法显示PyVibMS呢?PyMOL: Viewing matrix copied to clipboard.
Plugin 'src' only available with PyQt GUI.
Plugin 'src' only available with PyQt GUI.
Plugin 'src' only available with PyQt GUI.
Plugin 'src' only available with PyQt GUI.
Plugin 'src' only available with PyQt GUI.

我是不是还少安装了gui这个模块?
202105092009561093..png

287

帖子

8

威望

1664

eV
积分
2111

Level 5 (御坂)

 楼主 Author| 发表于 Post on 2021-5-11 05:03:35 | 显示全部楼层 Show all
daoshiliu 发表于 2021-5-9 20:11
请问大佬,按照流程进行安装插件,也提示安装成功,如图所示,但为什么在plugin manager 里头无法显示PyVib ...

可能是需要在配置python环境的时候 加上PyQt5这个组件
  1. pip install pyqt5
复制代码

https://pymolwiki.org/index.php/Windows_Install

6

帖子

0

威望

17

eV
积分
23

Level 1 能力者

发表于 Post on 2021-5-24 16:32:31 | 显示全部楼层 Show all
smutao 发表于 2021-5-11 05:03
可能是需要在配置python环境的时候 加上PyQt5这个组件

见 https://pymolwiki.org/index.php/Windows_I ...

谢谢您的回复,安装pyqt5后解决了那个问题

106

帖子

0

威望

400

eV
积分
506

Level 4 (黑子)

发表于 Post on 2021-11-12 15:22:29 | 显示全部楼层 Show all
你好,我保存振动的动图出现了这个问题,请问怎么解决
QQ截图20211112152011.png

106

帖子

0

威望

400

eV
积分
506

Level 4 (黑子)

发表于 Post on 2021-11-12 15:55:51 | 显示全部楼层 Show all
wangy0822 发表于 2021-11-12 15:22
你好,我保存振动的动图出现了这个问题,请问怎么解决

不好意思,没看到上面的方法,已解决

106

帖子

0

威望

400

eV
积分
506

Level 4 (黑子)

发表于 Post on 2022-3-3 14:50:28 | 显示全部楼层 Show all
supercell之后为啥这么多,不能指定做多大的超胞吗? QQ截图20220303144717.png

本版积分规则 Credits rule

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

GMT+8, 2023-2-7 02:19 , Processed in 0.232592 second(s), 27 queries .

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