计算化学公社

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

[Lammps] Lammps reaxff/CP2K AIMD物种统计分析工具[1.0版本]

  [复制链接 Copy URL]

291

帖子

7

威望

3198

eV
积分
3629

Level 5 (御坂)

石墨

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 Graphite 于 2024-9-25 03:26 编辑

1.0版本(稳定版本,C++二进制文件)
更新说明:
  • 支持.xyz文件
  • 已修复0.9版本在部分系统中不能保存输出文件的问题。
下载:
1.0版本 reax_tools (5.51 MB, 下载次数 Times of downloads: 65)
特性:

  • 长期迭代更新,直至完成所有的开发计划为止
  • 采用C++全部重写,性能得到极大优化,路由器都能算的级别
  • 增加直接读取轨迹的功能,包括.lammpstrj文件和cp2k等软件产生的连续.xyz文件
  • 老功能清洗Lammps的.species.out输出依旧保留
  • 唯一依赖是C++标准库(只要你的linux系统不太旧就可以)
使用方法:
(随便输入错误的选项,也会弹出该使用方法)

  1.         -f .xyz/.lammpstrj file -> [读取轨迹] 采用van der Waals半径决定键、建立键长键角二面角、建立分子拓扑并分析
  2.         -s lammps reaxff/species file (spieces.out) -> [读取物种文件(老功能)] 读取species.out文件清洗

  3.         -r value 调整van der Waals半径的缩放因子,默认1.2,也就是OVITO的设置。
  4.         -t element,element...  逗号分割的元素名称, 如C,H,O,N,S,F 读取lammpstrj这类只有type_id的轨迹时,此选项是必须的)
  5.         -me element 通过元素的原子数量合并物种类型,例如C1~C4合并为group_C1-C4
  6.         -mr range1,range2...通过原子数量合并物种类型的范围,例如1,4,8,16
  7.         -rc 上述功能按指定原子的数量重算物种的权重,如C2H4被认为是权重2,而不是1个分子
  8.         --order element,element...整理输出化学式中元素的顺序,逗号分割 (默认: C,H,O,N,S,F,P,其他元素按原子量排)
复制代码

实现细节:
  • 两帧两帧地Tick-Tock交替式读取轨迹,建立结构对象(两帧是因为后续要做基团迁移、演化链等功能,并且节省内存)
  • 每一帧的结构中,原子先用K-D树搜索近邻列表,得到邻居原子,再根据邻居原子的距离判据,建立化学键,根据键连关系,利用深度优先算法,全搜索间接连接的原子,构建分子图。
  • 及时整理和清洗物种数量演化数据,建立反应演化链、基团转移信息(此功能尚在测试,很快上线)。

性能:
测试用例中,轨迹模式读取350MB的lammpstrj轨迹,1.3万原子,1000帧,单核低压U用时160秒,消耗内存不到100MB,物种文件模式读取对应species.out文件,用时1秒。
速度主要取决于轨迹的大小、成键的数量。

后期开发计划:
  • 反应链:计算每个分子的下一帧后代(根据图的相关性计算),从而建立每个分子从生成到销毁的生命周期。(销毁指分解成数个不到原体积50%的小分子,后者作为一个新的分子开始它的生命周期)
  • 基团转移:每一种基团(分子拓扑片段)的生命周期,原理同上,体现为何时依附于何种分子。
  • 计算反应速率、反应级数
  • 可视化输出图形和文档报表

示例:
指令:
  1. ./reax_tools -f input_file_traj_350M.lammpstrj -t Fe,C,H,O,N,S,F -me C
复制代码

----
0.3版本(稳定版本,Python)
更新说明:
修复如CHO等多个单原子元素构成的化学式导致的bug。
python版本(仅.species.out物种文件清洗功能)停止更新。
下载:
0.3版本 reax_species.py (14.63 KB, 下载次数 Times of downloads: 192)
特性:
Lammps一大特色是可以用ReaxFF做反应模拟,最早不支持直接给出物种,只能输出键列表(reaxff/bonds, reax/c/bonds),需要用ChemTrayzer等软件从键列表再分析生成多少物种。后来支持了reax/c/species,实时输出产物分子。但因为是每帧输出,结构会很混乱,例如100 ps打印了10个物种,500 ps时已经20个物种了,而且前后顺序也不一致,不方便监控。反复调参数试的时候更是难受。
有感于此,写了个工具清理。该工具能实现以下功能:

  • 将所有物种对齐成表格,还没出现或已消失的为0。
  • 自定义合并,例如将C4-C6的碳团簇合并成一个组。
  • 生成屏幕简报,包括初始、最终(最后5%的帧)、最大、平均数量。
  • 原子权重重算、整理化学式、整理低频次物种等见解功能。

