计算化学公社

标题: 在Windows下安装和使用MOKIT的三种方式 [打印本页]

作者
Author:
zjxitcc    时间: 9 hour ago
标题: 在Windows下安装和使用MOKIT的三种方式
本帖最后由 zjxitcc 于 2026-4-21 10:46 编辑

1. MOKIT程序简介
MOKIT(Molecular Orbital KIT)是一款免费、开源的量子化学波函数转化程序、多参考方法自动计算程序,在GitLab和GitHub上均有仓库(二者自动同步)
  1. https://gitlab.com/jxzou/mokit
  2. 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),如下图所示
(, 下载次数 Times of downloads: 0)       (, 下载次数 Times of downloads: 0)

若未安装过任何Python 3,可到以下任一网站
  1. https://www.anaconda.com/download/success
  2. https://mirrors.nju.edu.cn/download/Conda
复制代码
下载安装包(注意选择Windows版Miniconda Installer)。如果第一个网址弹出提示让您填写用户名和密码,可直接点击“取消”,便可进入下载页面。鼠标左键双击下载好的安装包,跟着提示走便可完成Miniconda Python的安装,然后启动Anaconda Prompt。

在弹出的终端中运行python --version查看Python版本,若是3.x则没问题。运行
  1. conda create -n mokit-py311 python=3.11 mokit -c mokit -c conda-forge
复制代码
过几秒会弹出提示,按y,这样就创建了一个新的虚拟环境并在其中安装了MOKIT。

3.2 使用Windows预编译版MOKIT
到以下网址
  1. https://gitlab.com/jxzou/mokit/-/releases
复制代码
下载Windows预编译版MOKIT。笔者撰写本文时,网页上最新版本的压缩包名称为mokit-v1.2.7_Win20260406.7z。该压缩包需使用7-Zip软件进行解压,若未安装7-Zip可到
  1. https://7-zip.org/download.html
