|
|
本帖最后由 zjxitcc 于 2026-4-21 10:46 编辑
1. MOKIT程序简介
MOKIT(Molecular Orbital KIT)是一款免费、开源的量子化学波函数转化程序、多参考方法自动计算程序,在GitLab和GitHub上均有仓库(二者自动同步)
- https://gitlab.com/jxzou/mokit
- https://github.com/1234zou/MOKIT
复制代码 程序支持在近20款量化软件之间转化和复用波函数数据,并且可以自动构建多组态/多参考计算的初始轨道,自动确定活性空间,整合联用各个量化软件的特色功能,以较低使用门槛、较为黑箱的方式高效地完成多参考计算。
此外,MOKIT支持产生各类spin-flip方法(SF-TDDFT, MRSF-TDA, X-TDA, X-TDDFT, SA-SF-DFT等)的输入文件及轨道文件,各类能量分解分析方法(GKS-EDA/LMO-EDA/SAPT0)的输入文件及轨道文件,通过波函数转化和复用,让量化程序直接进入高等级方法/目标方法的计算。截至目前MOKIT已获75篇文章引用,包含文章来自Nat. Chem., J. Am. Chem. Soc., Angew. Chem. Int. Ed.等顶级期刊。更多功能介绍请见程序文档(https://doc.mokit.xyz)。
2. Windows系统下使用场景简介
根据笔者的粗略总结,用户反映的Windows下主要使用场景有
* 进行波函数文件转化,临时用GaussView/Multiwfn看一下轨道形状等等,通常就涉及两三个波函数文件。
* 想从之前计算好的ROKS.fch文件产生各种spin-flip方法的输入文件和轨道文件,再发到服务器/集群上去做计算。
* 想在本机上计算一个中小体系,利用frag_guess_wfn产生各类EDA方法的输入文件和轨道文件,再到Linux下做EDA计算。
这几类相对轻量型的操作在Win下若能办到,将大大增加便利性。因此本文专门介绍MOKIT在Windows操作系统下的安装和使用。
3. 如何在Windows系统下安装和使用MOKIT
用户请选择以下介绍的3.1 ~ 3.3任一种方式,无需三种途径均安装。需要指出,方式3.1和3.2不支持自动构建活性轨道、多参考方法的自动计算等复杂功能,只支持波函数文件转化、传轨道等操作。一来是因为多参考方法往往计算量很大,适合到Linux服务器/集群上进行,不适合在Windows下计算;二来是因为MOKIT有一些功能需要调用到PySCF,而PySCF暂不支持在Windows下使用,因此MOKIT中这部分功能也就无法使用。
3.1 在Windows下使用conda安装MOKIT
假设用户在Windows系统下安装过Python 3,例如在桌面搜索框中输入Anaconda Prompt,可以弹出相应的终端,用户名前有显示(base),如下图所示
若未安装过任何Python 3,可到以下任一网站
- https://www.anaconda.com/download/success
- https://mirrors.nju.edu.cn/download/Conda
复制代码 下载安装包(注意选择Windows版Miniconda Installer)。如果第一个网址弹出提示让您填写用户名和密码,可直接点击“取消”,便可进入下载页面。鼠标左键双击下载好的安装包,跟着提示走便可完成Miniconda Python的安装,然后启动Anaconda Prompt。
在弹出的终端中运行python --version查看Python版本,若是3.x则没问题。运行
- conda create -n mokit-py311 python=3.11 mokit -c mokit -c conda-forge
复制代码 过几秒会弹出提示,按y,这样就创建了一个新的虚拟环境并在其中安装了MOKIT。
3.2 使用Windows预编译版MOKIT
到以下网址
- https://gitlab.com/jxzou/mokit/-/releases
复制代码 下载Windows预编译版MOKIT。笔者撰写本文时,网页上最新版本的压缩包名称为mokit-v1.2.7_Win20260406.7z。该压缩包需使用7-Zip软件进行解压,若未安装7-Zip可到
- https://7-zip.org/download.html
复制代码 下载并安装。安装完成后,鼠标右键点击MOKIT压缩包,选择“7-Zip”,选择“解压到当前位置”,这里笔者将其放在`D:\Program Files\`路径下。
解压后的文件夹名称通常为mokit。接着我们将MOKIT路径添加至系统环境变量,在搜索框中输入“环境变量”,点击“编辑系统环境变量”,如下图
再按下图新建一个系统变量称作MOKIT_ROOT,变量值就是对应的路径,点击确定
现在点击Path,点击编辑,增加MOKIT路径和Gaussian路径(若读者认为用不到或不想用Gaussian,可不添加)
都设置好之后,依次点击确定,便可逐一退出这些环境变量的设置对话框。之后可以在任何目录下使用Windows预编译版MOKIT包含的小程序。
注意,Windows预编译版MOKIT更新频率较低,通常不对应仓库中的最新源码版本或分支,因此总是建议用户选择方式1或3进行安装,不得已的情况才尝试这种方式。
3.3 在WSL中安装和使用MOKIT
WSL全称Windows Subsystem for Linux,自Win 10之后用户可以直接在Win系统下安装一个Linux子系统,并在其中执行Linux操作,无需重启机子和切换操作系统,较为简便。安装WSL的教程在网络上有非常多,本文不作介绍;用户亦可在系统自带的微软商店(Microsoft Store)中搜索Ubuntu,点击安装。根据网络情况的不同,安装WSL可能需要10 min甚至半小时,安装时请用户耐心等待,观看安装进度或提示。
假设用户已装好WSL,在桌面下方搜索框中输入wsl便会识别出
按确定,弹出终端(第一次启动可能较慢)。在部分Windows系统下,即使用户未安装过WSL,这里可能也会自动识别,但弹出的不是一个Linux终端,而是微软商店中的WSL安装界面,用户亦可在此界面安装WSL。
在终端中运行python --version查看Python版本,如果是Python 2.x或压根没有Python,建议先安装任一种Python 3.x,可以到以下任一网站
- https://www.anaconda.com/download/success
- https://mirrors.nju.edu.cn/download/Conda
复制代码 下载Miniconda安装包(注意选择Linux版Miniconda Installer)。如果第一个网址弹出提示让您填写用户名和密码,可直接点击“取消”,便可进入下载页面。在安装完Miniconda,重启WSL时,应当看到用户名前有一个(base)。接着安装MOKIT,依次输入
- conda create -n mokit-py311 python=3.11 mokit -c mokit -c conda-forge
- conda activate mokit-py311
- conda install pyscf -c conda-forge
- conda deactivate
复制代码 这种安装和使用方式与在Linux集群上的操作完全相同,因此可以使用MOKIT的全部功能。上述第三行命令表示我们也顺带安装了PySCF。
4. 一些常用命令
4.1 查询虚拟环境
对于上述安装方式3.1和3.3,也就是使用conda创建虚拟环境并在其中安装MOKIT的用户,如果忘记之前创建的环境名称,可以运行`conda env list`查看当前有哪些虚拟环境可供激活或加载。
4.2 进入和退出虚拟环境
对于上述安装方式3.1和3.3,每次使用MOKIT前需先运行`conda activate mokit-py311`进入相应的虚拟环境才能使用MOKIT,此时终端里的用户名前有显示(mokit-py311)。这样可以确保各个环境的库版本互不干扰,若暂时不使用MOKIT,可以运行`conda deactivate`退出相应的虚拟环境。若再输入`exit`则可以退出当前终端。
4.3 查询MOKIT版本
对于上述安装方式3.1和3.3,均是先激活目标虚拟环境`conda activate mokit-py311`。然后利用conda展示MOKIT版本和安装渠道(Channel),即运行conda list mokit,笔者机子上运行结果显示
- # packages in environment at C:\Users\jxzou\.conda\envs\mokit-py311:
- #
- # Name Version Build Channel
- mokit 1.2.8rc1 py311hdb5a528_1 mokit
复制代码 还有一种办法是运行
- which automr
- automr --version
复制代码 实际上是利用MOKIT中最主要的小程序automr来打印版本信息。
而对于方式3.2安装的情形,无法通过上述命令查看版本,但可通过下载时的.7z压缩包名称来判断,或使用文本编辑器打开解压后的mokit文件夹中`README.md`, `CHANGELOG`, `doc/cite_MOKIT.ris`等文件,均有写明程序release日期,其中有些文件还写有版本号。
4.4 路径切换
在进行波函数文件转换时,需要先进入相应路径,然后对目标文件进行操作。对于方式3.1和3.2安装MOKIT的情形,需要先切换盘符,然后进入目标文件存放的文件夹,例如
对于方式3.3安装MOKIT的情形,在WSL中进入C盘、D盘分别对应操作
4.5 更新、卸载和删除
对于上述方式3.2安装的情况,用户可直接删除mokit文件夹,下载更新版本的Win版预编译MOKIT压缩包,解压。
而对于上述方式3.1和3.3,可以借助conda update来更新,例如
- # 若处于(base)环境,需要先进入(mokit-py311)环境
- conda update mokit -c mokit -c conda-forge
复制代码 若用户想卸载MOKIT,但尽可能保留该虚拟环境中的其他程序和库,可运行
- # 若处于(base)环境,需要先进入(mokit-py311)环境
- conda uninstall mokit
复制代码 若用户想彻底删除虚拟环境(mokit-py311),一并卸载其中所有程序和库,可运行
- # 若处于(mokit-py311)环境,需要先conda deactivate退出环境
- conda env remove -n mokit-py311
复制代码
5. Win下使用MOKIT场景示例
5.1 使用各个小程序传轨道、转化波函数文件
例如我们可以将Gaussian三重态ROKS任务的fch文件转化为GAMESS的MRSF-TDA任务的输入文件及轨道文件
- fch2inp O2_roks.fch -mrsf
复制代码 产生O2_roks.inp文件,其中已写好MRSF-TDA计算关键词(默认使用最常用泛函BHandHLYP),并包含分子坐标和基组数据等所有必要信息,可以发送到Linux服务器下用GAMESS提交计算。若有读者对产生GKS-EDA, LMO-EDA和SAPT0任务的输入文件及轨道文件感兴趣,请见下一小节"使用frag_guess_wfn小程序",而`fch2inp`不足以实现此目的。
再比如,我们可以在Win下产生量化软件BDF的X-TDA单点计算、X-TDDFT单点计算、X-TDA二-四重态激发能及旋轨耦合等计算任务的输入文件及轨道文件,以二重态的氰基为例(以下三选一)
- fch2bdf CN_radical.fch -xtda
- fch2bdf CN_radical.fch -xtddft
- fch2bdf CN_radical.fch -socxtda
复制代码 然后把文件发到另一安装有BDF软件的集群上提交计算。
又比如,我们可以将常见量化软件产生的molden文件转化为fch文件,例如
- molden2fch a.molden -cfour # only for CFOUR v2.1
- molden2fch a.molden -dalton
- molden2fch a.molden -molcas
- molden2fch a.molden -molpro
- molden2fch a.molden -mrcc
- molden2fch a.molden -nwchem
- molden2fch a.molden -orca
- molden2fch a.molden -psi4
- molden2fch a.molden -pyscf
- molden2fch a.molden -tm
复制代码
5.2 使用frag_guess_wfn小程序
用户也可以使用frag_guess_wfn小程序,通过调用Gaussian进行量化计算,产生各类EDA任务的输入文件及轨道文件,输入文件示例
- %mem=8GB
- %nprocshared=4
- #p PBE1PBE/def2TZVP em=GD3BJ guess(fragment=2)
- {gks}
- 0 1 0 1 0 1
- N(fragment=1) -1.67861672 -0.49374924 -0.00513612
- H(fragment=1) -1.39223602 -1.00824506 0.80312136
- H(fragment=1) -1.24821305 0.40883590 0.00449440
- H(fragment=1) -1.40093406 -0.98667606 -0.82970600
- O(fragment=2) 0.68224018 0.74345713 0.00303850
- H(fragment=2) 1.37946396 0.10226230 -0.15300059
- H(fragment=2) 0.95548613 1.60139824 -0.32993853
复制代码 提交任务,即进入h2o_nh3.gjf文件所在目录,在终端中运行
- frag_guess_wfn h2o_nh3.gjf >h2o_nh3.out
复制代码 注意,若用户安装的是Win版32位Gaussian,其只能用单核串行计算且只能用1400MB左右的内存,只适合小体系计算或教学用途。而Win版64位Gaussian可以使用更多硬件资源。当然,如果追求更高效的计算效率、更少的报错,还是建议到Linux系统下安装和使用MOKIT。
对于产生GKS-EDA输入文件这种任务,frag_guess_wfn小程序需调用Gaussian 5次,计算并产生5套轨道,依次转化轨道系数并写入inp文件,自动写好GKS-EDA相关的关键词,不是简单地使用1次fch2inp小程序可以替代的。计算完成后当前目录下有h2o_nh3.inp文件,可以发送或上传到另一台安装有XEDA的机器上提交计算。
5.3 调换轨道顺序
该功能仅适用于方式3.1和3.3安装的情形。用户可以使用如下两行python脚本调换fch文件中的轨道
- from mokit.lib.gaussian import permute_orb
- permute_orb('h2o.fch',4,5,start_from_one=True)
复制代码 操作完成后`h2o.fch`文件会被更新,不产生新的fch文件。`start_from_one`表示轨道序号从0开始计数、还是从1开始计数,方便不同偏好习惯的用户使用。此时会可能弹出警告信息
- Warning: pyscf not found. All py2xxx functionality cannot work.
复制代码 不影响使用。该函数也提供Python Entry Points功能,可直接在命令行中使用,无需启动Python、写Python脚本,例如
- conda activate mokit-py311
- permute_orb h2o.fch 4 5
复制代码 此时轨道序号只能从1开始计数。
5.4 对两个轨道进行等比例线性组合
该功能仅适用于方式3.1和3.3安装的情形
- from mokit.lib.gaussian import lin_comb_two_mo
- lin_comb_two_mo('ben_LMO.fch',14,15,start_from_one=True)
复制代码 相当于对第14号和第15号轨道进行了45°旋转的酉变换。`start_from_one`表示轨道序号从0开始计数、还是从1开始计数。例如当C=C双键的sigma成键轨道和pi成键轨道被Foster-Boys局域化方法转变为“香蕉键”时,可以使用该功能立即恢复sigma-pi分离,用于其他类型的轨道局域化或后续计算。
5.5 产生UHF/UKS自然轨道
该功能仅适用于方式3.3安装的情形。用户可以使用如下两行python脚本产生UHF/UKS自然轨道(简称UNO)
- from mokit.lib.gaussian import uno
- uno('O2_uks.fch')
复制代码 产生的文件名为`O2_uks_UNO.fch`。该函数也提供Python Entry Points功能,可直接在命令行中使用,无需启动Python、写Python脚本,例如
- conda activate mokit-py311
- uno O2_uks.fch
复制代码
6. 问题咨询
若对本文介绍的安装过程及使用有疑问,请加QQ群470745084提问,加群时请备注具体研究方向。描述问题时请详细指明是按照本文哪部分内容操作,在哪一步遇见了第一个报错,报错信息为何。若有更为复杂的问题,请到GitLab/GitHub issue区提问
- https://gitlab.com/jxzou/mokit/-/work_items
- https://github.com/1234zou/MOKIT/issues
复制代码
(本文由本人首发于量子化学公众号,后续若有更新,最新版将一直放在https://gitlab.com/jxzou/qcinstall)
|
评分 Rate
-
查看全部评分 View all ratings
|