|
本帖最后由 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文件夹,输入
就可以开启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 输入
- conda create -n pymol python=3.8
- conda activate pymol
复制代码 此时我们创建了一个名为pymol的python3.8环境,并激活了该环境,接着我们输入
- conda install -c anaconda pip
- conda install -c anaconda numpy
- conda install -c conda-forge pmw
复制代码 来安装相关的python库,接着我们进入刚刚下载的两个文件所在的文件夹(如C:\Downloads)
然后接着输入下面一行安装指令即可
- pip install --no-index --find-links="%CD%" pymol_launcher-2.1-cp38-cp38-win_amd64.whl
复制代码 这个时候PyMOL开源版本就已经安装好了,输入下面的指令即可运行
假如这个Anaconda prompt的窗口关闭了,需要再次使用pymol的时候,则需要先加载pymol的环境然后运行pymol
- conda activate pymol
- pymol
复制代码
B.2) 在Linux下
在Linux的不同发行版中,我们可以利用系统自带的包管理工具一键安装开源版的PyMOL,非常方便。
比如在ubuntu中,我们可以使用
- sudo apt-get install pymol
复制代码 在centos中,可以使用
- sudo yum --enablerepo=epel install pymol
复制代码
其他的发行版可以参见 https://pymolwiki.org/index.php/Linux_Install
B.3)在Mac下
需要先安装MacPorts环境,见 https://www.macports.org/install.php
安装完毕后打开终端,输入
即可一键安装。
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菜单下找到。
3. 使用PyVibMS
在一个干净的PyMOL窗口(如果此时PyMOL已经加载了分子,请先在PyMOL>这一栏输入 reinitialize 命令重新初始化PyMOL程序),点击Plugin->PyVibMS 即可打开本插件
具体的使用方式请见下一节的实例。
使用完成后,请点击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比较合适。
按照上图设置好之后,点击 Make a GIF即可制作,完毕后点击下方的save则可以将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 来建立超胞结构。在超胞结构中,中心元胞以外的原子会以小一号的球显示。
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节类似的操作,我们可以显示原胞和超胞下的振动。
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个振动模式,说明已经读取成功。
mode文件可以通过自写脚本的方式 从量子化学、第一性原理计算程序的振动分析结果里面提取相应的信息 来制作。下面以这个二氧化碳分子为例,介绍其文件格式。
#之后的文字为注释,在实际情况下不存在。
- 3 4 # 3 为原子个数,4 为该文件包含的振动模式个数
- N 673.5120 PIU 1 # N为固定字符 后面跟着振动频率、对称性 和 注释
- 0.88 # 该振动在第1个原子的X分量
- -0.00 # 该振动在第1个原子的Y分量
- -0.00 # 该振动在第1个原子的Z分量
- -0.33 # 该振动在第2个原子的X分量
- 0.00 # ...
- 0.00
- -0.33
- 0.00
- -0.00
- # 空行
- N 673.5120 PIU 2
- 0.00
- 0.88
- -0.00
- -0.00
- -0.33
- 0.00
- -0.00
- -0.33
- -0.00
- N 1369.4505 SGG 3
- -0.00
- -0.00
- 0.00
- 0.00
- 0.00
- 0.71
- 0.00
- 0.00
- -0.71
- N 2400.9444 SGU 4
- 0.00
- 0.00
- 0.88
- -0.00
- -0.00
- -0.33
- -0.00
- -0.00
- -0.33
- 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一栏,在前两个数据后加英文的逗号(,),再点击相应的按钮就可以显示原胞和超胞了。效果见下图
当然,显示分子、固体结构的程序还有其他的选择,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
-
查看全部评分 View all ratings
|