1.前言

高斯(Gaussian)是一个功能强大的量子化学综合软件包,所有从事计算化学相关领域的科研工作者应该都使用或者了解过这个软件。它的输出文件(.log文件)是一个文本文件,可以利用文本工具打开,其中包含了这个计算任务的所有计算过程以及计算结果,而我们关心的可能只是其中的一小部分信息。我们可以借助简单的python脚本将我们需要的信息提取出来。本文将介绍如何使用python脚本提取优化任务中的最后一个结构,以及这个结构的电子能,自由能校正等信息。

2.工具

GaussView 6

Gaussian 16

Python 3.7

3.创建计算任务

我们先利用GaussView构建一个高斯计算任务,笔者用乙苯的优化作为例子来说明。手搭的乙苯结构

保存计算任务,用文本编辑工具比如notepad++来设定为这个计算任务分配的计算资源。我这里设置的是8核,6GB,用的方法/基组是B3LYP/6-31G(d)。用notepad++设置计算资源

接着执行这个计算任务,计算的结果会存在.log文件中。这个log文件就是我们后面需要从中读取信息的文件。

4.从高斯的计算结果文件中读取信息

在读取计算结果之前,我们首先要确认计算任务是否正常结束。用notepad++打开log文件,拉到文件最后看到正常结束的计算任务log文件末尾

任务正常结束。我们打开GaussView可以查看优化得到的结构和这个结构的电子能数据和热力学矫正数据,这个任务总共优化了17步,我们用脚本读取的数据就是第17步的这个结构的坐标和这个结构对应的能量数据,即下图右边红框数据。用GaussView查看计算结果

log文件中的信息非常多,因此为了从log中得到这些信息,我们首先需要知道这些信息在log文件的哪些地方。

首先是结构的坐标,它们都存在log文件中的Standard orientation这个标签下。因此如果我们要获得最终优化好的结构的三维坐标,我们只需要找到log文件中的最后一个Standard orientation标签,并把这个标签下面的内容读取出来。Stardard orientation标签下的内容

实现逻辑非常简单,首先用脚本找到所有的Standard orientation行的行号,在这个文件中有18个,我们选择最后最后一个行号,我们假设是i,根据Standard orientation标签的结构特点,坐标的起始行数就是i+5,如果我们知道这个分子有n个原子,那么坐标的结尾行号就是i+5+n。而log文件中有一些行中在NAtoms后面写明了这个分子有多少个原子。从NAtoms中得知这个分子有多少原子

因此,很容易的我们就能写出读取坐标的代码

atomicnum2elemnt = {1:'H',6:'C'}

log_file = 'The path of your .log file' # e.g. log_file = 'C:/Users/silly/Desktop/ethylbenzene.log'

with open(log_file,'r') as fr:

lines = fr.readlines()

coord_start_index_list = []

for i,line in enumerate(lines):

if 'NAtoms=' in line:

atom_num = eval(line.split()[1])

if 'Standard orientation' in line:

coord_start_index_list.append(i+5)

coord_string = lines[coord_start_index_list[-1]:coord_start_index_list[-1]+atom_num]

coord = [[eval(item.strip().split()[3]),eval(item.strip().split()[4]), eval(item.strip().split()[5])] for item in coord_string]

atom_type = [atomicnum2elemnt[eval(item.split()[1])] for item in coord_string]

Coord = ''

for tmp_coord,tmp_atom in zip(coord,atom_type):

Coord += '%2s %15f %15f %15f\n'%(tmp_atom,tmp_coord[0],tmp_coord[1],tmp_coord[2])

通过以上代码我们将三维坐标信息存在了coord变量里,元素信息存在了atom_type变量里,然后重新写了一个Coord字符串保存可以写进文件里的分子坐标。成功将坐标信息提出并存入字符串变量Coord

接下来我们用类似的方法读取我们需要的能量信息。其实操作和上面提取坐标的操作大同小异,我们只需要知道这些能量信息在哪些行,然后定位到这些行然后读取这些信息即可。由于每一个优化的结构都会给出一个电子能,因此对于电子能我们只取最后一个结构的电子能,而其他热力学校正的数据只会出现一次,因此直接读就完事了。记录能量信息的行

log_file = 'The path of your .log file' # e.g. log_file = 'C:/Users/silly/Desktop/ethylbenzene.log'

with open(log_file,'r') as fr:

lines = fr.readlines()

EE_list = []

TCH = 0

TCG = 0

for line in lines:

if 'SCF Done' in line:

EE_list.append(eval(line.split()[4]))

elif 'Thermal correction to Enthalpy' in line:

TCH = eval(line.strip().split()[4])

elif 'Thermal correction to Gibbs Free Energy' in line:

TCG = eval(line.strip().split()[6])

EE = EE_list[-1]

EE中保存了最后一个结构的电子能,TCH中保存了焓校正,TCG中保存了自由能校正。

5.结束语

这个脚本是笔者一年多前刚进入现在所在的课题组的时候写的,是一个入门级的python脚本,当然,目前这个版本的脚本比一年前的版本要高明不少因此也简洁不少。只要会python的文件操作并且了解log文件的构成就能出一堆类似的脚本。以上展示的只是读取这些信息的关键步骤,这些读出来的信息后续如何使用读者们可以自己发挥。

如果这个脚本对你有帮助,请麻烦你给这篇文章点个赞。如果有任何问题可以在评论区留言,也可以私信我。

