计算化学公社

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

[程序/脚本开发] 求助:想通过python脚本把LAMMPS输出的产物文件改为便于作图的excel文件

[复制链接 Copy URL]

30

帖子

0

威望

143

eV
积分
173

Level 3 能力者

本帖最后由 pumpkin111 于 2024-9-5 15:25 编辑

我是用LAMMPS做聚合物热解。因为用的不是reaxff,所以不能直接输出species文件。通过对轨迹文件进行处理,得到的产物文件打开后是这样的:
0 H6C3O1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1
1 H6C3O1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1
2 H6C3O1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1
3 H6C3O1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1
4 H6C3O1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1


但是这样的数据没法直接做图,我想通过python脚本改成这样:
#Timestep     No_Moles     No_Specs     H6C3O1     Ag
0          65          2         1         64
#Timestep     No_Moles     No_Specs     H6C3O1     Ag
1          65          2         1         64
#Timestep     No_Moles     No_Specs     H6C3O1     Ag
2          65          2         1         64
#Timestep     No_Moles     No_Specs     H6C3O1     Ag
3          65          2         1         64
#Timestep     No_Moles     No_Specs     H6C3O1     Ag
4          65          2         1         64


然后因为我本身不太会编程,让chatGPT写了脚本,如图片:


但是一直出现报错:ValueError: invalid literal for int() with base 10: 'Ag1'请问各位老师,这是什么原因呢?应该怎么更改脚本才能得到我想要的结果呢?



202409051524425571..png (88.08 KB, 下载次数 Times of downloads: 8)

python脚本

python脚本

401

帖子

0

威望

2551

eV
积分
2952

Level 5 (御坂)

所念皆星河

2#
发表于 Post on 2024-9-5 16:23:31 | 只看该作者 Only view this author
一般来说只要把报错拷给chatgpt给他改就好了。报错贴完整,这都没法一眼看出在哪儿报错了。
另外,看上去你的体系分子数也没变化呀,没反应力场那成分也不变咯,如果模拟中没有deposit或者remove分子,自己拿第一行数一数不就好了。
心之所向,日复一日,必有精进

30

帖子

0

威望

143

eV
积分
173

Level 3 能力者

3#
 楼主 Author| 发表于 Post on 2024-9-5 17:41:02 | 只看该作者 Only view this author
含光君 发表于 2024-9-5 16:23
一般来说只要把报错拷给chatgpt给他改就好了。报错贴完整,这都没法一眼看出在哪儿报错了。
另外,看上去 ...

报错拷给chatGPT之后,修改后的脚本还是报错,而且是同样的报错。然后这个体系只是拿来做一个示例,看一下脚本能否运行成功

1155

帖子

0

威望

4423

eV
积分
5578

Level 6 (一方通行)

4#
发表于 Post on 2024-9-6 09:41:59 | 只看该作者 Only view this author
本帖最后由 乐平 于 2024-9-6 09:44 编辑

使用 ChatGPT 来辅助编程的关键在于你能否准确描述你的诉求

把你的诉求描述得越详细,步骤越精确,得到的代码才是能执行的。
说得再直白一些,你需要告诉 chatGPT 一步一步如何做,每一步得到什么信息,最终呈现什么效果。

1155

帖子

0

威望

4423

eV
积分
5578

Level 6 (一方通行)

5#
发表于 Post on 2024-9-6 13:09:28 | 只看该作者 Only view this author
本帖最后由 乐平 于 2024-9-6 13:12 编辑

你的例子其实比较简单,只需要逐行读取文件的信息成列表。
然后,列表的第一列都是 TimeStep,从列表的第二列开始都是需要统计的信息,统计所有的分子数,分子的种类,每种分子的个数。

你希望最终保存的文件可以用 Excel 打开,那么可以保存成 .csv 格式的文件,即用逗号分隔每行的信息。文本文件打开的时候如下:
  1. #TimeStep, No_Molecules, No_Species, H6C3O1, Ag
  2. 1, 65, 2, 1, 64
  3. 2, 65, 2, 1, 64
  4. 3, 65, 2, 1, 64
  5. 4, 65, 2, 1, 64
复制代码


用 Excel 打开的时候如下图所示:



我写的脚本可以指定你的输入文件名(默认是 lammps.dat,你可以改输入文件名)输出的文件名(也可以不指定,默认是 results.csv)

用法如下:
  1. python parse_lammps.py -f 你的输入文件名 -o 你的输出文件名
复制代码