复制代码
下载并安装。安装完成后,鼠标右键点击MOKIT压缩包,选择“7-Zip”,选择“解压到当前位置”,这里笔者将其放在`D:\Program Files\`路径下。

解压后的文件夹名称通常为mokit。接着我们将MOKIT路径添加至系统环境变量,在搜索框中输入“环境变量”,点击“编辑系统环境变量”,如下图
(, 下载次数 Times of downloads: 0)       (, 下载次数 Times of downloads: 0)

再按下图新建一个系统变量称作MOKIT_ROOT,变量值就是对应的路径,点击确定
(, 下载次数 Times of downloads: 0)

现在点击Path,点击编辑,增加MOKIT路径和Gaussian路径(若读者认为用不到或不想用Gaussian,可不添加)
(, 下载次数 Times of downloads: 0)       (, 下载次数 Times of downloads: 0)

都设置好之后,依次点击确定,便可逐一退出这些环境变量的设置对话框。之后可以在任何目录下使用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便会识别出
(, 下载次数 Times of downloads: 0)

按确定,弹出终端(第一次启动可能较慢)。在部分Windows系统下,即使用户未安装过WSL,这里可能也会自动识别,但弹出的不是一个Linux终端,而是微软商店中的WSL安装界面,用户亦可在此界面安装WSL。

在终端中运行python --version查看Python版本,如果是Python 2.x或压根没有Python,建议先安装任一种Python 3.x,可以到以下任一网站
  1. https://www.anaconda.com/download/success
  2. https://mirrors.nju.edu.cn/download/Conda
复制代码
下载Miniconda安装包(注意选择Linux版Miniconda Installer)。如果第一个网址弹出提示让您填写用户名和密码,可直接点击“取消”,便可进入下载页面。在安装完Miniconda,重启WSL时,应当看到用户名前有一个(base)。接着安装MOKIT,依次输入
  1. conda create -n mokit-py311 python=3.11 mokit -c mokit -c conda-forge
  2. conda activate mokit-py311
  3. conda install pyscf -c conda-forge
  4. 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,笔者机子上运行结果显示
  1. # packages in environment at C:\Users\jxzou\.conda\envs\mokit-py311:
  2. #
  3. # Name                     Version          Build            Channel
  4. mokit                      1.2.8rc1         py311hdb5a528_1  mokit
复制代码
还有一种办法是运行
  1. which automr
  2. automr --version
复制代码
实际上是利用MOKIT中最主要的小程序automr来打印版本信息。

而对于方式3.2安装的情形,无法通过上述命令查看版本,但可通过下载时的.7z压缩包名称来判断,或使用文本编辑器打开解压后的mokit文件夹中`README.md`, `CHANGELOG`, `doc/cite_MOKIT.ris`等文件,均有写明程序release日期,其中有些文件还写有版本号。

4.4 路径切换
在进行波函数文件转换时,需要先进入相应路径,然后对目标文件进行操作。对于方式3.1和3.2安装MOKIT的情形,需要先切换盘符,然后进入目标文件存放的文件夹,例如
(, 下载次数 Times of downloads: 0)

对于方式3.3安装MOKIT的情形,在WSL中进入C盘、D盘分别对应操作
  1. cd /mnt/c/
  2. cd /mnt/d/
复制代码

4.5 更新、卸载和删除
对于上述方式3.2安装的情况,用户可直接删除mokit文件夹,下载更新版本的Win版预编译MOKIT压缩包,解压。

而对于上述方式3.1和3.3,可以借助conda update来更新,例如
  1. # 若处于(base)环境,需要先进入(mokit-py311)环境
  2. conda update mokit -c mokit -c conda-forge
复制代码
若用户想卸载MOKIT,但尽可能保留该虚拟环境中的其他程序和库,可运行
  1. # 若处于(base)环境,需要先进入(mokit-py311)环境
  2. conda uninstall mokit
复制代码
若用户想彻底删除虚拟环境(mokit-py311),一并卸载其中所有程序和库,可运行
  1. # 若处于(mokit-py311)环境,需要先conda deactivate退出环境
  2. conda env remove -n mokit-py311
复制代码

5. Win下使用MOKIT场景示例
5.1 使用各个小程序传轨道、转化波函数文件
例如我们可以将Gaussian三重态ROKS任务的fch文件转化为GAMESS的MRSF-TDA任务的输入文件及轨道文件
  1. 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二-四重态激发能及旋轨耦合等计算任务的输入文件及轨道文件,以二重态的氰基为例(以下三选一)
  1. fch2bdf CN_radical.fch -xtda
  2. fch2bdf CN_radical.fch -xtddft
  3. fch2bdf CN_radical.fch -socxtda
复制代码
然后把文件发到另一安装有BDF软件的集群上提交计算。

又比如,我们可以将常见量化软件产生的molden文件转化为fch文件,例如
  1. molden2fch a.molden -cfour # only for CFOUR v2.1
  2. molden2fch a.molden -dalton
  3. molden2fch a.molden -molcas
  4. molden2fch a.molden -molpro
  5. molden2fch a.molden -mrcc
  6. molden2fch a.molden -nwchem
  7. molden2fch a.molden -orca
  8. molden2fch a.molden -psi4
  9. molden2fch a.molden -pyscf
  10. molden2fch a.molden -tm
复制代码

5.2 使用frag_guess_wfn小程序
用户也可以使用frag_guess_wfn小程序,通过调用Gaussian进行量化计算,产生各类EDA任务的输入文件及轨道文件,输入文件示例
  1. %mem=8GB
  2. %nprocshared=4
  3. #p PBE1PBE/def2TZVP em=GD3BJ guess(fragment=2)

  4. {gks}

  5. 0 1 0 1 0 1
  6. N(fragment=1)    -1.67861672   -0.49374924   -0.00513612
  7. H(fragment=1)    -1.39223602   -1.00824506    0.80312136
  8. H(fragment=1)    -1.24821305    0.40883590    0.00449440
  9. H(fragment=1)    -1.40093406   -0.98667606   -0.82970600
  10. O(fragment=2)     0.68224018    0.74345713    0.00303850
  11. H(fragment=2)     1.37946396    0.10226230   -0.15300059
  12. H(fragment=2)     0.95548613    1.60139824   -0.32993853

复制代码
提交任务,即进入h2o_nh3.gjf文件所在目录,在终端中运行
  1. 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文件中的轨道
  1. from mokit.lib.gaussian import permute_orb
  2. permute_orb('h2o.fch',4,5,start_from_one=True)
复制代码
操作完成后`h2o.fch`文件会被更新,不产生新的fch文件。`start_from_one`表示轨道序号从0开始计数、还是从1开始计数,方便不同偏好习惯的用户使用。此时会可能弹出警告信息
  1. Warning: pyscf not found. All py2xxx functionality cannot work.
复制代码
不影响使用。该函数也提供Python Entry Points功能,可直接在命令行中使用,无需启动Python、写Python脚本,例如
  1. conda activate mokit-py311
  2. permute_orb h2o.fch 4 5
复制代码
此时轨道序号只能从1开始计数。

5.4 对两个轨道进行等比例线性组合
该功能仅适用于方式3.1和3.3安装的情形
  1. from mokit.lib.gaussian import lin_comb_two_mo
  2. 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分离,用于其他类型的轨道局域化或后续计算。
(, 下载次数 Times of downloads: 0)

5.5 产生UHF/UKS自然轨道
该功能仅适用于方式3.3安装的情形。用户可以使用如下两行python脚本产生UHF/UKS自然轨道(简称UNO)
  1. from mokit.lib.gaussian import uno
  2. uno('O2_uks.fch')
复制代码
产生的文件名为`O2_uks_UNO.fch`。该函数也提供Python Entry Points功能,可直接在命令行中使用,无需启动Python、写Python脚本,例如
  1. conda activate mokit-py311
  2. uno O2_uks.fch
复制代码

6. 问题咨询
若对本文介绍的安装过程及使用有疑问,请加QQ群470745084提问,加群时请备注具体研究方向。描述问题时请详细指明是按照本文哪部分内容操作,在哪一步遇见了第一个报错,报错信息为何。若有更为复杂的问题,请到GitLab/GitHub issue区提问
  1. https://gitlab.com/jxzou/mokit/-/work_items
  2. https://github.com/1234zou/MOKIT/issues
复制代码

(本文由本人首发于量子化学公众号,后续若有更新,最新版将一直放在https://gitlab.com/jxzou/qcinstall







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