计算化学公社

标题: Gaussian gjf文件转Dalton mol文件的Python脚本 [打印本页]

作者
Author:
nanhuayu    时间: 2017-8-30 20:19
标题: Gaussian gjf文件转Dalton mol文件的Python脚本
本帖最后由 nanhuayu 于 2017-8-31 10:00 编辑

前段时间写dalton文件,转mol文件时特别麻烦,顺手写了个python脚本转换。
不知道大家是否有类似需求。

  1. import sys

  2. print(sys.argv)
  3. filename = sys.argv[1]
  4. with open(filename, 'r',encoding='utf8') as f:
  5.     tmpstr = f.read()

  6. molstr = tmpstr.split("\n\n")[2]
  7. molstrlist = [[j for j in i.split(" ") if j] for i in molstr.split('\n') if i][1:]

  8. #print(molstr)
  9. #[print(i) for i in molstrlist[:5]+molstrlist[-1:]]

  10. molnamelist = dict()
  11. for i in range(len(molstrlist)):
  12.     if molstrlist[i][0] in molnamelist:
  13.         molnamelist[molstrlist[i][0]].append(i)
  14.     else:
  15.         molnamelist[molstrlist[i][0]]=[i]

  16. print(molnamelist)

  17. def getlist(listname):
  18.     count = len(molnamelist[listname])
  19.     retlist = ["  ".join(molstrlist[i]) for i in molnamelist[listname] ]
  20.     return count, retlist


  21. dalheadstr = "BASIS\n3-21G\n{0}\n------------------------\nAtomTypes={1} NoSymmetry Angstrom\n"
  22. with open(filename[:-4]+".mol",'w',encoding='utf8') as f:
  23.     f.write(dalheadstr.format(filename[:-4],len(molnamelist)))
  24. for i in molnamelist:
  25.     #print(i)
  26.     count, atomstr = getlist(i)
  27.     with open(filename[:-4]+".mol",'a',encoding='utf8') as f:
  28.         f.write("Charge={0} Atoms={1}\n".format(i,count))
  29.         f.write("\n".join(atomstr) + "\n")
复制代码



作者
Author:
wangyj    时间: 2017-8-31 09:54
弱弱的说一句,题目打错了,应该是转不是传吧,我有点强迫症。。。
作者
Author:
nanhuayu    时间: 2017-8-31 10:00
wangyj 发表于 2017-8-31 09:54
弱弱的说一句,题目打错了,应该是转不是传吧,我有点强迫症。。。

群众的眼睛果然是雪亮的
作者
Author:
哇哇吐    时间: 2017-12-21 09:22
请问大神这个要怎么用,我最近也在学dalton。谢谢。

作者
Author:
sobereva    时间: 2017-12-21 17:41
哇哇吐 发表于 2017-12-21 09:22
请问大神这个要怎么用,我最近也在学dalton。谢谢。


你可以用Multiwfn(http://sobereva.com/multiwfn)载入pdb,xyz,mol,fch,molden等等含有结构信息的文件,用主功能100的子功能2产生Dalton的简单任务的输入文件,然后再改关键词
作者
Author:
nanhuayu    时间: 2018-1-22 15:48
哇哇吐 发表于 2017-12-21 09:22
请问大神这个要怎么用,我最近也在学dalton。谢谢。

有一段时间没看帖子了。。。
推荐使用sobereva老师的multiwfn
使用方法为python gjf2mol.py *.gjf
推荐使用python3
作者
Author:
abin    时间: 2018-8-10 20:39
~/dalton/tools/xyz2dalton

babel -i g09 XXX.log -o xyz YYY.xyz
xyz2dalton < YYY.xyz > CCC.mol

Read the f**king manuals.




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