计算化学公社
标题: 绘制 Energy Profile 的小工具 2.0 [打印本页]
作者Author: liyuanhe211 时间: 2016-2-9 01:26
标题: 绘制 Energy Profile 的小工具 2.0
本帖最后由 liyuanhe211 于 2018-2-15 02:09 编辑
######## UPDATE ########
本程序已更新3.0版本,见下文:
http://bbs.keinsci.com/thread-9256-1-1.html
######## UPDATE ########
######## UPDATE ########
2016.3.1 更新2.0:
增加自定义纵坐标文字
增加了拖动数值的功能,解决数值overlap
解决了原有负数区域Tag拖动后消失的Bug(Matplotlib库的问题)
具体情况与新下载地址见本文末尾
######## UPDATE ########
----------------------------------------------------------- 原文↓ -----------------------------------------------------------
火车上闲得无聊,用 Python+PyQt5+matplotlib 写了一个给自己用的、绘制能量折线图(Energy Profile)的小工具,可以做出如下的图。
在群里显摆了一下,竟然有很多人想要,以及发现有至少4人竟然一直用 ChemDraw+鼠标+眼 来做类似的图。。。故编译成 exe 传上来(python本身不需要编译,但源码运行需要用户安装python和相应库)。
(, 下载次数 Times of downloads: 180)
(, 下载次数 Times of downloads: 128)
这组数据是本组之前一篇文章里的数据(10.1038/ncomms9617),稍微调一调,放到ChemDraw里画上结构,估计可以达到发表的标准,原文中的图如下:
(, 下载次数 Times of downloads: 149)
(P.S. 个人十分讨厌 kCal/mol 这个非 SI 非 au 单位)
使用方法:
下载后解压缩,可得到3个文件夹。exe 是 ./Packed/Draw_Energy_Diagram.exe, 源码在SourceCode文件夹里, Example里有一些实例。
程序界面如下,读取的输入是 excel 文件(内容下文说),可以用 Load 按钮打开,或者直接拖到 Drop Area 里。
随后就会显示对应的图片。可以通过缩放窗口、或使用放大镜工具调整图片的范围和长宽比。按保存可以将当前状态存为多种图片文件(推荐png)
(, 下载次数 Times of downloads: 149)
下面是对应于上图的 excel 输入:
(, 下载次数 Times of downloads: 136)
- 1~2行(可以是任意多行):
- A列为颜色声明(K: 黑色,R: 红色,其他代码见下),指认该行的颜色。
- B,C,D...为各路径的能量。
- 3行:
- 一个空行(分割数据部分和Tag部分)
- 4~5行(行数与数据部分对应):
- 数据部分,每个态对应的tag
复制代码
这种输入格式其实有点奇怪,因为它其实是我的另一个程序的输出格式。。。
- #DDEEFF: Arbitrary RGB Color
- b: blue
- g: green
- r: red
- c: cyan
- m: magenta
- y: yellow
- k: black
- w: white (这个显示不出来。。。)
复制代码
(, 下载次数 Times of downloads: 120)
保存为png后,可以直接用ChemDraw打开,随后开始在图上绘制分子结构:
(, 下载次数 Times of downloads: 132)
(, 下载次数 Times of downloads: 32)
这个程序初衷是个自用软件,没想发布,可能有其他Bug。有问题请先看Example。之后可直接在本帖反馈,反馈时上传自己的Excel文件。
当两个Tag几乎完全重合时,用鼠标拖动会同时拖动两个Tag。暂时可以放大后、脱开、再缩小;或直接把两个Tag都拖到一边,画图里删了它自己加两个。暂时没想到特别好的解决方法。
如下图,有些时候Tag之间会相互重叠,用鼠标可以拖动Tag调整位置。
(然而,调整位置这个功能本身也有bug,如果 Tag 对应的值是负数,Tag拖动之后会消失 (╯﹏╰)b,就变成本帖第一张图的样子了,这是 Matplotlib 库本身的问题,不知如何解决。在正数区域是正常的,如上图显示不同颜色的例子中就是拖动过的。)
有类似情况请自行在ChemDraw等软件里补上几个Tag
################################ UPDATE ################################
2016.3.1,2.0版本新增:
- 现在可以拖动数值Tag以解决能级接近时,数值 Tag overlap的问题;同时解决有人希望将数值放在能级线 左边/右边/下边。。。
(, 下载次数 Times of downloads: 117)
- 可以定义纵坐标内容,在程序目录下,有一文本文件 Energy_Diagram_Y_Axis_Text.txt,修改其中的文字即可显示在Y轴上
(, 下载次数 Times of downloads: 137)
######## UPDATE ########
下方地址已失效,本程序已更新3.0版本,见下文:
http://bbs.keinsci.com/thread-9256-1-1.html
######## UPDATE ########
作者Author: smutao 时间: 2016-2-9 04:46
本帖最后由 smutao 于 2016-2-9 04:52 编辑
用DataGraph做出的效果图
(见附件)
(, 下载次数 Times of downloads: 281)
作者Author: smutao 时间: 2016-2-9 04:49
作者Author: 北纬18° 时间: 2016-2-9 05:16
要画分子式其实直接在chemdraw 里作更方便,
要不然还要画分子式,再ps上去。
作者Author: smutao 时间: 2016-2-9 06:25
我的分子式是直接从chemdraw复制粘贴过去的
作者Author: 我本是个娃娃 时间: 2016-2-9 09:34
其实风格可以多选一下,比如文字不是上下编排,而是左右,这样比较好一点
作者Author: liyuanhe211 时间: 2016-2-9 10:50
本帖最后由 liyuanhe211 于 2016-2-9 11:09 编辑
上面说明里已更新。
为。。什。。么。。会。。需。。要。。PS。。。
作者Author: liyuanhe211 时间: 2016-2-9 10:51
不要把分子式放到图里啊,把图放到ChemDraw里不就完了。。。
作者Author: liyuanhe211 时间: 2016-2-9 11:43
这个程序初衷没想给别人用,所以没留处理选项的地方。可以考虑直接把作图的两句命令拎出来,让大家直接改吧。
作者Author: luwis 时间: 2016-2-9 17:08
我能够感受到大家群策群力的精神!谢谢大家!
作者Author: 虎王 时间: 2016-2-9 23:57
我觉得Origin结合PPT怎么样都比“ ChemDraw+鼠标+眼”方便准确呀......
作者Author: 虎王 时间: 2016-2-9 23:59
那叫结构式吧。而且在ChemDraw里画好后导出图片再插入PPT里也不错。
作者Author: liyuanhe211 时间: 2016-2-10 00:50
本帖最后由 liyuanhe211 于 2016-2-10 19:17 编辑
真要这么干直接复制ChemDraw对象到PPT不就行了
作者Author: 虎王 时间: 2016-2-11 13:37
个人兴趣。不太喜欢直接复制。
不过我的意思是Origin就可以做出准确定量的能级图,然后在ppt里修饰一下效果就不错了。所以有点惊讶有些人用ChemDraw来实现类似的效果。
作者Author: 平辉正 时间: 2016-2-12 19:24
可以用origin导出AI格式的文件,在AI里面进行更加细节的编辑。个人觉得这个软件已经很棒了~~毕竟程序本来也就是作者写来打算自用的
作者Author: Aesar 时间: 2016-2-12 23:20
请问,我能弱弱地问一句您是怎么学习的python吗?希望您能分享一下经过和经验
作者Author: liyuanhe211 时间: 2016-2-13 00:30
本帖最后由 liyuanhe211 于 2016-2-13 00:32 编辑
我本来有C++基础,Python就很好学了,随便找了本书翻了翻就完了。。。
其他的用到了现查。
据说无基础入门可以看这个公开课:Programming for Everybody。这门课材料的授权都是CC的。
课本:http://do1.dr-chuck.com/py4inf/EN-us/book.pdf
所有的课件和上课视频:http://open.umich.edu/education/ ... winter2014/sessions
课程:https://www.coursera.org/course/pythonlearn
有别的语言基础可以去撸这本书的附录:《Python for Data Analysis - O'Reilly Media》
不要重复造轮子,尽情的import吧,有现成的(好用的)库就别自己写,可以去awesome-python里看一遍好玩的库。
不要看中文书,为了给某个人帮忙找了很久,没有找到任何一本可接受的。
作者Author: Aesar 时间: 2016-2-13 10:19
非常感谢您!
作者Author: 我本是个娃娃 时间: 2016-2-13 11:37
推广是造福天朝百姓
作者Author: ximi1986 时间: 2016-2-22 17:26
哈哈,我都是在 origin里画的
作者Author: maxwell 时间: 2016-2-24 14:36
老师,您好,请问下,纵坐标中的free energy怎么改成自己需要的因变量..非常感谢~~
作者Author: liyuanhe211 时间: 2016-2-24 16:48
由于是自己用的软件,暂时没有设计相应选项,如果会用Python的话,在源代码里搜一下kCal/mol修改一下就可以了。如果不会,目前只能用画图之类的图像编辑软件自己抹掉打上去。
最近十分忙,暂时没空更新软件。更新后会把作图命令都放出来允许大家自定义。
作者Author: maxwell 时间: 2016-2-24 16:57
恩恩,好的,谢谢老师
作者Author: kevin 时间: 2016-2-25 20:29
我就是那个chemdraw+鼠标+眼的选手。。。。感谢楼主,向楼主学习!想想当有一天我也能写程序了那该有多炫酷
作者Author: liyuanhe211 时间: 2016-2-26 13:12
大学学过任何计算概论之类的入门课的话,Python一个星期就能写很实用的小东西了
作者Author: hcxytpp@163.com 时间: 2016-3-1 14:01
老师,有一个问题想请教您,在使用您编写的绘制能量折线图工具时,遇到一个小问题,就是,能量相隔很近时,可以通过什么样的方法减小默认刻度以方法显示?期待您的答复!谢谢老师!
作者Author: liyuanhe211 时间: 2016-3-1 15:39
"减小默认刻度以方法显示"?
什么意思?
上传一下Excel文件
作者Author: hcxytpp@163.com 时间: 2016-3-1 15:48
本帖最后由 hcxytpp@163.com 于 2016-3-1 15:49 编辑
谢谢老师,不好意思,打错了,是方便显示 可以肉眼区分附件中的相近能量
作者Author: helpme 时间: 2016-3-1 16:29
本帖最后由 helpme 于 2016-3-1 20:28 编辑
我就是用 Origin结合PPT 这个方法的。画虚线,实线。
不过楼主这个方法确实很自动化一些。
作者Author: 虎王 时间: 2016-3-1 19:14
这个方法指哪个?
作者Author: liyuanhe211 时间: 2016-3-1 19:30
噫,这个Bug,以及之前的负数区域拖动Tag会消失的Bug其实都已经解决了,就是现在打包exe老出问题。。。
作者Author: hcxytpp@163.com 时间: 2016-3-1 19:57
谢谢老师,好期待您更新的软件,简直就是自动化的,太棒了!
作者Author: liyuanhe211 时间: 2016-3-1 21:22
已更新文字可以拖动
作者Author: liyuanhe211 时间: 2016-3-1 21:22
更新了
作者Author: hcxytpp@163.com 时间: 2016-3-2 08:25
谢谢老师!
作者Author: kevin 时间: 2016-3-2 08:49
li老师,我还是有点问题,在拖动数字的时候,有的数字和符号重叠在一起了,两个一起动分不开,是我操作有问题么
作者Author: liyuanhe211 时间: 2016-3-2 10:24
确实有这个问题。一方面可以放大之后,让它们分开(除非坐标精确一样),然后拖动开,再缩小;觉得麻烦可以直接把两个都扔一边去,图像软件里删了自己再打两个了。目前暂时不太容易解决。
作者Author: 我本是个娃娃 时间: 2016-3-2 10:47
撒花,鼓励
作者Author: comchem 时间: 2016-6-3 11:16
老师,请问怎样修改标签的字体大小?如ts1, int1等,图中默认的字体太小,看不清楚,我想改大一点。谢谢。
作者Author: liyuanhe211 时间: 2016-6-3 11:33
由于这个软件一开始没有为给其他人用而设计,所以没有留充分的自定义选项。目前要用已编译好的程序就不能改。如果会配Python改size一个数就可以了。
作者Author: 一颗赛艇 时间: 2016-8-14 10:08
本帖最后由 一颗赛艇 于 2016-8-14 11:33 编辑
李老师,请问为什么我在linux下直接python2.7 ./Draw_Energy_Diagram.py,报错
- File "./Draw_Energy_Diagram.py", line 78
- def __init__(self,state_line1:State_Line,state_line2:State_Line,style='-',color='k',width=1):
- ^
- SyntaxError: invalid syntax
复制代码
作者Author: Jacken_zzq 时间: 2016-8-15 23:00
谢谢楼主,最近一直在琢磨怎么做出漂亮的Energy Profile.
不知道楼主介不介意我在组里分享这个程序?
作者Author: liyuanhe211 时间: 2016-8-15 23:37
不介意,简单的小东西而已,源码也随便用。
作者Author: SongChao 时间: 2016-8-16 09:48
感谢楼主分享,一直有个问题,就是我一旦用了拖动或者放大,点鼠标右键或者esc都不能变回鼠标拖动图里面数字的的位置了,不知道是不是matplotlib本身的问题?
作者Author: liyuanhe211 时间: 2016-8-16 12:09
“都不能变回鼠标拖动图里面数字的的位置”什么意思?
作者Author: librakitty 时间: 2016-8-16 16:11
您好,老师这个东东很好使,不过这个是不是反应通道个数是不是有限制,8条的时候还能画。但是加到10条的时候一点load就闪退,请问是有什么问题吗?另外就是这个线条的颜色可以在哪里改吗?谢谢您
作者Author: liyuanhe211 时间: 2016-8-16 16:23
本帖最后由 liyuanhe211 于 2016-8-16 16:35 编辑
应该没有限制。上传一下你会闪退的excel文件。
颜色问题在介绍里写了
作者Author: qwoop 时间: 2016-8-16 16:28
先膜拜大神。
想问一下用什么工具打包的?py2exe吗?
另外,打包这种带pyqt和matplotlib库的py脚本有什注意事项?和普通打包流程(不带第三方库的)有什么区别吗?
作者Author: liyuanhe211 时间: 2016-8-16 16:34
cx_freeze,没有注意事项,includes正常写上 PyQt5 和 PyQt5.uic 就行了(后者是因为偷懒,正常代码里不用)
作者Author: librakitty 时间: 2016-8-16 16:43
本帖最后由 librakitty 于 2016-8-16 17:09 编辑
老师,我解决了,之前没太认真看颜色那块的问题,瞎搞了一下,现在把颜色那块改对了,就能画了,谢谢您了。
作者Author: librakitty 时间: 2016-8-16 16:46
老师,貌似是颜色那块的问题~~
作者Author: SongChao 时间: 2016-8-16 18:37
就是选择拖拽之后,可以拖拽图片整体,但是没法解除拖拽状态,也没法对字进拖拽,选了放大,也没法解除鼠标的放大功能,refresh不能解除状态。只有退出程序重新打开之后才能移动文字和数字的位置。
作者Author: liyuanhe211 时间: 2016-8-16 19:03
(至少我试着)点拖拽按钮之后想解出拖拽状态就再点一下拖拽按钮就行了,解出拖拽状态后移动文字也是正常得
作者Author: SongChao 时间: 2016-8-16 20:10
居然是这样。。。。。。。。。。谢谢回复
作者Author: qwoop 时间: 2016-8-18 13:11
谢谢指点
作者Author: librakitty 时间: 2016-8-29 11:39
老师,把局部放大了之后,拖拽文字是咋操作呢?之前还能搞对,现在放大一拖动,整个坐标都跟着跑了。谢谢
作者Author: liyuanhe211 时间: 2016-8-29 13:14
把工具条上的特殊状态点掉,比如点击了放大工具或移动工具,就再点一下它取消掉。
作者Author: librakitty 时间: 2016-8-29 14:44
好的,老师,非常感谢。
作者Author: Jacken_zzq 时间: 2016-9-12 00:45
您好,我在运行Source code的时候,出现如下提示:
GUI not modified.
libpng warning: iCCP: known incorrect sRGB profile
然后没有任何反应,没有弹出正常的程序界面,请问这是什么问题?Python的库有缺失吗?
作者Author: liyuanhe211 时间: 2016-9-12 00:53
这两个提示都是正常情况下会有的,Python有库找不到应该会有相应提示,确实判断不出你是什么情况。
软件只在windows上测试过。
另外似乎PyQt的库有个Bug,如果系统里运行了很多次QApplication对象(开了很多次程序,即使前面运行的程序关了也不行)会导致建立QApplication越来越慢,到最后会需要几秒钟才可,重启才行。不过如果第一次都没有跑起来应该不会是这个原因。
作者Author: 小巨人 时间: 2016-9-21 09:34
你的这种情况解决了吗? 我的也是这样,当选择放大之后,想移动文字时,发现一直是出于放大状态无法解出.
作者Author: SongChao 时间: 2016-9-23 18:14
再点一次你之前点的那个按钮
作者Author: lip 时间: 2016-11-4 09:42
谢谢楼主贡献~
小建议:能否添加可选线条的类型,比如可选虚线之类的。因为有些文章印刷版图是黑色,采用不同类型的线条能增加黑白图的辨识度。
作者Author: Jacken_zzq 时间: 2017-2-9 23:35
源码在Mac下可以运行吗?
我在运行时出现这个错误:
File "/Users/zhiqiang/Downloads/Energy Diagram Release By.LYH 2.0/SourceCode/Draw_Energy_Diagram.py", line 78
def __init__(self,state_line1:State_Line,state_line2:State_Line,style='-',color='k',width=1):
^
SyntaxError: invalid syntax
Windows下可以正常运行,还是我的库的问题?
作者Author: SigFig 时间: 2017-2-11 07:36
换行符的问题?windows和linux(以及苹果的mac os)的换行符是不一样的。如果原作者在windows下写的这些code,直接拷到mac底下就会出这种莫名其妙的问题。
可以拿hex editor 看一下(notepad++之类的很多编辑器自带hex模式),windows的换行符是0D0A(\r\n),mac是0D(\r),顺便说一下,这些字符是不可见的,所以说直接看源代码是看不出这种问题的。
可以试着在mac底下新建一个文档,把原code拷贝到新文档里头并保存成.py
作者Author: Jacken_zzq 时间: 2017-3-3 11:04
好像是Python版本的原因,换了一个Python版本可以用了。
多谢回复!
作者Author: adia 时间: 2017-3-16 20:45
李老师您好!在Energy_Diagram_Y_Axis_Text.txt中修改文字并保存不应该就自定义了纵坐标的内容吗,为啥我没实现啊
作者Author: liyuanhe211 时间: 2017-3-16 20:59
应该是不明原因没有在当前目录下找到这个文件,程序没找到这个文件就会在当前目录下生成一个新的Energy_Diagram_Y_Axis_Text.txt,并在里面填充默认文字(好像是“Free Energy”?忘了),看看有没有某个相关目录下存在这么个文件,内容是“Free Energy XXX”。把它改了试试
作者Author: adia 时间: 2017-3-16 21:04
谢谢老师,解决了
作者Author: liyuanhe211 时间: 2017-3-17 08:40
是什么问题?
作者Author: adia 时间: 2017-3-17 10:21
是我自己蠢,找错了这个文件的位置,跟老师的程序没关系,不好意思
作者Author: adia 时间: 2017-3-19 18:27
李老师您好,请问是chemdraw版本的问题吗,我用了好几个chemdraw,都打不开上面保存的png格式图片啊,请问您是那个版本的,谢谢
作者Author: liyuanhe211 时间: 2017-3-19 21:41
15、16都行
作者Author: adia 时间: 2017-3-19 21:49
好的,谢谢啦
作者Author: 三迩- 时间: 2017-9-2 17:42
老师您好,这个下载链接打不开了。
作者Author: exity 时间: 2017-9-8 06:14
awesome
作者Author: shx 时间: 2017-9-8 18:03
多谢楼主,非常实用。
我最近一直在用的是MagicPlot这个软件,有学术版本,免费的,用起来也很容易,也推荐一下。
作者Author: steven 时间: 2017-9-8 19:23
刚好需要,看到此帖.
谢谢
作者Author: xiaoma0417 时间: 2017-9-10 12:08
学习了,谢谢
作者Author: chw985550192 时间: 2017-10-31 19:45
您好,我在edit修改width的时候,只有一个横线变了,其他的为啥不变化,谢谢
作者Author: 哈哈哈 时间: 2019-5-10 08:52
老师,我有个小问题想问问你怎么处理的:示例中CP3是TS2的产物,从TS2走IRC得到CP3,从而可以计算一个CP3的能量。TS3走IRC得到其相应的反应物(以CP3-0表示吧),也可以计算其相应的能量。由于加了9,那么CP3-0和CP3体系的原子数不同能量变化应该有点大,想问这里是怎么处理的将CP3-0和CP3最终以CP3表示(体系原子数不同,怎么合并的。我做的也涉及到这个,我想做一个总的图,但会涉及原子数不同和催化的环境不同,不知道怎么合并合适)?谢谢哈
作者Author: liyuanhe211 时间: 2019-5-10 10:31
一个势能面上各个态的原子数必须是一样的,如果不一样应该配平,比如这里CP3之前其实应该相当于每一个态都加上一个孤立的化合物9的能量。
在考虑上述问题的基础上,如果CP3-0的自由能比CP3高,则只画CP3,否则,如果画的开/差的多,两个都画上,这说明CP3与PPh3会形成稳定的复合物,CP3-0单独画成一个态是合理的;如果CP3-0比CP3低,并且只能画下一个,只画CP3-0,因为下一步的活化自由能是从稳定的复合物开始算的。
作者Author: 哈哈哈 时间: 2019-5-10 11:03
好的 谢谢你
作者Author: pinkshu 时间: 2021-4-16 15:28
太赞了
作者Author: tsingjm 时间: 2021-5-15 11:15
作者Author: harpia 时间: 2021-6-4 20:05
感谢!
作者Author: mengyu0007 时间: 2022-4-17 13:22
感谢分享,最近一直在找
作者Author: 笃定 时间: 2024-11-11 21:29
感谢分享!
欢迎光临 计算化学公社 (http://bbs.keinsci.com/) |
Powered by Discuz! X3.3 |