计算化学公社

标题: 拟合基频和ZPE校正因子、读取不同校正因子热力学数据的小程序 [打印本页]

作者
Author:
snljty    时间: 2020-4-28 20:42
标题: 拟合基频和ZPE校正因子、读取不同校正因子热力学数据的小程序
本帖最后由 snljty 于 2022-2-7 13:21 编辑

不确定主题分类对不对...

卢老师在http://bbs.keinsci.com/thread-6907-1-1.html提到了Truhlar他们做的一个数据集,可以用来拟合基频和零点能的非谐振校正因子,并提到可能会写一个小程序直接拟合,不过考虑到卢老师日理万机,这种小程序大概没什么时间写的吧。最近正好要用这个功能,就自己写了一下,调用Gaussian程序。


代码稍微修改一下也可以用于别的软件,不过Gaussian的二阶解析导数计算效率还是比较好的。

代码不能说好看吧,但是应该也不是太丑。如果以后有了别的更好的数据集,改一下源代码中定义一共有几组数据的宏,和控制Gaussian输入文件的部分就行。
如果有简并的频率,数据集中应该只填写一个,这样比较合理。当本程序读取Gaussian输出文件时候发现简并或者(数值原因)接近简并的频率时,会自动取平均只保留一个数值。

使用方法,按照提示交互式使用即可。也可以直接在命令行参数输入计算级别。
使用前请务必保证你的Gaussian16安装目录比如C:\G16W\被加入了环境变量PATH,而且环境变量GAUSS_EXEDIR也被设置成了这个目录。具体的操作可以参考卢老师的http://bbs.keinsci.com/thread-577-1-1.html相关内容。

本程序会生成Gaussian的15个数据集优化和频率计算的输入文件,调用Gaussian计算,读取输出文件中的分子的频率,然后进行过原点的拟合并输出结果。
一个小的瑕疵是这里原理上不应该直接用(统计意义的线性)相关系数描述拟合效果,因为这是强制过原点的拟合。一个例子是{1, 2, 3, 4, 5}和{101, 102, 103, 104, 105}的r^2是1,但是显然没法画一条过原点的直线拟合。我不清楚Origin用的什么方法,改用决定系数而不是线性相关系数的平方似乎也不妥。一个思路是把所有数据取相反数再拼到一起,再计算线性相关系数。这时候直接用最小二乘回归和用强制过原点的线性回归结果显然相同。比如{-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5}和{-105, -104, -103, -102, -101, 0, 101, 102, 103, 104, 105}的r^2就只有0.83了。本程序目前没考虑这个问题,因此给出的r^2仅供参考。


(, 下载次数 Times of downloads: 35)


#########################################################################################################


之前写过一个读取Gaussian应用不同频率校正因子处理的热力学数据的小程序。
通常ZPE,ΔH(0K -> T),S(T)的校正因子是不同的,但是Gaussian不管计算时候指定scale=还是用freqchk工具,一次都只能指定一个校正因子,而且输出文件有些数据没有直接提供,还要手动做加减法。
本程序可以输入ZPE,ΔH(0K -> T),S(T)各自的校正因子,读取之前计算频率的chk/fchk/fch文件,调用freqchk重新计算配分函数,然后读输出文件,并输出分别校正三者以后相加(准确地说,第三项加的是-TS(T))的总的热力学(对单点能的)校正量。
计算前和上面一样要先设置好GAUSS_EXEDIR(这里可能不需要?)和PATH。


本程序常规用法是交互式按提示输入,但是图省事也有多种命令行参数的快捷使用方式。具体不再阐述,命令行参数提供--help或者-h就可以查询。


(, 下载次数 Times of downloads: 19)


这两个程序测试过,编译成Linux版没有问题。


欢迎反馈。









作者
Author:
sobereva    时间: 2020-4-29 01:43
这个目的的程序之前我的同事已经完成了(也是基于Python),内置了我专门汇总的非常大的数据集(是所有已发表的频率校正因子文章里用的数据集的并集,且手动去除了不可靠的数据,并且对有机和无机类型情况分类处理),直接可以拟合出高质量、可靠的校正因子,支持多种拟合形式(对不同频率区间考虑不同权重),可以对一批理论方法和一批基组一次性完成拟合,计算完的数据都会汇总成库可以重复利用。之后此程序会用来构建一个超大规模的、迄今最完整的频率校正因子数据库,届时数据库的文章和程序文章会一起发表。

一次性考虑不同频率校正因子之前我有个.sh脚本,在基础量化班里讲。现在我正在写的shermo 2.0直接支持了这个特征,并且直接读Gaussian输出文件从头来计算热力学量,免得用户忘了存chk文件的时候还得重算一次。

作者
Author:
quanta    时间: 2024-10-14 13:28
sobereva 发表于 2020-4-29 01:43
这个目的的程序之前我的同事已经完成了(也是基于Python),内置了我专门汇总的非常大的数据集(是所有已发 ...

sob老师,您这里提到的您同事的文章和程序在哪里找
作者
Author:
sobereva    时间: 2024-10-16 20:22
quanta 发表于 2024-10-14 13:28
sob老师,您这里提到的您同事的文章和程序在哪里找

尚未发表




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