如何用python和shell做理论计算

  • Post author:
  • Post category:python


心血来潮想写一篇帖子,一来是想总结下最近的收获,二来也想与各位相互探讨一下

初识python是因为课题组需求,对具有不同尺度和构型的富勒烯进行半经验的结构优化。

前处理(也就是生成输入文件)及后处理(提取能量及排序)主要使用open方法去读写文件,另外就是需要学习正则表达式,利用的是re库的findall方法,以便准确找到输出文件中的能量;

中间的计算过程是在linux操作系统下进行的,使用的是shell语言,调用Gaussian。比起python,shell语言更容易上手,很少的代码量就能执行很复杂的功能,我给出几个常用的命令:

cd    进入某一目录

sed    修改、删除、添加文件中指定行的内容

grep    用来搜索指定文件的指定字符串,输出包含字符串的行

awk    指定分隔符(比如空格,abc,123)分隔指定的行(可以是grep输出的行),输出特定位置的字符串

for循环或which循环

if判断

>文件重定向

>>文件追加

|    管道,上一个命令的输出作为下一条命令的输入,常用做法:grep 字符串 文件名 | awk -F ‘[,]’ ‘{print $1,$2,$5}’  此命令的含义是先grep一个文件找到包含字符串的所有行,然后在这些行中以,为分隔符将行分为多个段,最后输出第1、2、5段的字符

python由于可以使用第三方库,使得其使用领域极为宽泛,这里针对计算化学,我推荐几个常用且好用库

pymatgen    可以用于vasp、gaussian、abinit、lammps、QE等多个模拟软件的输入生成和后处理,其中针对vasp的后处理极为全面,建模和后处理功能极其强大。

pymatgen.analysis.defects package — pymatgen 2022.0.8 documentation

openbabel    用于分子结构的建模或可视化,甚至包含类似gaussian、MS的clean功能,即利用分子力场(uff、mmff94、guff等)快速优化结构,用分配了2核4g内存的虚拟机优化一个80原子左右的结构用时0.03s,另外还支持结构转smiles及smiles转结构功能,安装此库需要限制python版本为3.7以下。

Python — Open Babel v2.3.1 documentation

RDkit    功能上类似于openbabel,个人认为openbabel好用,弊端是此包解析gaussian和MS生成的mol文件会出错,此包生成的mol文件与前者格式不同。

The RDKit Documentation — The RDKit 2021.03.1 documentation

ase    提供了非常多计算软件的接口,几乎包含了所有主流模拟计算软件,另外自身也包含了BFGS等优化算法以及四个简陋的calculator,多数用不上,主要是利用其接口。

Atomic Simulation Environment — ASE documentation (dtu.dk)

moapc    此包是软件mopac的接口,主要功能是利用半经验方式优化结构,没有动力学功能,也就是说无法利用成键信息(mol文件)优化结构。

目前先整理这么多,后续再做继续补充吧



版权声明:本文为qq_40983842原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。