计算化学公社

 找回密码 Forget password
 注册 Register
Views: 23405|回复 Reply: 21

[Molclus] 分解合并Molclus任务的小脚本splitMC 1.1

[复制链接 Copy URL]

877

帖子

36

威望

4803

eV
积分
6400

Level 6 (一方通行)

发表于 Post on 2019-8-27 19:06:28 | 显示全部楼层 Show all |阅读模式 Reading model
本帖最后由 ggdh 于 2020-7-20 21:14 编辑

sob在Molclus的教程: 使用molclus程序做团簇构型搜索和分子构象搜索中提到,Molclus有个技巧来提高并行效率:
“Molclus可以同时运行多个以试图节约时间。大家都知道支持并行的计算程序的计算耗时不会和调用的核数线性相关,随着核数增加并行效率必然会愈发降低。比如你的机子核数很多,有56核,traj.xyz里有1000个结构需要处理,你希望降低molclus处理这个traj.xyz的总耗时,那么你可以比如把molclus文件夹复制成四份,比如分别叫molc1、molc2、molc3、molc4,分别将这四个目录下的settings.ini里的ngeom设为1,250、251,500、501,750、751,1000。然后开启四个终端,分别进入这四个目录并且运行molclus。等都运行完了,使用这条命令把四个目录下产生的isomers.xyz合并在一起:cat molc1\isomers.xyz molc2\isomers.xyz molc3\isomers.xyz molc4\isomers.xyz”
0.更新内容:ver1.1:
1.添加两个选项
-b 设定开始帧
-e 设定结束帧
2.采用更新的方法判断traj.xyz中的结构数量,这次不依赖关键词了。

对于构象很多时,这个技巧非常有用,不过手动分解的情况下,能够分解的任务数有限,比如我有10000个构象,想分解成1000个任务,每个任务10个构象,使用MOPAC计算,每个任务分配1核,提交到超算中心上,这种情况下,如果手动分解,基本不可能,于是就编写了这个脚本。使用步骤如下:

1.准备molclus文件夹
准备好molclus的计算文件夹(这里假设文件夹名为molc),里面应该有设置好的settings.ini文件和模板文件,以及traj.xyz文件,确定在该文件夹下运行molclus可以正常计算。把这个脚本加入PATH路径中

2.分解任务
运行本程序:
  1. splitMC -t 50 molc
复制代码
其中-t 的意思是把该任务分解成50份
得到类似如下的结果:
splitMC1.png
列出了新产生的文件夹名,和其中对应的帧的编号。每个文件夹中settings.ini中的ngeom部分也做了相应的更改。
此时文件夹下已经产生了molc_01到molc_50的50个文件夹。以及三个批处理模板文件,分别是runall.sh,runall.pbs,runall.slurm。
注意这里如果设定任务数大于总的结构数,那么最后得到的任务数就会等于结构数,每个任务一个结构。

3.批量运算
如果本机运行,直接运行sh runall.sh就行,这时候会同时计算所有的任务,所以应该保证任务数乘以每任务cpu数小于总cpu数;
如果提交到超算中心,根据作业调度系统的类型,编辑runall.pbs或runall.slurm文件(主要需要添加队列名称,账户名称)后,运行
sh runall.pbs 或 sh runall.slurm就可以进行批量提交。

4.合并结果
全部算完后运行命令:
  1. splitMC molc
复制代码
不加任何参数表示进行合并任务,得到类似如下的结果:
splicMC2.png
显示了每个文件夹中的计算情况,其中1/1的意思是该文件夹中需要计算1帧,实际获得1帧。如果是10/8,就说明文件夹中需要计算10帧,实际只得到了8帧,这时候可以到那个文件夹下看看出了什么状况导致两帧没算。最后会在当前目录下得到isomers.xyz文件,供后续isostat处理。

5. 脚本的选项说明
-t 选项设定一共有多少个任务
-g 选项设定每个任务算多少个结构(-g 和 -t同时设定的话-t会失效,任务数由-g决定)
-n 选项设定每个任务分配多少核,这个选项只影响最后生成的runall.pbs 和runall.slurm文件中的配置。
-b 设定开始帧
-e 设定结束帧

最后欢迎提出意见和bug反馈。



