计算化学公社

 找回密码 Forget password
 注册 Register
Views: 11513|回复 Reply: 33
打印 Print 上一主题 Last thread 下一主题 Next thread

[shell脚本] 如何批量生成gjf文件?

[复制链接 Copy URL]

198

帖子

0

威望

450

eV
积分
648

Level 4 (黑子)

本帖最后由 算一算 于 2019-3-1 02:16 编辑

想在Linux上生成一大批相似的gjf文件,每个文件其它部分相同,只有角坐标里的角度、chk文件名、gjf文件名不同。
期待结果:某个特定的角的角度从20°开始,每隔两度生成一个文件,直到60°。相应的%chk=20,%chk=22,...直到60。gjf文件名也是相应的从20到60。文件的其它部分都保持不变(当然,受那个角影响的其它角也会变。但是二面角不变,因为是平面三角形分子。成键的键长都不变。)
这个脚本应该怎么写?

如果嫌麻烦,可以先不考虑角度的问题,就假设角度都不变,只有chk和gjf名字从20变化到60,批量生成这样的gjf的脚本该怎么写?

P.S. 我这台机器上的python有问题,好多python脚本跑不了,所以只能用python以外的东东。

120

帖子

0

威望

2560

eV
积分
2680

Level 5 (御坂)

33#
发表于 Post on 2019-4-16 21:45:12 | 只看该作者 Only view this author
不考虑角度问题的话,
for i in `seq 20 2 60`; do cp orig.gjf $i.gjf; sed -i "s/%chk.*/%chk=$i\.chk" $i.gjf; done

35

帖子

0

威望

931

eV
积分
966

Level 4 (黑子)

32#
发表于 Post on 2019-3-24 18:21:33 | 只看该作者 Only view this author
算一算 发表于 2019-3-1 14:46
如果不包含输入文件的内容的话,这个不多么

OJ一道题少的三四十行,多的一百来行,20行绝对不多
如果是项目的话,2000行都只能称之为“一个很小的项目”

245

帖子

0

威望

2572

eV
积分
2817

Level 5 (御坂)

31#
发表于 Post on 2019-3-20 09:17:35 来自手机 | 只看该作者 Only view this author
嗯,shell好强大呀

16

帖子

0

威望

5165

eV
积分
5181

Level 6 (一方通行)

30#
发表于 Post on 2019-3-7 12:08:22 | 只看该作者 Only view this author
tjchkj 发表于 2019-3-5 20:05
先定义二面角的4个原子,然后手动输入二面角的角度,然后存下gjf,这一步只能是手动了

手动一个一个的做我会,就是“自动去按照间隔改变角度,然后自动存文件”这两个自动不会

93

帖子

2

威望

252

eV
积分
385

Level 3 能力者

29#
发表于 Post on 2019-3-5 20:05:53 | 只看该作者 Only view this author
vizq 发表于 2019-3-3 12:02
请问这个操作如何在gaussview中实现?

先定义二面角的4个原子,然后手动输入二面角的角度,然后存下gjf,这一步只能是手动了

16

帖子

0

威望

5165

eV
积分
5181

Level 6 (一方通行)

28#
发表于 Post on 2019-3-3 12:02:59 | 只看该作者 Only view this author
tjchkj 发表于 2019-3-1 16:54
这个就是角度渐变的gjf文件,每隔2.5度做一个gjf。在gaussian view中自动去按照间隔改变角度,然后自动存文 ...

请问这个操作如何在gaussview中实现?

220

帖子

0

威望

5707

eV
积分
5927

Level 6 (一方通行)

跳跳猪

27#
发表于 Post on 2019-3-1 22:46:20 | 只看该作者 Only view this author
算一算 发表于 2019-3-1 14:56
我没有动软件的权限,那个机器给我的是临时账户,我也就是给人代课用这一次。
我没google一下是因为我根 ...

倒是去搜啊
最简单的就用Google搜“xxx如何用shell实现”,你肯定能找到某个能满足你要求的“关键词”
有这问关键词的功夫脚本早写完了,即使是想用Python也早搞定了
流年似水,浮生如梦。

185

帖子

1

威望

4133

eV
积分
4338

Level 6 (一方通行)

26#
发表于 Post on 2019-3-1 20:30:23 | 只看该作者 Only view this author
算一算 发表于 2019-3-1 18:02
谢谢提供关键词,这个seq确实能够实现文件里chk名字的不断变化,以及gjf名字的变化。等了这么久,终于看 ...

我觉得你会错意了
真不是什么有营养的问题
指的就是“生成文件”这个问题。
相反直接生成渐变结构,虽然有重复造轮子的嫌疑,但确实看上去比较“有趣”。
如果你觉得还有其它的关键词也可以实现同样的任务,也欢迎说出来。
当然有换汤不换药的其他写法,但请你搞清楚,是我再给你留作业(代码改错),不是你给我。
我会选出一个跑起来最省时的。
我不知道你有没有去搜索,但你八成没有运行过这段代码。它运行的时间绝对比你敲键盘的快。
键角我的话我还得再想想另外两个相关的键角要怎么变
人家给你计算了半天,你来一句:忘了说了啊、是带十个正电荷的正离子。
感觉这两句看上去就很搭。

如果你的问题可以简化为7楼的第一句,真的不需要什么其他关键词了。
如果从看到我的回复开始直接干,现在估计早就解决了。

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
Mikasa + 5 严重同意

