计算化学公社

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

[辅助/分析程序] EnergyDiagramDraw:一个开箱即用的能量折线图绘制程序

[复制链接 Copy URL]

35

帖子

3

威望

794

eV
积分
889

Level 4 (黑子)

本帖最后由 Kamistry 于 2023-11-22 08:45 编辑

EnergyDiagramDraw

********20231116更新********
允许改变颜色

关于
EnergyDiagramDraw 是我最近用python写的开箱即用的能量折线图绘制软件。本帖子将持续更新,欢迎关注或提出建议(GitHub issue或者直接在这里回复)。
GitHub地址:linzihan322/EnergyDiagramDraw: A ready-to-use energy diagram drawing program (github.com)

需求
Python 3.9
ChemDraw (查看结果需要)

使用方法
你可以自定义输入和输出文件名。 对于输入文件,文件后缀名可以任意(但强烈建议使用.edf,表示EnergyDiagramFile);但输出文件的后缀名必须为.cdxml。 如果输出文件名被省略,则程序自动将输入文件后缀名由.edf更改为.cdxml作为输出文件名(对于其他后缀名,则直接在后面加上.cdxml)。

假设输入文件为INPUT.edf,你可以执行以下命令生成能量图。注意:对于某些系统,你可能需要将python替换为python3。

  1. python EnergyDiagramDraw.py INPUT.edf
  2. python EnergyDiagramDraw.py INPUT.edf OUTPUT.cdxml
复制代码


.edf文件的结构
一个完整的.edf文件包含三个部分:序言区,设置、数据和标签以及注释部分。我是根据gjf的格式来设计的,平时使用Gaussian比较多的话,会觉得这个格式很熟悉。link0,关键词,坐标数据。区别在于#开始的设置行是和序言区而不是数据行空行隔开。

  1. 序言区 - 可选,由“%”起始,用来设置图的整体属性
  2. [空行]
  3. #设置行 - 可选,由“#”起始,用来改变每个数据集绘图设置
  4. 数据行
  5. 标签行 - 可选
  6. [空行] - 如果你有更多的数据,只需要重复这个部分
  7. #设置行
  8. 数据行
  9. 标签行 - 可选
  10. [空行]
  11. [空行] - 程序会在这里停止解析
  12. 注释部分 - 你可以在这写任何内容
复制代码


序言区
序言可以改变图的整体属性。 每个序言语句由%起始,并单独成一行。 你可以以任意顺序来写一条或多条序言语句,而被省略的序言语句将使用默认值。

长格式 短格式 默认值 注释
%width= %w= 400 设置图的宽度
%height= %h= 300 设置图的高度
%length= %l= 30 设置能量线的长度
%padding %pd 40 设置图到页面边缘的距离
%pagewidth= %pw= 540 设置页面宽度
注意这个值比(width + 2 * padding)小的时候将被忽略
%pageheight= %ph= 720 设置页面高度
注意这个值比(height + 2 * padding)小的时候将被忽略
%resetsettings %reset 为每个数据集重置设置




设置,数据和标签
设置行由#起始,所有设置项写在一行之中,并用空格隔开。设置行是可选的,你可以直接省略这一行,或者简单的只写一个#。以下是具体的设置项:

设置项 允许的取值 默认值注释
decimal= 0-9 1 设置图上显示的小数位数
numberfont= normal/bold normal 设置数字的字体(正常或粗体)
labelfont= normal/bold bold 设置标签的字体(正常或粗体)
color= (r,g,b) rgb为0,1或0和1之间至多3位小数
000000-FFFFFF(大小写不敏感)
(0,0,0) 设置能量线、数字、标签的颜色


未出现的设置项将保持不变,即会继承之前的设置。 你可以在序言区写上%reset来改变这一行为。

设置行之后的一行是数据行,数据之间用逗号隔开。 为了对齐,你也可以加入空格或制表符。 再下面一行是可选的标签行。 无论是数据行还是标签行,你都可以留空来跳过一些点。 但是你必须保证数据和标签一一对应,数量一致(包括留空的点)。

如果你有更多的数据想绘制在同一张图中,只需要空一行,再重复这个部分即可。

注释部分
你可以用两个连续的空行来标记结束位置。 在这之后的内容将被程序忽略,因此你可以在这里写任何你想写的内容,比如对这个文件的注释。 如果你不打算写任何内容,你甚至可以省略那两个空行。



.edf文件的例子


最简单例子
最简单的.edf文件只有一行,只包含数据:

  1. 1,2,3,4,5
复制代码



稍复杂的例子

  1. %w=500
  2. %h=150
  3. %l=30
  4. %pd=50
  5. %reset

  6. #labelfont=normal color=(1,0.55,0)
  7. 10.0,20.0,30.0,40.0,50.0
  8. you,can,skip,some,data

  9. ,10.0,,-5.0,15.0,-5.0

  10. #numberfont=bold decimal=2 color=0094FF
  11. 1,2,3,4,5,6,7
  12. Label,can,be,empty,,Like,this


  13. SOME COMMENTS...
复制代码



更多例子请查看GitHub链接examples文件夹中的文件。





评分 Rate

参与人数
Participants 14
威望 +1 eV +60 收起 理由
Reason
LiHuaYu + 5 GJ!
Warm_Cloud + 5 好物!
laoman + 3 谢谢
Albert0906 + 5
反氯化苯 + 5 牛!
CalmHarris + 4 とてもいい!
ezez + 5 赞!
skdmax + 5 233333
devilove + 5 好物!
Freeman + 5 谢谢
ABetaCarw + 5 精品内容
YH-W + 5 赞!
天地一沙鸥 + 3 赞!
sobereva + 1

查看全部评分 View all ratings

56

帖子

1

威望

1266

eV
积分
1343

Level 4 (黑子)

2#
发表于 Post on 2023-11-15 14:27:48 | 只看该作者 Only view this author
非常棒!
留给自己点琢磨的时间。

35

帖子

3

威望

794

eV
积分
889

Level 4 (黑子)

3#
 楼主 Author| 发表于 Post on 2023-12-1 00:16:10 | 只看该作者 Only view this author
正在考虑多组数据时数字、标签可能重叠的问题,想问问大家有什么好的想法可以优雅地解决这个问题

129

帖子

0

威望

1154

eV
积分
1283

Level 4 (黑子)

4#
发表于 Post on 2023-12-7 00:08:30 | 只看该作者 Only view this author
李元鹤那个做energy diagram的GUI那么好用,为什么还要重复造轮子呢?

123

帖子

0

威望

1294

eV
积分
1417

Level 4 (黑子)

5#
发表于 Post on 2023-12-7 13:25:48 | 只看该作者 Only view this author
同意楼上,楼主可以考虑将liyuanhe的细节问题进一步解决一下,增强一下功能,就很棒了

本版积分规则 Credits rule

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

GMT+8, 2024-11-25 18:40 , Processed in 0.557100 second(s), 24 queries , Gzip On.

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