splitMC

3.26 KB, 下载次数 Times of downloads: 90

评分 Rate

参与人数
Participants 8
威望 +1 eV +33 收起 理由
Reason
ezez + 5 赞!
Satoru + 5 好物!
丁越 + 5 233333
benzon222 + 4 好物!
panernie + 4 好物!
zsu007 + 5 牛!
captain + 5 赞!
sobereva + 1 GJ!

查看全部评分 View all ratings

4万

帖子

99

威望

4万

eV
积分
89888

管理员

公社社长+计算化学玩家

发表于 Post on 2019-8-27 19:12:52 | 显示全部楼层 Show all
好物。已经把这个帖子在molclus的主贴里提及了
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办最高质量的各种计算化学类培训:初级量子化学培训班基础(中级)量子化学培训班分子动力学与GROMACS培训班量子化学波函数分析与Multiwfn程序培训班,内容介绍以及往届资料购买请点击链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的最佳途径。培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取培训最新消息、避免错过网上最有价值的计算化学文章!
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人,讨论范畴相同
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

57

帖子

0

威望

957

eV
积分
1014

Level 4 (黑子)

发表于 Post on 2019-10-4 14:51:47 | 显示全部楼层 Show all
嗯嗯~ 好物~ 用起来很舒适,需要运行任务3*1万 ,用起来比较方便,适合计算体系较大资源丰富的组~  1万个优化任务,分为50个,18个小时200个任务,用的方法是PM6-DH+,平均 5.4min 一个,共100个原子包括C,H,O,F ~   

如果你是用genmer产生的结构,根据molclus 版本问题,记得修改splitMC中Conformation 为 Configuration
c593d0e5ed97e2d99521e9734d9c128.png

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
ggdh + 5 谢谢

查看全部评分 View all ratings

2

帖子

0

威望

229

eV
积分
231

Level 3 能力者

发表于 Post on 2019-12-2 22:30:58 | 显示全部楼层 Show all
TDHFjiang 发表于 2019-10-4 14:51
嗯嗯~ 好物~ 用起来很舒适,需要运行任务3*1万 ,用起来比较方便,适合计算体系较大资源丰富的组~  1万个优 ...

你好,我也用这个脚本准备并行运算,已经测试过了,单独能算,用这个脚本出现如图问题,修改为Configuration也做了, 还是一样的问题,请帮忙指正一下。C:\Users\Frank\Desktop\1.png
1.png

877

帖子

36

威望

4803

eV
积分
6400

Level 6 (一方通行)

 楼主 Author| 发表于 Post on 2019-12-2 22:54:28 | 显示全部楼层 Show all
本帖最后由 ggdh 于 2019-12-2 22:56 编辑
NYFRANK 发表于 2019-12-2 22:30
你好,我也用这个脚本准备并行运算,已经测试过了,单独能算,用这个脚本出现如图问题,修改为Configurat ...
你要准备一个文件夹,里面包含计算所需的settings.ini 和 traj.xyz,然后用我的脚本去拆分这个文件夹
mkdir molc
cp settings.ini molc
cp traj.xyz molc
splitMC -t 2 molc

2

帖子

0

威望

229

eV
积分
231

Level 3 能力者

发表于 Post on 2019-12-3 09:41:44 | 显示全部楼层 Show all
本帖最后由 NYFRANK 于 2019-12-3 09:43 编辑
ggdh 发表于 2019-12-2 22:54
你要准备一个文件夹,里面包含计算所需的settings.ini 和 traj.xyz,然后用我的脚本去拆分这个文件夹
mkdi ...

谢谢你的帮助,但到最后我runall.sh 还是出问题了,如图所示。单独不分割文件夹是能运行的,分割之后我修改了模板的核数,我这个是提交到我们组内的服务器上算。请在帮忙指正下,谢谢~

三个文件夹报3个l101和如图三个错误

三个文件夹报3个l101和如图三个错误

57

帖子

0

威望

957

eV
积分
1014

Level 4 (黑子)

发表于 Post on 2020-5-28 14:47:31 | 显示全部楼层 Show all
NYFRANK 发表于 2019-12-3 09:41
谢谢你的帮助,但到最后我runall.sh 还是出问题了,如图所示。单独不分割文件夹是能运行的,分割之后我修 ...