另:当reax/c/species输出的频次、平均值的取法、键级cutoff不合理时,判定的产物也可能不合理,这点不在讨论之列。如有需要可以改cutoff,rerun让lammps重新判断一遍(无需再做全模拟)。
用法:
  1. Usage: reax_species.py [opts] [args]
  2.     -f inputfile                       # lammps reaxff/species (reax/c/species) 输出的文件
  3.     -m, --merge C                  # 按照原子数合并物种,默认C
  4.     -r, --range 1,5,9,17,65       # 设定合并的原子数上下限组,如C1, C2-C4, C5-C8, C9-C16, C17-C64, >=C64等
  5.     -d, --drop-others              # 将出现频次低(0.01)的物种扔进 "others"组里
  6.     -c, --recalc                      # 以原子数作为权重重新计算物种出现量,如当-m设为C时,C4H10的权重为4,5个C2H6被视为10的权重。这在程序一开始就会重算,因此会影响整体结果。
  7.     -o, --order C,H,O,N          # 整理化学式的顺序,例如HCO -> CHO, H4C2NO -> C2H4ON
复制代码
示例:
指令:
  1. reax_species -f 05-shear.species.out -m C -r 1,4,8,16 -d --order C,H,O,N,S,F
复制代码
屏显输出:
  1. NOTE: 31 species merged into group C1-C3
  2. NOTE: 9 species merged into group C4-C7
  3. NOTE: 15 species merged into group C8-C15
  4. NOTE: 108 species merged into group >=C16
  5. NOTE: 12 species merged into group others
  6. Formula         Init            Final           Max             Avg
  7. H2              42.0            49.0            47.4            49.0
  8. H2O1            1116.8          1077.2          1078.2          1129.0
  9. H5O2            12.8            21.8            22.7            33.0
  10. H1O1            28.8            34.0            34.3            37.0
  11. O1              40.5            67.0            58.9            67.0
  12. H3O1            40.0            53.2            48.8            60.0
  13. C1-C3           0.0             10.0            5.2             10.0
  14. C4-C7           0.0             2.0             1.0             2.0
  15. C8-C15          4.5             7.0             6.1             7.0
  16. >=C16           36.0            36.5            35.3            37.0
  17. others          14.5            8.5             11.3            16.0
复制代码
保存的文件:
  1. Timestep Number-of-molecules Number-of-species H2 H2O1 H5O2 H1O1 O1 H3O1 C1-C3 C4-C7 C8-C15 >=C16 others
  2. 500 1336 31 41 1129 12 27 38 34 0 0 4 36 15
  3. 1000 1333 32 42 1116 12 27 40 40 0 0 4 36 16
  4. 1500 1338 31 42 1115 12 30 41 44 0 0 5 36 13
  5. 2000 1336 34 43 1107 15 31 43 42 0 0 5 36 14
  6. 2500 1343 35 44 1109 12 31 45 48 0 0 5 36 13
  7. 3000 1339 35 44 1103 17 32 46 44 0 0 5 36 12
  8. 3500 1336 35 44 1100 19 31 46 42 0 0 5 36 13
  9. 4000 1336 36 45 1097 21 31 47 40 0 0 6 36 13
复制代码













评分 Rate

参与人数
Participants 11
威望 +1 eV +40 收起 理由
Reason
人间划水艺术家 + 5
啵啵鱼 + 3 赞!
企鹅子w + 5 牛!
Sui1999 + 5 谢谢
HJJ907 + 1 好物!
TinnKuka + 2 好物!
MercuryLamp + 5 谢谢
dadaoqiuzhi + 5 好物!
hdhxx123 + 5 好物!
wildon + 4 谢谢
sobereva + 1