还可以用 -h 来查看帮助,例如:
  1. python parse_lammps.py -h
  2. usage: parse_lammps.py [-h] [-f <LAMMPS file>] [-o <output .csv file>]

  3. Parse lammps file

  4. options:
  5. -h, --help show this help message and exit
  6. -f <LAMMPS file>, --input_filename <LAMMPS file>
  7. The LAMMPS file
  8. -o <output .csv file>, --output_filename <output .csv file>
  9. The csv file
复制代码


另外,关于扩展性。我还测试了一下元素种类更多的情况。比如在你的输入文件里添加了 H2

  1. 0 H6C3O1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 H2 H2 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1
  2. 1 H6C3O1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 H2 H2 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1
  3. 2 H6C3O1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 H2 H2 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1
  4. 3 H6C3O1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 H2 H2 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1
  5. 4 H6C3O1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 H2 H2 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1 Ag1
复制代码


我的脚本同样也适用



parse_lammps.py

1.93 KB, 下载次数 Times of downloads: 9

30

帖子

0

威望

143

eV
积分
173

Level 3 能力者

6#
 楼主 Author| 发表于 Post on 2024-9-6 20:42:22 | 只看该作者 Only view this author
乐平 发表于 2024-9-6 13:09
你的例子其实比较简单,只需要逐行读取文件的信息成列表。
然后,列表的第一列都是 TimeStep,从列表的第 ...

非常感谢大佬,我运行并且得到了想要的结果。真的非常感谢!

30

帖子

0

威望

143

eV
积分
173

Level 3 能力者

7#
 楼主 Author| 发表于 Post on 2024-9-19 11:03:28 | 只看该作者 Only view this author
本帖最后由 pumpkin111 于 2024-9-19 11:07 编辑
乐平 发表于 2024-9-6 13:09
你的例子其实比较简单,只需要逐行读取文件的信息成列表。
然后,列表的第一列都是 TimeStep,从列表的第 ...

老师,如果模拟得到的Species文件用excel文件打开是这样的页面,也就是说不是把每一个分子都列出来,而是每一个分子类型后加上该分子类型的数量。
  1. Timestep        6500:        [H]        64        [H][H]        31        [H][O][H]        27        [H][C]([H])[H]        1        [C]        3
  2. Timestep        6600:        [H]        69        [H][H]        32        [H][O][H]        27        [H][C]([H])[H]        1        [H][O]        11
  3. Timestep        6700:        [H]        68        [H][H]        30        [H][O][H]        28        [H][C]([H])[H]        1        [O]        1
  4. Timestep        6800:        [H]        61        [H][H]        32        [H][O][H]        29        [H][C]([H])[H]        2        [O]        1
  5. Timestep        6900:        [H]        59        [H][H]        30        [H][O][H]        28        [H][C]([H])[H]        1        [O]        2
  6. Timestep        7000:        [H]        63        [H][H]        31        [H][O][H]        29        [H][C]([H])[H]        1        [H][O]        5
  7. Timestep        7100:        [H]        61        [H][H]        34        [H][O][H]        27        [H][C]([H])[H]        1        [O]        5
  8. Timestep        7200:        [H]        60        [H][H]        35        [H][O][H]        27        [H][C]([H])[H]        1        [O]        5
  9. Timestep        7300:        [H]        53        [H][H]        37        [H][O][H]        26        [H][C]([H])[H]        1        [O]        4
  10. Timestep        7400:        [H]        61        [H][H]        35        [H][O][H]        26        [O]        5        [H][O]        11
  11. Timestep        7500:        [H]        58        [H][H]        38        [H][O][H]        29        [H][C]([H])[H]        1        [O]        3
  12. Timestep        7600:        [H]        61        [H][H]        36        [H][O][H]        28        [O]        2        [H][O]        10
  13. Timestep        7700:        [H]        69        [H][H]        35        [H][O][H]        26        [H][C]([H])[H]        2        [O]        4
  14. Timestep        7800:        [H][H]        38        [H]        65        [H][O][H]        27        [O]        3        [H][O]        12
  15. Timestep        7900:        [H][H]        41        [H]        61        [H][O][H]        27        [O]        4        [H][O]        11
  16. Timestep        8000:        [H]        70        [H][H]        38        [H][O][H]        28        [O]        5        [H][C]        11
复制代码

那么该如何修改py脚本从而得到希望最终保存的csv文件呢?

本版积分规则 Credits rule

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

GMT+8, 2026-2-18 00:01 , Processed in 0.194687 second(s), 23 queries , Gzip On.

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