请选择 进入手机版 | 继续访问电脑版
本论坛在12月4日~12日期间暂停发新帖功能。给带来的不便敬请谅解!

计算化学公社

 找回密码
 现在注册!
查看: 1069|回复: 6

[Dalton] Gaussian gjf文件转Dalton mol文件的Python脚本

[复制链接]

11

帖子

0

威望

450

eV
积分
461

Level 3 能力者

发表于 2017-8-30 20:19:23 | 显示全部楼层 |阅读模式
本帖最后由 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")
复制代码


评分

参与人数 7eV +32 收起 理由
pompy + 2
哇哇吐 + 3 牛!
wangyj + 4 谢谢分享
zsu007 + 5 赞!
ggdh + 5 谢谢分享
sobereva + 8
muxijiao + 5 好物!

查看全部评分

107

帖子

1

威望

1033

eV
积分
1160

Level 4 (黑子)

发表于 2017-8-31 09:54:35 | 显示全部楼层
弱弱的说一句,题目打错了,应该是转不是传吧,我有点强迫症。。。
人丑就该多读书,嘴拙最好少说话。
行百里者半于九十,戒骄戒躁。

11

帖子

0

威望

450

eV
积分
461

Level 3 能力者

 楼主| 发表于 2017-8-31 10:00:16 | 显示全部楼层
wangyj 发表于 2017-8-31 09:54
弱弱的说一句,题目打错了,应该是转不是传吧,我有点强迫症。。。

群众的眼睛果然是雪亮的

11

帖子

0

威望

502

eV
积分
513

Level 4 (黑子)

发表于 2017-12-21 09:22:09 | 显示全部楼层
请问大神这个要怎么用,我最近也在学dalton。谢谢。

1万

帖子

25

威望

1万

eV
积分
36194

管理员

公社社长

发表于 2017-12-21 17:41:31 | 显示全部楼层
哇哇吐 发表于 2017-12-21 09:22
请问大神这个要怎么用,我最近也在学dalton。谢谢。


你可以用Multiwfn(http://sobereva.com/multiwfn)载入pdb,xyz,mol,fch,molden等等含有结构信息的文件,用主功能100的子功能2产生Dalton的简单任务的输入文件,然后再改关键词

评分

参与人数 1eV +4 收起 理由
哇哇吐 + 4 谢谢

查看全部评分

北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)
计算化学公社论坛:http://bbs.keinsci.com(高水平、高人气、综合性计算化学交流论坛)
思想家公社QQ群1号:18616395,2号:466017436。用于讨论理论、计算化学,两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。研究方向和理论、计算化学无关者勿加,以免浪费宝贵的空位

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!

11

帖子

0

威望

450

eV
积分
461

Level 3 能力者

 楼主| 发表于 2018-1-22 15:48:35 | 显示全部楼层
哇哇吐 发表于 2017-12-21 09:22
请问大神这个要怎么用,我最近也在学dalton。谢谢。

有一段时间没看帖子了。。。
推荐使用sobereva老师的multiwfn
使用方法为python gjf2mol.py *.gjf
推荐使用python3

评分

参与人数 1eV +3 收起 理由
哇哇吐 + 3 谢谢

查看全部评分

112

帖子

0

威望

518

eV
积分
630

Level 4 (黑子)

发表于 2018-8-10 20:39:17 | 显示全部楼层
~/dalton/tools/xyz2dalton

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

Read the f**king manuals.
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2018-12-10 15:42 , Processed in 0.132961 second(s), 29 queries .

快速回复 返回顶部 返回列表