Molclus FAQ

Molclus FAQ

文/Sobereva@北京科音  2024-Dec-8


笔者开发的免费的分子构象和团簇构型搜索程序Molclus(http://www.keinsci.com/research/molclus.html)如今已经非常流行,在网上经常有人提问此程序的使用问题。这里我把一些比较常见的问题进行统一回答。日后还会对本文内容有进一步追加。


Q1:Molclus是干什么?
A:如果你没有任何量子化学背景知识,先把《辨析计算化学中的任务类型和理论方法》(http://sobereva.com/680)看了。多原子分子、原子/分子团簇体系的势能面上一般有不止一个极小点,直接基于自己猜的初始结构去用Gaussian等程序做几何优化,极可能会优化到不是能量最低的极小点,这会导致之后做的分析讨论没实际意义、结果有误导性。Molclus可以帮助你获得能量最低的极小点,即全局最小点的结构,这是体系最有意义的结构。

此外,柔性分子、团簇的势能面上通常有一批能量都很低、能量相差不大的极小点结构,在实际研究的温度下都有一定出现比例(参见《根据Boltzmann分布计算分子不同构象所占比例》http://sobereva.com/165),计算构象权重的光谱(参见《使用Multiwfn绘制构象权重平均的光谱)http://sobereva.com/383和《使用Multiwfn绘制NMR谱》http://sobereva.com/565)以及计算构象权重的热力学量(参见《使用Shermo结合量子化学程序方便地计算分子的各种热力学数据》http://sobereva.com/552)需要得到这些低能量极小点的结构和出现百分比,Molclus也可以很好地实现这个目的。


Q2:怎么引用Molclus程序?
A:计算化学程序的引用在《写计算化学文章时引用理论方法、基组、程序时应注意的问题》(http://sobereva.com/370)里明确强调了。使用Molclus发文章(包括给别人代算)必须按照主页http://www.keinsci.com/research/molclus.html上明确写明的方式引用,引用必须在正文里体现。Molclus完全免费,按要求正确引用Molclus是对此程序开发和维护的最好的支持。


Q3:使用Molclus程序遇到问题如何求助?
A:在计算化学公社论坛(http://bbs.keinsci.com)的“量子化学”版块发帖,发帖时选择Molclus分类。也可以在笔者创建的思想家公社QQ群里提问,群介绍和群号见http://sobereva.com/QQrule.html。我看到后都会尽量回答。提问时必须把使用细节交代得尽可能清楚,避免含糊其辞或引起歧义,注意看《在网上求助计算化学问题的时候必须把问题描述得详细、具体、准确、清楚》(http://sobereva.com/620)。


Q4:Molclus程序怎么上手?
A:Molclus主页http://www.keinsci.com/research/molclus.html上明确给了具体教程,写得极为详细,认真一个字一个字阅读、照着操作即可。

需要注意的是,Molclus虽然非常易于使用、灵活方便,但不代表这是完全黑箱程序,使用者不能一点计算化学常识都没有。Molclus需要调用第三方程序来做单点、几何优化、振动分析等任务。Molclus调用哪个程序,用户就应当有相应程序的最基本常识。例如使用Molclus调用Gaussian做优化和单点能计算是最常涉及的情况,因此用户就得懂Gaussian最基本的使用,要不然连Gaussian怎么安装和运行、Gaussian模板文件里怎么写关键词、最常见的Gaussian报错都不知道怎么解决可不行。而且仅当你具备基本的Gaussian计算常识的情况下,才能知道怎么针对当前的体系根据精度要求和计算资源选择合适的级别用Molclus做构型或构象搜索。不具备相关知识的话非常建议通过北京科音初级量子化学培训班(http://www.keinsci.com/KEQC)快速且系统地学习。


Q5:Molclus做构型/构象搜索的基本流程是什么?
Molclus的最简单的使用过程是:
(1)用Molclus的gentor或genmer或第三方程序产生一批初始构型/构象记录在traj.xyz文件里,这是多帧的xyz格式的文件,见《谈谈记录化学体系结构的xyz文件》(http://sobereva.com/477
(2)用Molclus对当前目录下的traj.xyz里的构型/构象依次做优化,得到的结构和能量都会储存在isomers.xyz里
(3)用Molclus里的isostat工具对isomers.xyz中的结构去重、按能量排序,得到cluster.xyz,里面第一个就是全局能量最小点结构,后面的是能量次低的结构

更准确而且也是实际中特别常用的流程如下,这里以普通有机体系为例
(1)如上所述先产生一批初始构型/构象
(2)用Molclus结合xtb程序在很便宜但也较糙的GFN-xTB级别下对这些构型/构象依次做很快速的优化(对柔性大体系这一步可能要对几百甚至上千个结构做计算)
(3)用isostat对优化后的结构去重、按能量排序得到cluster.xyz
(4)将cluster.xyz改名为traj.xyz,用Molclus调用Gaussian在精度够用而且也不贵的B3LYP-D3(BJ)/6-31G*级别下对之前能量最低的几kcal/mol的结构(通常在几十个以内)进行更准确的优化以及做振动分析(后者是为了检验虚频情况以及获得自由能热校正量),并且之后自动在M06-2X/def2-TZVP级别下做较高精度的单点能计算。此时isomers.xyz里存的是各个结构及其较准确的自由能
(5)用isostat对isomers.xyz里的结构去重、按自由能排序得到cluster.xyz,并且可以输入温度让isostat直接算出来各个结构的Boltzmann出现比率

记住如果是做溶液情况下的构型/构象搜索,单点计算必须带溶剂模型(建议用SMD),优化和振动分析最好也带上以图稳妥(建议用IEFPCM)。如果嫌振动分析贵也可以不做,最后isostat会将按照电子能量而非自由能排序,给出的Boltzmann分布的准确性可能会差不少。

没有哪种构型/构象搜索流程对所有情况都是最理想的,精度和效率不可能同时特别理想,上面说的只是对一般有机体系的精度和效率比较均衡的搜索流程。使用者可根据实际情况随机应变。具体操作细节在Molclus官网上的教程里都有体现。

上述提到的Gaussian是收费的,因版权问题实在不方便用Gaussian的话也可以让Molclus调用免费的ORCA量子化学程序来代替,再加上xtb和Molclus都是免费的,因此利用Molclus做构象搜索可以全程免费,只不过ORCA在优化+振动分析方面的整体稳健性方面不如Gaussian。用ORCA的话,上述优化+振动分析部分建议用B97-3c,单点计算部分建议用wB97M-V/def2-TZVP结合gCP形式的BSSE校正。ORCA和xtb的使用在《北京科音高级量子化学培训班》(http://www.keinsci.com/KAQC)里有极其全面的介绍。


Q6:哪种方式产生初始构型/构象最适合我?
A:不同方式产生初始构型/构象各有长处,在Molclus官网上写明了,如下所示。有不清楚的可以在公社论坛或QQ群里向我咨询
• Molclus自带的genmer程序结合Molclus:用于分子团簇或原子团簇构型搜索,使用简便。对于分子团簇搜索这通常是首选。唯一局限性是对分子的构象考虑不够充分,因为genmer将分子当成刚性来堆积,因此不适合单分子柔性很强的情况,这种情况更适合后面说的做动力学程序结合Molclus。相关介绍和示例看《genmer:生成团簇初始构型结合molclus做团簇结构搜索的超便捷工具》(http://bbs.keinsci.com/thread-2369-1-1.html
• Molclus自带的gentor程序结合Molclus:用于分子构象搜索。使用简便,但不支持环状区域构象搜索(环状区域是指诸如环己烷这样有多种构象的环状区域)。对于可旋转的键不很多的分子的构象搜索这是首选,可控性最强。相关介绍和示例看《gentor:扫描方式做分子构象搜索的便捷工具》(http://bbs.keinsci.com/thread-2388-1-1.html
• 第三方的Confab或Frog2构象生成程序结合Molclus:用于分子构象搜索。使用最为傻瓜化,但不支持环状区域构象搜索、不支持普通有机分子以外的情况。相关介绍和示例看《将Confab或Frog2与Molclus联用对有机体系做构象搜索》http://bbs.keinsci.com/thread-20063-1-1.html
• xtb程序跑动力学轨迹结合Molclus:普适性极强,用于构象搜索、原子/分子团簇构型搜索皆可,使用容易。但由于模拟时间长度有限,有动力学采样不充分导致遗漏构型/构象的风险(风险随动力学模拟时间增长而减小)。相关介绍和示例看《使用Molclus结合xtb做的动力学模拟对瑞德西韦(Remdesivir)做构象搜索》(http://bbs.keinsci.com/thread-16255-1-1.html
• GROMACS等经典力场分子动力学程序结合Molclus:用于分子团簇搜索和分子构象搜索。使用稍繁琐,因为得创建拓扑文件,且被动力学模拟的体系必须有恰当的力场,好处是动力学模拟耗时极低,因此动力学采样不充分导致遗漏构型/构象的风险很小。相关介绍和示例看《使用molclus程序做团簇构型搜索和分子构象搜索》(http://bbs.keinsci.com/thread-577-1-1.html)。不了解GROMACS使用的话推荐通过《北京科音分子动力学与GROMACS培训班》(http://www.keinsci.com/KGMX)学习相关使用知识。


Q7:为什么运行Molclus的时候闪退/崩溃?
只有两个可能:
(1)被Molclus所读取的traj.xyz的格式有问题导致程序崩溃。要按照《谈谈记录化学体系结构的xyz文件》(http://sobereva.com/477)说的用文本编辑器检查其内容看是否符合标准格式。也可以试图往免费的VMD可视化程序里载入,如果载入不了也说明格式有问题
(2)被Molclus所读取的settings.ini文件有问题。典型情况是用户修改里面设置的时候把格式改乱了,导致无法被读取。也有的用户干了多余的事,自作主张地把他觉得不需要的内容给删掉了,导致Molclus没法读取要读取的内容。还有的用户直接把老版本Molclus的settings.ini放到新版本Molclus目录下用,由于新、老版本此文件里面包含的选项不同,导致新版本Molclus无法正常读取之(所以不要干这种事,要改什么设置一定要在当前版本Molclus自带的settings.ini基础上按照原本的格式改)
死活搞不明白的话,到计算化学公社论坛发帖,把整个Molclus目录压缩后作为附件上传。


Q8:为什么运行Molclus自带的genmer或gentor后程序闪退/崩溃?
A:要么是涉及的xyz文件格式有问题,自行检查;要么是genmer的genmer.ini、gentor的gentor.ini里的格式没写对或者写的内容有bug。死活搞不明白的话,到计算化学公社论坛发帖,把整个genmer或gentor目录压缩后作为附件上传。


Q9:为什么产生的isomers.xyz内容为空?
A:这说明连一个结构都没跑成功。一定要仔细看Molclus运行窗口中的提示,Molclus在执行什么、运行状态如何,都提示得清清楚楚。导致此问题常见的原因如下,是哪种情况根据Molclus输出的提示就能很容易地判断(实在看不懂的话在提问时把完整截图贴出来)
(1)Molclus调用Gaussian、xtb等第三方程序失败。通常是第三方程序在机子里没装好,或者settings.ini里调用它们的命令没写对
(2)连一个任务都还没跑完。如果你确信你的计算设置没有离谱的地方,就继续等着
(3)所有任务都运行失败了。如果把settings.ini里的ibkout设为1,每个任务的被调用的第三方程序的输出文件都会被保留,应当根据里面的信息结合相应程序的使用常识判断当前是什么原因所致。常见的问题包括:模板文件里关键词写错了、净电荷或自旋多重度设错了、SCF/几何优化不收敛。


Q10:怎么Molclus老也算不完?
A:如果根据Molclus的提示能确信任务正在算着,这种情况无非就是以下原因
(1)CPU忒烂导致耗时太高。一些初学者对耗时没基本常识,在个位数核心的CPU上就想让Molclus调用Gaussian或ORCA用DFT优化上百原子体系、对其做振动分析,耗时不高才怪。牵扯到大批量上百原子体系的DFT计算都应该有个像样的性能较好的服务器,要不然做构象搜索可能得跑N天甚至一周以上。也可能使用者的CPU并不差,但没恰当并行,或者非要用Windows版的Gaussian,导致CPU性能无法充分发挥
(2)用的计算级别过于昂贵。诸如让Molclus调用Gaussian对挺大的体系用def2-TZVP这么贵的基组做优化、对其用双杂化泛函做单点计算甚至优化,耗时不高才怪
(3)遇到了难收敛。应根据被调用的程序的使用常识,根据其临时输出文件内容判断当前是什么情况。Molclus调用第三方程序用的命令在屏幕上提示得清清楚楚,被调用的程序产生的临时输出文件是哪个也体现得明明白白,比如Gaussian就是gau.out。对于调用Gaussian做几何优化,若一个任务老跑不完,显然应该想到用GaussView打开gau.out,看看是遇到了震荡难收敛还是什么其它情况,以及弄清楚当前跑多少步了、是不是每一步的耗时太高,等等。如果真遇上几何优化难收敛,Gaussian用户可以参考《量子化学计算中帮助几何优化收敛的常用方法》(http://sobereva.com/164)在模板文件里加上适当的帮助收敛的关键词。对于Molclus调用ORCA也是类似的处理思路


Q11:Molclus对各个结构优化时有个别没成功,结果可以用么?
A:我只能说没优化成功的任务占总结构数目比例越小,遗漏重要结构的概率越低。如果你用ibkout=3把失败的任务的输出文件都备份了出来,可以看看其优化最后一帧的结构和isostat排序后能量最低一批结构的差异,如果看上去优化失败的结构继续跑下去也不太可能收敛到能量较低的结构去,那这样的结构就可以舍弃。而如果你怀疑它继续优化有可能能得到一个不可忽视的能量很低的结构,那就把他回炉结合适当的关键词重新优化。值得注意的是settings.ini里可以通过ngeom指定对traj.xyz里哪些帧进行处理,iappend设1可以把新得到的结果在之前的isomers.xyz上续写,因此可以方便地将回炉的结果累加到之前的上面。


Q12:Molclus能在Windows下用么?
A:能是能,但在Linux下用更理想。xtb程序虽然有Windows版,但有些bug,Windows下使用时容易莫名其妙中断。因此笔者在Windows主机下用Molclus调用xtb时都是在VMware虚拟机里装的Linux客户机里用。而且Gaussian的Windows版的计算效率不及Linux版,尤其是CPU核数较多时相差很悬殊,这点在《Gaussian的安装方法及运行时的相关问题》(http://sobereva.com/439)里专门说了。


Q13:为什么Windows下用Molclus调用Gaussian计算时蹦出Gaussian图形窗口后卡住不动?
A:那是因为你把settings.ini里gaussian_path的路径设成了比如g16w.exe(对于Gaussian 16来说),带w后缀的只是Gaussian 16图形界面这层壳,g16.exe才是真正的Gaussian 16程序本体,gaussian_path必须指定成它的路径。


Q14:为什么Molclus调用xtb不能运行,屏幕上提示诸如:'xtb'不是内部或外部命令,也不是可运行的程序
A:显然是xtb程序没在机子里装好,倘若装好了就直接可以用xtb命令调用xtb程序,自然不会有这种提示。仔细看《将Gaussian与Grimme的xtb程序联用搜索过渡态、产生IRC、做振动分析》(http://sobereva.com/421)了解xtb怎么安装。


Q15:为什么Windows下用Molclus调用Gaussian计算时提示No executable for file l1.exe?
A:没有把Gaussian的文件夹加入GAUSS_EXEDIR环境变量所致。这点在《使用molclus程序做团簇构型搜索和分子构象搜索》(http://bbs.keinsci.com/thread-577-1-1.html)里专门说了,在文中搜GAUSS_EXEDIR。或者你加了但路径没写对,也可能环境变量尚未生效(尝试重启机子再试)。


Q16:genmer产生构型时怎么考虑单分子的构象?是否需要先对单分子做构象搜索?
A:genmer把每个分子当做刚性看待,所以没法考虑。如果单分子的柔性较强,因此形成复合物的时候构象可能发生极大的变化,那么建议使用分子动力学方式产生团簇初始结构的traj.xyz文件。对于柔性分子先对单分子做构象搜索意义不大,毕竟分子间相互作用可能导致复合物中的分子的构象相对于在孤立状态下发生很大变化。


Q17:genmer产生多少个初始构型合适?
A:产生的初始构型越多,显然经过批量优化后遗漏掉能量最低构型的可能性就越低。对于分子较小、分子数较少的团簇的构型搜索,比如水的四聚体,初始构型产生大几十个就足够了。分子越大、分子数越多的团簇,由于势能面维度更高、极小点更多,原理上应该产生越多的初始构型。鉴于调用xtb程序做GFN-xTB级别的初筛耗时非常低(调用GFN-FF分子力场的话耗时更低),优化大几百、上千个都完全不是难事,因此在计算量可以接受的情况下对较大的体系产生的初始构型原则上多多益善。也可以根据之前得到的结果凭直觉判断是不是还有遗漏能量更低构型的可能,如果怀疑有这种可能性,可以让genmer再产生一批构型,让Molclus再次批量优化并续写到之前的isomers.xyz上。


Q18:gentor该旋转哪些键?
A:旋转的键越多,产生的初始构象数显著越多,导致构象搜索耗时明显越高,因此不能太多。只有柔性的、现实环境下易于旋转的键才应该在gentor里要求旋转来产生各种初始构象,这凭借基本常识就能判断。现实中不易旋转的键有:(1)有单套pi共轭作用的键,比如肽键就有pi共轭使其C-N键的旋转势垒巨高、在常温下不可能自发旋转 (2)旋转后会严重破坏之前存在的显著的吸引性的分子内弱相互作用,比如导致破坏好多氢键 (3)旋转后会出现严重的位阻作用而且无法靠旋转其它部分回避。

也不是所有易于旋转的键都应当纳入考虑,这凭常识就能判断,比如甲基虽然在常温下极易旋转,但旋转前后的结构是相同的,自然旋转它毫无意义。

如果你实在缺乏常识,索性用confab产生初始构象,但不像gentor那样有可控性。


Q19:isostat的能量和结构去重阈值怎么设置合适?
A:若无特殊情况就用默认设置即可。阈值多大合适和计算级别的精度无关,而取决于几何优化的收敛精度。默认的去重阈值适合几何优化收敛限偏严的情况(如Gaussian默认的收敛限)。当你用了较宽松的几何优化收敛限,去重阈值也需要相应地放宽。

如果发现得到的cluster.xyz中有肉眼看上去特别接近的结构,说明去重阈值偏小,导致本应该只保留其中一个的情况下多个结构都被保留了,此时可以稍微加大阈值(如变成默认的两倍)重新尝试。但阈值也不能太大,否则能量和结构比较接近的对应实际不同极小点的构象会只保留一个。


Q20:isostat判断重复结构的原理是什么?
A:在《使用molclus程序做团簇构型搜索和分子构象搜索》(http://bbs.keinsci.com/thread-577-1-1.html)里专门说了,仔细看相关部分。


Q21:怎么对过渡态做构象搜索?
A:不小的体系的化学反应只发生在体系的一部分区域,可以叫反应区域,整个反应路径中只有这部分区域的原子涉及的内坐标有特别显著变化、牵扯化学键的改变,基于这点可以做过渡态的构象搜索。首先照常搜索过渡态,然后用gentor对非反应区域做各种二面角的旋转产生traj.xyz,在Molclus做批量优化时用settings.ini里的freeze设置将反应区域的原子冻住,之后照常用Molclus做剩下的构象搜索步骤即可。当然,反应区域和非反应区域会存在一定耦合,非反应区域处于不同构象时反应区域的结构也会多多少少有所不同。因此为了严谨起见,建议以上述构象搜索得到的能量最低一批结构作为初猜再次优化过渡态,并取其中能量最低的过渡态。


Q22:为什么用OpenBabel通过Confab方法产生一批构象时失败?
A:和OpenBabel版本可能有关,读者请下载《将Confab或Frog2与Molclus联用对有机体系做构象搜索》(http://bbs.keinsci.com/thread-20063-1-1.html)里直接提供的OpenBabel版本,并且先确保对帖子里的体系能正常产生构象然后再做自己的体系。并且要参考帖子确保输入的OpenBabel命令合理,包括选项的大小写。OpenBabel不要装到默认的C盘的目录下,免得由于操作系统可能的权限限制导致OpenBabel无法成功创建新文件。也要确保提供给OpenBabel的mol2文件格式合理,参考《谈谈记录化学体系结构的mol2文件》(http://sobereva.com/655)。


Q23:Molclus怎么在超算上用?
A:笔者不用超算,也并未特意考虑Molclus在超算上用的情况。但Molclus是完全可以在超算上跑的,参考以下帖子
《consearch:一键提交slurm的molclus构象搜索脚本》(http://bbs.keinsci.com/thread-43932-1-1.html
《分享molclus配套PBS作业提交脚本》(http://bbs.keinsci.com/thread-15598-1-1.html
《分解合并Molclus任务的小脚本splitMC》(http://bbs.keinsci.com/thread-14361-1-1.html