查看全部评分 View all ratings

镜像空间计算模拟

1

帖子

0

威望

17

eV
积分
18

Level 1 能力者

38#
发表于 Post on 2024-10-27 19:25:23 | 只看该作者 Only view this author
allergicrosen 发表于 2024-3-6 14:36
File "/我的路径/./reax_species.py", line 331, in
    main(sys.argv[1:])
  File "/我的路径/./rea ...

我也是,请问你最后怎么解决的呢

97

帖子

1

威望

2700

eV
积分
2817

Level 5 (御坂)

37#
发表于 Post on 2024-10-23 21:48:30 | 只看该作者 Only view this author
Graphite 发表于 2024-10-21 15:04
指-s "lammps reaxff/species file"
也就是说要输入的是-s reaction.species.out

谢谢,问题已经解决

291

帖子

7

威望

3198

eV
积分
3629

Level 5 (御坂)

石墨

36#
 楼主 Author| 发表于 Post on 2024-10-21 15:04:45 | 只看该作者 Only view this author
lindlar 发表于 2024-10-20 19:56
出现这个问题是什么情况?运行./reax_tools -s lammps reaction.species.out出错,但是运行./reax_tools -f ...

指-s "lammps reaxff/species file"
也就是说要输入的是-s reaction.species.out

提示了是Invalid options / parameters,输入选项/参数的问题。
镜像空间计算模拟

97

帖子

1

威望

2700

eV
积分
2817

Level 5 (御坂)

35#
发表于 Post on 2024-10-20 19:56:16 | 只看该作者 Only view this author
本帖最后由 lindlar 于 2024-10-20 19:59 编辑

出现这个问题是什么情况?运行./reax_tools -s lammps reaction.species.out出错,但是运行./reax_tools -f reaction.lammpstrj,又可生成reaction.csv文件
Usage:
        -f .xyz/.lammpstrj file -> [TRAJ MODE] determine molecules by van der Waals radius
        -s lammps reaxff/species file (spieces.out) -> [SPECIES MODE] determine species by file input

        [TRAJ MODE SETTINGS]
        -r raidus scaling factor (default 1.2)
        -t type names, split in comma, e.g. C,H,O,N,S,F

        [SPECIES MODE SETTINGS]
        -me merge molecules into groups by element number (default C), i.e. mols have 1~4 Carbons -> group_C1-C4
        -mr merge range for the process above, split in comma (default: 1,4,8,16)
        -rc rescale group weight by selected atom number, not mol number, i.e. C2H4 -> weight 2, C4H8 -> weight 4 (default: no)
        --order output formulas in correct element order, split in comma (default: C,H,O,N,S,F,P)
terminate called after throwing an instance of 'std::runtime_error'
  what():  Invalid options / parameters.
Aborted (core dumped)

291

帖子

7

威望

3198

eV
积分
3629

Level 5 (御坂)

石墨

34#
 楼主 Author| 发表于 Post on 2024-9-25 03:26:18 | 只看该作者 Only view this author
svenhhhhh 发表于 2024-9-4 17:42
老师,请问reax_tools清洗产物是没有输出清洗后的结果文件的吗,我只看到屏幕上打印出来了

已修复
镜像空间计算模拟

291

帖子

7

威望

3198

eV
积分
3629

Level 5 (御坂)

石墨

33#
 楼主 Author| 发表于 Post on 2024-9-25 03:26:03 | 只看该作者 Only view this author
MISAKA19020 发表于 2024-9-19 22:11
请问reax_tools运行后看到屏幕上打印出来了,但没有找到保存在哪儿是什么原因

已修复
镜像空间计算模拟

291

帖子

7

威望

3198

eV
积分
3629

Level 5 (御坂)

石墨

32#
 楼主 Author| 发表于 Post on 2024-9-25 03:25:55 | 只看该作者 Only view this author
MISAKA19020 发表于 2024-7-12 16:01
你好,使用./reax_tools -s ./species.out -me C -mr 1,2,3命令后有显示,formula                begin    ...

已修复
镜像空间计算模拟

291

帖子

7

威望

3198

eV
积分
3629

Level 5 (御坂)

石墨

