本帖最后由 冰释之川 于 2023-8-29 08:28 编辑
Molclus官网传送门:http://www.keinsci.com/research/molclus.html
================= Last Updated on 2023.08.23 ==================
2022-Aug-23:Molclus 更新至 1.12,更新内容:ibkout=-1也同时有了ibkout=1的效果。即ibkout=-1时如果有输出文件是被新算出来的,也会被备份。
• 2022-Aug-17 改进了settings.ini里ibkout=-1时的处理:对于且当前目录下有template_SP.inp或template_SP.gjf而自动调用ORCA或Gaussian自动算单点时,如果发现当前目录下有以前备份好的相应文件(如orcaSP00002.out、gauSP00005.out),则Molclus会直接读里面的数据而不会重新计算。
• 2022-Jul-09 Molclus的settings.ini里ibkout新增-1选项。对于调用Gaussian或ORCA的情况,ibkout设为-1时如果发现当前目录下有以前备份好的文件(如gau00002.out、orca00005.out),则Molclus会直接读里面的数据而不会重新计算。
• 2022-Sep-9 Molclus判断traj.xyz中要忽略的结构时支持了对原子间距离更精细的控制。在settings.ini里若将distmax设为0,molclus启动后就会从当前目录下的distrange.txt里读取设置,其中每一行的格式为:原子组1序号 原子组2序号 最近距离 最远距离,距离单位为埃。例如,若此文件内容为1,3-5 2,8 2.5 10.2,就代表1,3,4,5和2,8这两批原子间最小距离必须大于2.5埃,最大距离不能超过10.2埃,如果traj.xyz里某结构违背了这个条件,则这个结构就会被跳过而不计算。distrange.txt里可以设多行,同时满足所有条件的结构才被计算。
• 2022-May-28 修正了一个bug:isostat用-Edis设置判断重复结构的能量阈值时单位转换有问题 • 2022-Jun-8 修正了genmer的$distcons设置存在的bug • 2022-Jun-14 使molclus完全兼容了Windows版xtb
• 2022-Jun-24 修正了molclus调用xtb时settings.ini里freeze设置不生效的bug
分子构象/团簇构型搜索"洗剪吹一条龙"PBS作业提交脚本包(已囊括最新版Molclus程序本体)
Scripts_Molclus_1.12_Linux.7z
(1.03 MB, 下载次数 Times of downloads: 1025)
(对应molclus最新版,删除了isostat的*.ini配置文件,将isostat涉及到的参数直接利用命令行形式传递给isostat本体,届时只需调节*.pbs脚本里./isostat这一行中的控制参数即可) (2023.02.28: molclus_crest.pbs脚本更新为可以直接调用crest对初始结构进行采样)
Scripts_Molclus_1.9.9.3_Linux.7z
(1.02 MB, 下载次数 Times of downloads: 497)
(对应molclus 1.9.9.3版,已经过时了,不建议下载使用)
Molclus Update History
2022-Mar-3:Molclus 更新至 1.9.9.8,更新内容:• genmer组件的genmer.ini里的ishuffle选项现在可以设负值。如果设-N,则前N类分子插入的时候还是按顺序插入,而其余的分子则随机顺序插入。这对于构建很多体系很有用,比如构建某个溶质分子被两类分子混合构成的溶剂层包围,可以在genmer.ini里把溶质设为第一类分子,而第2、3类分子设成两种溶剂分子,并把ishuffle设为-1,这样构造出的体系中溶质分子肯定出现在中心。
2021-Nov-23:Molclus 更新至 1.9.9.7,更新内容:• Molclus的settings.ini里现可以把energyterm参数设为"TD=",此时如果Gaussian模板文件对应的是TDDFT计算,Multiwfn会从Gaussian输出文件里读取TDDFT算的root指定的态的激发态能量。由此可以实现用molclus做激发态构象搜索或者激基复合物构型搜索。
2021-Sep-04:Molclus 更新至 1.9.9.6,2021-Sep-29最后更新,更新内容:• molclus的setting.ini设置文件里现在可以设置热力学量计算程序Shermo(http://sobereva.com/soft/shermo/)的路径和运行参数,当molclus调用Gaussian或ORCA做freq或opt freq任务后会自动调用Shermo来算热力学量,比Gaussian和ORCA自身算热力学数据的代码更灵活、强大、可靠。见《使用molclus程序做团簇构型搜索和分子构象搜索》(http://bbs.keinsci.com/thread-577-1-1.html)里加入的说明。
• genmer组件的genmer.ini设置文件里现在可以在末尾加入一行$distcons,然后下面通过一行或多行,指定一对或多对元素间必须满足的距离范围(没设的话就不做限制),指定特定元素间必须满足的距离范围(没设的话就不做限制),例如写H Mg 2.0就代表氢和镁之间距离不能小于2.0埃,Pt Pt 1.8 3.2代表铂之间距离必须在1.8~3.2埃。违背约束条件的构型会被视为失败而不输出。genmer.ini末尾还可以加入一行$modrad,然后在下面通过一行或多行,对一个或多个元素半径进行修改,比如Pt 3.5就把半径改为了3.5埃。详见《genmer:生成团簇初始构型的超便捷工具》(http://bbs.keinsci.com/thread-2369-1-1.html)里面新加入的说明和例子。
• genmer组件启动时如果发现当前目录下没有genmer.ini,将会提示用户手动输入配置文件路径,因此不是非得叫genmer.ini且放在当前目录不可了。molclus启动时如果发现当前目录下没有traj.xyz和settings.ini,也会直接让用户手动输入它们的路径。 • 修正了一个bug:molclus组件调用OpenBabel时产生的临时xyz文件里元素名都是大写,导致双字符的原子如Cl在OpenBabel用力场计算的时候没法正常指认原子类型。
2021-Aug-28:Molclus 更新至 1.9.9.5,更新内容:• genmer组件的genmer.ini设置文件里现在可以用xmin、xmax、ymin、ymax用于控制分子出现的X、Y范围,和之前版本里的zmin、zmax用处类似。因此目前可以严格控制指定的分子出现的三维空间范围。 • xyz2QC组件的Gaussian模板文件中现在可以使用[FILENAME]占位,产生输入文件时它将被替换为"前缀 帧号",因此可以在模板文件里写比如%chk=/sob/[FILENAME].chk从而使得计算完毕后chk文件以恰当的名字留存在/sob目录下。
2021-Apr-15:Molclus 更新至 1.9.9.4,更新内容:• isostat组件可以通过命令行运行并结合各种参数,更为强大也更便于嵌入到脚本里。比如执行isostat Rize.xyz -Nout 8 -Eout 2.4 -Edis 0.5 -Gdis 0.2 -T 350 -nt 32命令,代表将Rize.xyz 作为输入文件,往cluster.xyz里导出的簇是能量最低的8个且相对能量还必须在2.4 kcal/mol以内。使用0.5 kcal/mol和0.2埃分别作为归簇的能量和几何偏差判据。计算Boltzmann分布使用350K。使用32个线程并行计算。凡是通过命令行指定的参数就不需要在交互式界面里再输入。
2021-Feb-11:Molclus 更新至 1.9.9.3,更新内容:• genmer的genmer.ini文件中现在允许写noxrot、noyrot、nozrot分别要求单体不能绕X、Y、Z轴随机旋转。也可以同时写两个,比如noxrot noyrot要求单体只能绕Z轴随机旋转。
2020-Dec-28:Molclus 更新至 1.9.9.2,更新内容:
• 解决了某些情况下Gaussian几何优化没收敛时Molclus会卡住的问题。
2020-Dec-10:Molclus 更新至 1.9.9.1,更新内容:• 当molclus的settings.ini的igaucontinue=1时,如果Gaussian做优化失败后基于template2.gjf继续优化还没成功,这个新版本程序会试图基于当前目录下的template3.gjf继续进行优化,因此用户对于难收敛的情况可以有更多备选方案。 • settings.ini里对ORCA用户新增了ibkhess选项。若=1且任务涉及到振动分析,ORCA产生的.hess文件会被自动备份为 orca[序号].hess文件,便于用户之后重新利用Hessian。
2020-Nov-16:Molclus 更新至1.9.9,更新内容:
• 加入了mol2_xyz组件,主要用于将Frog2构象生成程序产生的多帧mol2文件转换成traj.xyz文件,这种做法的意义见molclus新的教程《将Confab或Frog2与Molclus联用对有机体系做构象搜索》。
• 新特性:当当前目录下出现名为STOP的文件时,molclus对traj.xyz里各个结构的循环将被强行终止(每开始算一个新的结构时探测一次)。因此在当前目录下创建名为STOP的文件是一种优雅的强制结束molclus运行的做法。
• 新特性:如果isomers.xyz是molclus做优化+振动分析或振动分析任务产生的,isostat在处理时会报告哪些构型存在虚频。
• 改进:支持了目前最新版的crest程序输出的crest_ensemble.xyz
2020-Oct-18:Molclus 更新至1.9.8,更新内容:
• 显著加快了isostat排序时候的速度,对于帧数非常多的情况甚至比老版本快一个数量级。
• 当molclus的settings.ini中iappend=1(续写模式)时,程序启动时不会自动将当前目录下.out、.chk、orca开头的文件删掉(因为这些可能是之前用ibkout、ibkchk等选项保留下来的有意义的文件)。
• 让ibkout、ibkchk等选项保留出来的文件的文件名中的序号与traj.xyz里帧号保持了一致(以前版本总是从1开始计)。这使得利用iappend=1时可以跑多次molclus将traj.xyz里的所有帧分别算完,确保每次备份出来的文件序号不会彼此覆盖
2020-Oct-14:Molclus 更新至1.9.7,更新内容:
• molclus的settings.ini里新增加了iappend选项。如果设为1,新产生的结构会累加到当前目录下之前的isomers.xyz文件(如果有的话)末尾。如果为0,则原先的isomers.xyz会被新的数据覆盖。
• gentor的gentor.ini中若在旋转设置后面空一行写上reportfail=1,则会将未通过检查的构象的失败原因显示出来,判断是由于哪些原子间距离太近导致未通过检测。默认的critskip参数的阈值从0.8减小为了0.75,避免含有氰基的时候容易出现难以通过检测的情况。
• 如果运行gentor时当前目录下没发现mol.xyz或gentor.ini,会提示用户直接输入这两种文件的路径(文件名随意)
2020-Jul-12:Molclus 更新至1.9.6,更新内容:
解决了itask=3且没有基于单点模板文件自动做高精度单点计算的时候,在isomers.xyz里记录的能量为0的bug(本应记录的是freq任务给出的自由能)
2020-May-31:Molclus 更新至1.9.5,更新内容:
isostat工具支持并行处理。
2020-Apr-21:Molclus 更新至1.9.4,更新内容:
修正了itask=3且没有提供单点任务模板文件时给出的能量有误的bug。
2020-Feb-11:Molclus 更新至1.9.3,更新内容:
isostat支持了处理crest程序的-mdopt任务的输出的xyz文件。利用crest的-mdopt模式调用xtb做批量优化的耗时比molclus调用xtb做批量优化能低一个数量级。
crest可执行程序在xtb的github页面上就能下载到。Molclus调用xtb时是对traj.xyz文件里的结构一个接一个来优化的,xtb在执行时是用OMP_NUM_THREADS环境变量指定的线程数做并行计算。而crest调用xtb来优化时,会同时启动OMP_NUM_THREADS个xtb程序同时对输入的xyz里的结构进行批量优化,每个xtb都只用单线程。crest这种方式调用xtb做批量优化的总耗时明显更低。
具体来说,运行以下命令就可以在GFN0-xTB级别下用normal几何优化收敛限(这是xtb默认的收敛限)对traj.xyz里所有结构进行优化:
/sob/crest -mdopt traj.xyz -gfn0 -opt normal -niceprint
其中/sob/crest是crest可执行文件路径,-niceprint代表计算过程中显示进度条。还可以用-chrg指定体系净电荷数,-uhf指定自旋,-g [溶剂名]指定溶剂模型。
本帖的PBS脚本同步更新(2020.05.31 支持Molclus 1.9.5及之后版本):
1. 新增molclus_crest.pbs作业提交脚本:
其中 :
- crest traj.xyz -mdopt traj.xyz -gfn 1 -opt normal | tee ./results/info_crest.txt # Select GFN-xTB level
复制代码 这一行酌情修改计算级别和其它参数。
所有输出文件放在 results文件夹下。
温馨提示:在运行本脚本前,先把crest可执行文件放置在与xtb可执行文件的同一目录下
crest-191220.tar.xz
(4.64 MB, 下载次数 Times of downloads: 229)
crest.2.12.zip
(6.92 MB, 下载次数 Times of downloads: 87)
(2022.06.26上传)
2.新增md_xtb.pbs作业提交脚本,利用xtb程序跑MD进行结构采样,从而产生一大批初始结构供molclus/crest进一步使用。
2020-Feb-5:Molclus 更新至1.9.2,更新内容:
1. 已支持在振动分析(itask=2)或优化+振动分析(itask=3)之后自动用高精度级别算单点能,从而直接给出较好精度的自由能。具体做法是在当前目录下提供template_SP.gjf(template_SP.inp)文件,设置Gaussian(ORCA)高精度单点计算的关键词,格式同template.gjf(template_SP.inp)。之后,当优化或优化+振动分析任务结束后,程序发现当前目录下有template_SP.gjf(template_SP.inp)时就会用其中的信息构成单点任务文件并调用Gaussian(ORCA)计算,并自动将新的单点能与自由能热校正量相加作为最终能量输出。几个细节:
(a)如果template_SP.gjf和template_SP.inp同时存在,优先考虑template_SP.inp。
(b)opt、opt freq任务用的程序与自动算高精度单点的可以不同,比如iprog=1调用Gaussian时也可以通过提供template_SP.inp来令程序自动调用ORCA算高精度单点。
(c)利用template_SP.gjf基于Gaussian自动算高精度单点时,Gaussian用户还需在settings.ini里对energyterm参数恰当设置,用于指定如何读取这个级别的单点任务输出文件里的能量。
2.为提升灵活性,molclus支持了直接指定设置文件和初始结构文件的路径。例如molclus /RAS/Layer.ini代表将/RAS/Layer.ini作为设置文件。再比如molclus lock.ini /RAS/chu2.xyz代表用当前目录下的lock.ini的设定对/RAS/chu2.xyz里的结构进行计算。
本帖的PBS脚本也同步更新:
1. molclus以及isostat程序对应的参数文件*.ini统一放在ini文件夹下;
2. 所有的输出文件全部放在results文件夹下;
3. 所有的template模板文件全部放在templates文件夹下;
4. 增加molclus_g16orca.pbs提交脚本,以配合molclus 1.9.2新增的“自动将高精度单点能与自由能热校正量相加作为最终能量输出”,这里我选用Gaussian优化结构+ORCA计算单点能这一方案。
---------------------------------------- 我是优雅的分割线(以下内容针对Molclus早期版本,部分描述已经过时,故而仅供参考)-------------------------------------------
最近需要用到molclus对一些分子进行构象搜索,鉴于很多小白不知道如何在集群上跑molclus,故在此分享一下鄙人编写的PBS作业提交脚本,在此感谢钟成大叔对该脚本编写的指导。
1. 本脚本调用的程序和计算级别:
(1) 用gentor产生初始构象
(2) 用molclus结合xtb程序采用GFN1-xTB方法进行初筛
(3) 对上一步归簇后的结构,用molclus结合Gaussian在B3LYP-D3(BJ)/6-31G*级别下对这些构象进行优化和振动分析,取能量最低的20个结构。
(4) 对上一步选出的结构,用ORCA在RIJK-DLPNO-CCSD(T)/def2-QZVPP计算级别下算单点能。
为了能够灵活控制molclus程序在调用xtb,Gaussian和ORCA三个程序时的参数选项,鄙人将整个构象搜索流程分解为xtb, Gaussian, ORCA三个部分,相应的PBS脚本分别名为:molclus_xtb.pbs,molclus_g16.pbs和molclus_orca.pbs,然后按次序执行提交任务。
2. 文件说明:
打开molclus_PBS软件包会发现,相比原始的molclus程序,多了settings1.ini,settings2.ini和settings3.ini,以及isostat_xtb.ini,isostat_g16.ini和isostat_orca.ini文件,前者settings*.ini文件包含molclus调用xtb,Gaussian和ORCA时所设置的调用参数(具体设置参见《使用molclus程序做团簇构型搜索和分子构象搜索》中的2.3节),后者isostat_*.ini则是用来控制isostat归簇程序的,具体来说:
第一行是设置"Input the path of input file, e.g. c:\sob\lovelive\nico.xyz" [If press ENTER directly, isomers.xyz in current folder will be loaded]
第二行是设置"Input the energy threshold for distinguishing different clusters e.g. 0.5 (in kcal/mol)" [If press ENTER directly, 0.25 kcal/mol will be used]
第三行是设置"Input the geometry threshold for distinguishing different clusters e.g. 0.25 (in Angstrom)" [ If press ENTER directly, 0.1 Angstrom will be used]
在这里,isostat_*.ini中前三行都空着(直接回车),代表使用默认参数,而在isostat_orca.ini的第四行,我设置了298,则是让isostat程序输出该温度下的玻尔兹曼分布(利用orca计算的高精度电子能量近似为自由能)。
3. PBS脚本解析:
(1) molclus_xtb.pbs (脚本代码已过时,以最新版代码为准)
- #!/bin/bash
- #PBS -N molclus_xtb
- #PBS -l nodes=1:ppn=32
- #PBS -l walltime=1440:00:00
- #PBS -q gentai
- #PBS -o jobID.$PBS_JOBID
- export OMP_NUM_THREADS=32 # CPU cores for xtb
- export MKL_NUM_THREADS=32 # CPU cores for xtb
- export OMP_STACKSIZE=3000m # memory for xtb
- cd $PBS_O_WORKDIR
- touch jobID.$PBS_JOBID
- chmod +x ./molclus
- chmod +x ./isostat
- chmod +x ./gentor/gentor
- chmod +x ./genmer/genmer
- cd gentor
- echo "\n" | ./gentor # generate initial input geometries
- wait
- mv traj.xyz ../
- cd ..
- mv settings1.ini settings.ini
- ./molclus | tee info_xtb.txt # start molclus with xtb
- wait
- mv settings.ini settings1.ini
- ./isostat > summary_xtb.txt < isostat_xtb.ini # Analyze and classify the optimized geometries into the clusters
- wait
- rm traj.xyz
- mv cluster.xyz cluster_xtb.xyz
复制代码 这里需要用户设置xtb程序所使用的CPU并行核数以及每个核所使用的内存,该脚本囊括gentor批量生成初始结构traj.xyz以及使用xtb进行优化初筛两部分,计算结果文件info_xtb.txt,summary_xtb.txt和cluster_xtb.xyz,分别对应molclus主程序、isostat归簇程序的输出信息以及xtb下归簇后的结构文件。
(2) molclus_g16.pbs (脚本代码已过时,以最新版代码为准)
- #!/bin/bash
- #PBS -N molclus_G16
- #PBS -l nodes=1:ppn=32
- #PBS -l walltime=1440:00:00
- #PBS -q gentai
- #PBS -o jobID.$PBS_JOBID
- cd $PBS_O_WORKDIR
- touch jobID.$PBS_JOBID
- chmod +x ./molclus
- chmod +x ./isostat
- chmod +x ./gentor/gentor
- chmod +x ./genmer/genmer
- cp cluster_xtb.xyz traj.xyz # use the cluster file generated by xtb
- mv settings2.ini settings.ini # the "ngeom= 10" in the settings2&3.ini files is set!
- ./molclus | tee info_g16.txt # start molclus with G16
- wait
- mv settings.ini settings2.ini
- ./isostat > summary_g16.txt < isostat_g16.ini # Analyze and classify the optimized geometries into the clusters
- wait
- rm traj.xyz
- mv cluster.xyz cluster_g16.xyz
复制代码 注意:在运行这个脚本之前,请先设置settings2.ini文件中"ngeom="参数,让molclus知道调在用Gaussian时,从上一步cluster_xtb.xyz结果文件中抽取计算多少个结构(我这边默认是15个结构,可以自行酌情更改)。
(3) molclus_orca.pbs (脚本代码已过时,以最新版代码为准)
- #!/bin/bash
- #PBS -N molclus_ORCA
- #PBS -l nodes=1:ppn=32
- #PBS -l walltime=1440:00:00
- #PBS -q gentai
- #PBS -o jobID.$PBS_JOBID
- cd $PBS_O_WORKDIR
- touch jobID.$PBS_JOBID
- chmod +x ./molclus
- chmod +x ./isostat
- chmod +x ./gentor/gentor
- chmod +x ./genmer/genmer
- cp cluster_g16.xyz traj.xyz # use the cluster file generated by G16
- mv settings3.ini settings.ini # the "ngeom= 10" in the settings2&3.ini files is set!
- ./molclus | tee info_orca.txt # start molclus with ORCA
- wait
- mv settings.ini settings3.ini
- ./isostat > summary_orca.txt < isostat_orca.ini # Analyze and classify the optimized geometries into the clusters
- wait
- rm traj.xyz
- mv cluster.xyz cluster_orca.xyz
复制代码 注意:在运行这个脚本之前,请先设置settings3.ini文件中"ngeom="参数,让molclus知道调在用ORCA时,从上一步cluster_g16.xyz结果文件中抽取计算多少个结构。
|