计算化学公社

标题: 新手求助:在Linux上依次跑结构优化任务该怎么做 [打印本页]

作者
Author:
算一算    时间: 2019-1-16 01:57
标题: 新手求助:在Linux上依次跑结构优化任务该怎么做
本帖最后由 算一算 于 2019-1-16 02:08 编辑

我有个分子,想用Linux上的Gaussian做连续优化:
步骤一:把我的输入文件(用semi-empirical方法优化结构)丢给Gaussian并跑完任务;
步骤二:把优化好的坐标提取出来,以它为起始结构,生成新的Gaussian输入文件(用HF方法优化结构);
步骤三:把这个新输入文件丢给Gaussian执行;
步骤四:把优化好的坐标提取出来,以它为起始结构,生成新的Gaussian输入文件(用DFT方法优化结构);
步骤五:把这个新输入文件丢给Gaussian执行;
步骤六:把优化好的坐标提取出来,并把semi-empirical和HF优化后的坐标也提取出来,三个坐标列在一个文档里。



我希望我能某天睡觉前把第一步的输入文件丢给它,第二天早上醒来就能看到最后那个文档。这个在Linux可行吗?
如果可行,是直接在Linux上写一串指令就行,还是我要写个什么脚本?
如果是写脚本,我该学哪种语言?学多久能写出这种脚本来?写的过程中有什么需要注意的地方吗?如果可以,哪位前辈能示范一下步骤二该怎么写吗?


作者
Author:
sobereva    时间: 2019-1-16 05:14
写shell脚本,并且恰当运用linux下的一堆文本处理命令,不是什么难事,自学相关知识+编写,撑死了三天足够
作者
Author:
plus    时间: 2019-1-16 09:17
前五步用Link1
作者
Author:
liyuanhe211    时间: 2019-1-16 12:34
首先我想不出来对一般案例、先用HF优化再用DFT优化能比直接做DFT优化有任何优势
另外前五步高斯内部实现就可以了,形如:


  1. %chk=1.chk
  2. #p
  3.     pm6d3
  4.     opt

  5. title

  6. 0 1
  7. coord...

  8. --link1--
  9. %chk=1.chk
  10. #p
  11.     HF/basis
  12.     opt
  13.     geom=allcheck

  14. --link1--
  15. %chk=1.chk
  16. #p
  17.     DFT/basis
  18.     opt
  19.     geom=allcheck
复制代码



作者
Author:
Jasminer    时间: 2019-1-16 12:57
不想学脚本的话,最后一步无非也就是滚一下log文件复制的事,纯手动也快得很。
作者
Author:
算一算    时间: 2019-1-16 18:46
plus 发表于 2019-1-16 09:17
前五步用Link1

谢谢,我知道,但是我就是想分开做
作者
Author:
算一算    时间: 2019-1-16 18:47
liyuanhe211 发表于 2019-1-16 12:34
首先我想不出来对一般案例、先用HF优化再用DFT优化能比直接做DFT优化有任何优势
另外前五步高斯内部实现就 ...

谢谢,我知道,但是我就是想分开做
作者
Author:
算一算    时间: 2019-1-16 18:47
Jasminer 发表于 2019-1-16 12:57
不想学脚本的话,最后一步无非也就是滚一下log文件复制的事,纯手动也快得很。

问题是步骤多的情况下,滚来滚去实在是烦啊
作者
Author:
liyuanhe211    时间: 2019-1-16 20:56
算一算 发表于 2019-1-16 18:47
问题是步骤多的情况下,滚来滚去实在是烦啊

做完再切


Python 3.X
  1. from more_itertools import split_after
  2. filename = input("Filename:")
  3. with open(filename) as file:
  4.     files_to_write = list(split_after(file.readlines(), lambda x: 'Normal Termination' in x))
  5.     for count, i in enumerate(files_to_write):
  6.         with open(filename+"."+str(count)+'.out','r') as output_file:
  7.             output_file.write(''.join(i))
复制代码


作者
Author:
算一算    时间: 2019-1-17 05:09
liyuanhe211 发表于 2019-1-16 20:56
做完再切

谢谢,我参考一下。楼上有人说shell语言三天就能学会,我从来没接触过这种语言,打算试试。你这个是python,大概不是三天就能学会吧!不过我会拿你这个做参考的,听说各种编程语言写出来很像。
作者
Author:
plus    时间: 2019-1-17 11:14
你先试试用sed和awk把输出文件的坐标提取出来
作者
Author:
liyuanhe211    时间: 2019-1-17 17:15
算一算 发表于 2019-1-17 05:09
谢谢,我参考一下。楼上有人说shell语言三天就能学会,我从来没接触过这种语言,打算试试。你这个是pytho ...

如果你学过任何一门编程语言,学一天Python肯定能写出来按“Normal Termination”分割文件的程序。
作者
Author:
算一算    时间: 2019-1-18 04:19
liyuanhe211 发表于 2019-1-17 17:15
如果你学过任何一门编程语言,学一天Python肯定能写出来按“Normal Termination”分割文件的程序。

不是吧,我记得当初本科学C语言的时候,学了一学期也没学到这个
作者
Author:
算一算    时间: 2019-1-18 04:21
plus 发表于 2019-1-17 11:14
你先试试用sed和awk把输出文件的坐标提取出来

谢谢,我去研究一下sed和awk是什么神器
作者
Author:
liyuanhe211    时间: 2019-1-18 18:37
算一算 发表于 2019-1-18 04:19
不是吧,我记得当初本科学C语言的时候,学了一学期也没学到这个

C也非常容易实现啊。。。任何一门计算机语言都容易实现。

学了一学期C...是不会按关键词分割文本,还是不会读入、输出文件。。。
作者
Author:
算一算    时间: 2019-1-20 00:49
liyuanhe211 发表于 2019-1-18 18:37
C也非常容易实现啊。。。任何一门计算机语言都容易实现。

学了一学期C...是不会按关键词分割文本,还 ...

“按关键词分割文本,还是不会读入、输出文件”这些全不会。当初就学了基本操作以及写几个小游戏,没有学处理文件的东西。所以这些东西我都没把它们和C语言联系在一起。那我再看看吧。
作者
Author:
Tanya    时间: 2019-1-20 20:33
能写出自动根据出错信息调整输入文件重新算的才有意思。或者人工智能,把分子结构和想干什么丢给它,算完画好图直接输出
作者
Author:
算一算    时间: 2019-1-30 10:40
Tanya 发表于 2019-1-20 20:33
能写出自动根据出错信息调整输入文件重新算的才有意思。或者人工智能,把分子结构和想干什么丢给它,算完画 ...

嗯嗯,你这个想法不错,会编程的人要实现这个应该不难




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