不好意思,刚看到,你要根据你们组里提交任务的格式,你把runall.sh 里面第四行报错的sh run.sh & 修改成服务器提交任务的版本,比如 bsub < run.sh,
run.sh 也要做修改如:(这跟你服务器有关)
#!/bin/bash
#BSUB -q normal
#BSUB -n 1
#BSUB -o %J.out
#BSUB -e %J.err
#BSUB -J molclus
#BSUB -R span[ptile=28]

./molclus > molclus.log

57

帖子

0

威望

957

eV
积分
1014

Level 4 (黑子)

发表于 Post on 2020-5-28 15:43:49 | 显示全部楼层 Show all
还有一个问题,顺便提一下,最新版本的molclus 不支持旧版的xtb, 而且如果是阴离子体系,记得把molclus 里面的settings.ini
xtb_arg= "--gfn 1 '--chrg -2' --uhf 0"   charge 部分用单引号引起来,别来说是这个脚本导致的 0.0

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
ggdh + 5 谢谢分享!

查看全部评分 View all ratings

57

帖子

0

威望

957

eV
积分
1014

Level 4 (黑子)

发表于 Post on 2020-7-17 14:52:46 | 显示全部楼层 Show all
本帖最后由 TDHFjiang 于 2020-7-17 15:25 编辑

如果你要计算的结构是从非1开始的,比如要计算20-100的结构,并分割成5个,不太适合这个脚本,这个脚本就是先看看你的初始setting.ini 里面有多少个结构20-100,那就按照取前100个直接平均分割成5个任务,可以去每个分割后的文件夹,手动修改setting.ini 里面对应ngeom

877

帖子

36

威望

4803

eV
积分
6400

Level 6 (一方通行)

 楼主 Author| 发表于 Post on 2020-7-17 21:58:32 | 显示全部楼层 Show all
TDHFjiang 发表于 2020-7-17 14:52
如果你要计算的结构是从非1开始的,比如要计算20-100的结构,并分割成5个,不太适合这个脚本,这个脚本就是 ...

为啥会有这样的要求呢?

57

帖子

0

威望

957

eV
积分
1014

Level 4 (黑子)

发表于 Post on 2020-7-17 22:11:04 | 显示全部楼层 Show all
ggdh 发表于 2020-7-17 21:58
为啥会有这样的要求呢?

有时候任务中断了,没办法,只能手动了

877

帖子

36

威望

4803

eV
积分
6400

Level 6 (一方通行)

 楼主 Author| 发表于 Post on 2020-7-20 21:15:57 | 显示全部楼层 Show all
TDHFjiang 发表于 2020-7-17 22:11
有时候任务中断了,没办法,只能手动了

更新了版本,现在可以指定从哪里开始(-b)到哪里结束了 (-e)
另外你之前提到的哪个conformation和configuration的问题也解决了。

14

帖子

0

威望

33

eV
积分
47

Level 2 能力者

发表于 Post on 2020-8-9 11:56:20 | 显示全部楼层 Show all
请问这个脚本能单纯的用于合并多个.xyz文件吗?可以的话要如何操作呢?

877

帖子

36

威望

4803

eV
积分
6400

Level 6 (一方通行)

 楼主 Author| 发表于 Post on 2020-8-9 11:59:23 | 显示全部楼层 Show all
junjiqiangzhe 发表于 2020-8-9 11:56
请问这个脚本能单纯的用于合并多个.xyz文件吗?可以的话要如何操作呢?

多个.xyz直接用命令合并
rm all.xyz
for i in *.xyz
do
cat $i >> all.xyz
done

57

帖子

0

威望

957

eV
积分
1014

Level 4 (黑子)

发表于 Post on 2020-11-24 19:56:10 | 显示全部楼层 Show all
ggdh 发表于 2020-7-20 21:15
更新了版本,现在可以指定从哪里开始(-b)到哪里结束了 (-e)
另外你之前提到的哪个conformation和configu ...

-b 10 -e 200 这个功能很好用,谢谢

本版积分规则 Credits rule

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

GMT+8, 2023-2-2 23:11 , Processed in 0.247984 second(s), 31 queries .

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