查看全部评分 View all ratings

198

帖子

0

威望

450

eV
积分
648

Level 4 (黑子)

25#
 楼主 Author| 发表于 Post on 2019-3-1 18:09:52 | 只看该作者 Only view this author
tjchkj 发表于 2019-3-1 17:00
其实,你这个只有40度的间隔,每隔2度形成一个文件,只有20个文件就够了,还用的上编程?我们都是一个分子 ...

嗯,你们这个量确实比我的大,但是我代的这门课,我不想让本科生在gaussview上一个一个生成文件,因为太费时间了,这门实践课还有好几个事情要完成,不能把时间费在这一个项目上,再说这个项目的目的是让他们查看不同角度下分子性质的变化,我希望他们把时间花在这个上,而不是费时间生成文件。我不想拖堂。
你能提供几个关键词吗?比如22楼提供的seq就很有用,如果你能提供其他的,我都会去试试,最后找一个跑起来最快的。

198

帖子

0

威望

450

eV
积分
648

Level 4 (黑子)

24#
 楼主 Author| 发表于 Post on 2019-3-1 18:02:50 | 只看该作者 Only view this author
highlight 发表于 2019-3-1 16:28
任何账户都可以给自己装软件,这是显然的。不过这个和你现在的问题无关。
我可以简化一下他给你的命令, ...

谢谢提供关键词,这个seq确实能够实现文件里chk名字的不断变化,以及gjf名字的变化。等了这么久,终于看到能用的关键词了。我还没有把这个套用在角坐标的值上,不过我隐约感觉是可以的,我再想想。如果你觉得还有其它的关键词也可以实现同样的任务,也欢迎说出来。我会选出一个跑起来最省时的。你PS里说的对,有人纠结的点是错的。我在问题里已经强调生成文件是主要问题。键角我的话我还得再想想另外两个相关的键角要怎么变。

93

帖子

2

威望

252

eV
积分
385

Level 3 能力者

23#
发表于 Post on 2019-3-1 17:00:37 | 只看该作者 Only view this author
其实,你这个只有40度的间隔,每隔2度形成一个文件,只有20个文件就够了,还用的上编程?我们都是一个分子就73个文件,同时做几十个分子,形成几千上万个gif才需要编程。

93

帖子

2

威望

252

eV
积分
385

Level 3 能力者

22#
发表于 Post on 2019-3-1 16:54:46 | 只看该作者 Only view this author
本帖最后由 tjchkj 于 2019-3-1 16:57 编辑

这个就是角度渐变的gjf文件,每隔2.5度做一个gjf。在gaussian view中自动去按照间隔改变角度,然后自动存文件。

QQ图片20190301165145.png (113.28 KB, 下载次数 Times of downloads: 61)

QQ图片20190301165145.png

QQ图片20190301165614.png (22.6 KB, 下载次数 Times of downloads: 70)

QQ图片20190301165614.png

185

帖子

1

威望

4133

eV
积分
4338

Level 6 (一方通行)

21#
发表于 Post on 2019-3-1 16:28:01 | 只看该作者 Only view this author
算一算 发表于 2019-3-1 14:56
我没有动软件的权限,那个机器给我的是临时账户,我也就是给人代课用这一次。
我没google一下是因为我根 ...

任何账户都可以给自己装软件,这是显然的。不过这个和你现在的问题无关。
我可以简化一下他给你的命令,如果只是想修改文件名和chk文件名的话,我还可以给你写个bug:

1. 写一个gjf做模板,就叫 template 好了,里面有若干干行:
  1. aaa
  2. sss
  3. %chk=ddd-num.chk
  4. fff
复制代码

2. 直接输入三行命令:
  1. for i in ·seq 0 60 2·
  2. do sed -i "3s/num/$i/g" template > file-$i.gjf
  3. done
复制代码


以上过程中命令存在明显的错误
如果你想证明自己不是想找人写脚本的话,你自行搜索修复
不用 google,百度然后开菜鸟教程的链接就行

PS:大家在这儿又是python又是fortran的,纠结的是怎么直接生成角度渐变的结构,而不是如何连续生成文件。你也看到了,这真不是什么有营养的问题。关于生成结构,没必要重复造轮子,7楼社长的回复已经很好了,你可以在上面过程的基础上实现一下,我觉得可能真到不了20行。

评分 Rate

参与人数
Participants 1
eV +4 收起 理由
Reason
算一算 + 4

查看全部评分 View all ratings

198

帖子

0

威望

450

eV
积分
648

Level 4 (黑子)

20#
 楼主 Author| 发表于 Post on 2019-3-1 16:23:40 | 只看该作者 Only view this author
tjchkj 发表于 2019-3-1 16:08
20行确实够的,楼主这个想法是对的,至少说明他动了很多脑子了,我孩子就是早就用自动生成的办法做了上万个 ...

能提供几个关键指令吗?我现在完全不知道该用哪几个指令让它自动生成

93

帖子

2

威望

252

eV
积分
385

Level 3 能力者

19#
发表于 Post on 2019-3-1 16:08:01 | 只看该作者 Only view this author
20行确实够的,楼主这个想法是对的,至少说明他动了很多脑子了,我孩子就是早就用自动生成的办法做了上万个gjf了,但他是自己编的小程序,应该很短,说20行业是差不多的。

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-23 18:31 , Processed in 0.228608 second(s), 26 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list