如何写python脚本抓取数据并计算_【小工具】利用Python脚本从Gaussian计算结果中提取信息...相关推荐

  1. 如何使用Python爬虫抓取数据?

    Python爬虫应用十分广泛,无论是各类搜索引擎,还是日常数据采集,都需要爬虫的参与.其实爬虫的基本原理很简单,今天小编就教大家如何使用Python爬虫抓取数据,感兴趣的小伙伴赶紧看下去吧! 工具安装 ...

  2. python抓取数据时失败_爬取数据缺失的补坑,Python数据爬取的坑坑洼洼如何铲平...

    渣渣业余选手讲解,关于爬取数据缺失的补坑,一点点关于Python数据爬取的坑坑洼洼如何铲平,个人的一些心得体会,还有结合实例的数据缺失的补全,几点参考,仅供观赏,如有雷同,那肯定是我抄袭的! 在使用P ...

  3. python爬虫抓取数据的步骤-Python爬虫抓取手机APP的传输数据

    大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1.抓取APP数据包 得到超级课程表登录的地址:http://120.55 ...

  4. 小程序素材抓取_PS人的效率小工具,超多设计素材下载就靠它!

    Python是当下流行的通用编程语言,简单易学.容易上手,且"钱"景广阔.在网络爬虫.数据挖掘分析.人工智能.运营运维.日常工作效率提升,无不有Python的影子.如果你此时正在找 ...

  5. python可抓取数据包括什么_Python对JS型数据抓取有什么特别好的方法吗,pythonjs型抓取,想写一个爬虫,但是需要抓...

    Python对JS型数据抓取有什么特别好的方法吗,pythonjs型抓取,想写一个爬虫,但是需要抓 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓到呢? 最好是用pyt ...

  6. Python爬虫抓取数据时怎么防止ip被封

    大数据公司在做数据分析的时候,对目标网站频繁访问很容易触发网站的反爬机制,因此如果想要突破限制只能使用动态ip频繁切换地址模拟真实客户访问网站才能起到防封效果.比如在做数据抓取的时候报错403等限制访 ...

  7. python写入excel表格数据绘制图表_(原创)xlsxwriter,python excel 写入数据\图表等操作_图表操作(二)...

    前面分享了使用xlsxwriter创建excel和写入数据GUC:(原创)xlsxwriter,python excel 写入数据\图表等操作_创建.写入(一)​zhuanlan.zhihu.com ...

  8. 学完python基础后应该学什么专业_小白刚入门Python,学完基础后,接下来的学习步骤!...

    需要多长时间来学习Python自学?如果是自学,学习python从零基础,这将需要大约半年到一年半的时间,这取决于每个人的理解.当然,如果你有其他编程语言的经验,开始比较快.大约需要2 ~ 3个月用P ...

  9. 把python语言翻译出来_Python语言实现翻译小工具(Python打包成exe文件)

    本文主要向大家介绍了Python语言实现翻译小工具(Python打包成exe文件),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 1.环境 windows10 python3.5 ...

最新文章

  1. WCF客户端不能用在Using语句块中,因为它可能会抛出不可预知的异常。即使你捕获了异常,仍有可能一直保持连接。...
  2. 从四个点来讲透OKR怎么设置的?
  3. PLM与MDM的集成
  4. 北大电池新研究登上Nature:3万次循环测试,性能衰减不到30%,大幅提高锂空电池性能...
  5. spring boot整合JPA实现多条件查询并分页
  6. 数据分析Python:sklearn数据预处理中fit(),transform()与fit_transform()的区别
  7. 使用Arquillian(包括JPA,EJB,Bean验证和CDI)测试Java EE 6
  8. 辛苦俩月总结的面试题,掌握它怼翻面试官不是梦~
  9. 小程序弹出层禁止列表滑动_是时候展现真正的技术了!小程序教程来了——百战Web前端课程更新05.07...
  10. 分布式存储数据库的Key的随机分布(RP)和顺序分布(OPP)
  11. 2021美赛A题元胞自动机解法(M奖)
  12. 基于单片机的温度监测系统设计(#0411)
  13. 微信小程序父子组件传值
  14. 好用的手机识别文字软件推荐,你都知道几个呢?
  15. 【它山之玉】慎重选择博士后(或博士生)导师-科学网马臻
  16. 就业喜报|最高薪资15K,平均7216元,这个双十一不做“吃圭人”!
  17. html课堂考勤系统源码,考勤管理系统课程设计源码
  18. 是否可以同时学习两门编程语言?——我的语言学习经验告诉我不行
  19. 软件测试之构建测试---BVT
  20. 房地产稳经济作用正在显现

热门文章

  1. 《深度探索C++对象模型》--5 构造析构拷贝 6 执行期语意学
  2. Programming Computer Vision with Python (学习笔记五)
  3. 微信支付在巴黎发布“智慧生活零时差”全球战略
  4. 普及移动办公大业,促进数字转型升级——中国移动办公专家顾问团即将盛大亮相...
  5. 《Effective Java》学习笔记 第二章 创建和销毁对象
  6. 使用Java操作Redis(二)
  7. Pattern-No.03 设计模式之策略模式
  8. Centos 6.5 64位双网卡绑定
  9. 在Asp.Net MVC中使用ModelBinding构造Array、List、Collection以及Dictionary
  10. jQuery源码 Ajax模块分析