31#
 楼主 Author| 发表于 Post on 2024-9-23 10:33:49 | 只看该作者 Only view this author
MISAKA19020 发表于 2024-9-19 22:11
请问reax_tools运行后看到屏幕上打印出来了,但没有找到保存在哪儿是什么原因

在有些系统上有文件读写bug,国庆后和下个版本一并修复更新
镜像空间计算模拟

2

帖子

0

威望

71

eV
积分
73

Level 2 能力者

30#
发表于 Post on 2024-9-19 22:11:02 | 只看该作者 Only view this author
请问reax_tools运行后看到屏幕上打印出来了,但没有找到保存在哪儿是什么原因

216

帖子

0

威望

1099

eV
积分
1315

Level 4 (黑子)

29#
发表于 Post on 2024-9-18 21:03:32 | 只看该作者 Only view this author
Graphite 发表于 2024-9-18 19:45
lammpstrj没有元素符号定义,只有id=1,2,3,4...。需要使用如-t C,H,O,N...指定的实际元素符号。

懂了!太感谢老师您的回答了!

291

帖子

7

威望

3198

eV
积分
3629

Level 5 (御坂)

石墨

28#
 楼主 Author| 发表于 Post on 2024-9-18 19:45:42 | 只看该作者 Only view this author
ddddnight 发表于 2024-9-13 12:53
Frame: 388 Atoms: 10200 Bonds: 0 Mols: 10200
Frame: 389 Atoms: 10200 Bonds: 0 Mols: 10200
Frame: 3 ...

lammpstrj没有元素符号定义,只有id=1,2,3,4...。需要使用如-t C,H,O,N...指定的实际元素符号。
镜像空间计算模拟

216

帖子

0

威望

1099

eV
积分
1315

Level 4 (黑子)

27#
发表于 Post on 2024-9-13 12:53:46 | 只看该作者 Only view this author
Frame: 388 Atoms: 10200 Bonds: 0 Mols: 10200
Frame: 389 Atoms: 10200 Bonds: 0 Mols: 10200
Frame: 390 Atoms: 10200 Bonds: 0 Mols: 10200
Frame: 391 Atoms: 10200 Bonds: 0 Mols: 10200
Frame: 392 Atoms: 10200 Bonds: 0 Mols: 10200
Frame: 393 Atoms: 10200 Bonds: 0 Mols: 10200
Frame: 394 Atoms: 10200 Bonds: 0 Mols: 10200
Frame: 395 Atoms: 10200 Bonds: 0 Mols: 10200
Frame: 396 Atoms: 10200 Bonds: 0 Mols: 10200
Frame: 397 Atoms: 10200 Bonds: 0 Mols: 10200
Frame: 398 Atoms: 10200 Bonds: 0 Mols: 10200
Frame: 399 Atoms: 10200 Bonds: 0 Mols: 10200
Frame: 400 Atoms: 10200 Bonds: 0 Mols: 10200
Frame: 401 Atoms: 10200 Bonds: 0 Mols: 10200
Merge 0 formulas into grp_C1-3
Merge 0 formulas into grp_C4-5
Merge 0 formulas into grp_C6-7
Merge 0 formulas into grp_C8-15
Merge 0 formulas into grp_C16-63
Merge 0 formulas into grp_>C64
老师,我用了这个命令,(base) [tg@localhost Analysis]$ ./reax_tools -f dump.lammpstrj -me C -mr 1,4,6,8,16,64 --order C,H
1, 4, 6, 8, 16, 64, 为什么统计不出来不同碳数的个数呢

1

帖子

0

威望

45

eV
积分
46

Level 2 能力者

26#
发表于 Post on 2024-9-4 17:42:27 | 只看该作者 Only view this author
老师,请问reax_tools清洗产物是没有输出清洗后的结果文件的吗,我只看到屏幕上打印出来了

2

帖子

0

威望

39

eV
积分
41

Level 2 能力者

25#
发表于 Post on 2024-8-30 17:59:21 | 只看该作者 Only view this author
竹溪 发表于 2024-7-4 10:29
请问你的问题解决了吗

请问你的问题解决了吗

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

GMT+8, 2024-11-27 01:55 , Processed in 0.217621 second(s), 26 queries , Gzip On.

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