请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 1441|回复: 8

[波函数分析交流] 用 PyMOL 渲染 HSV 混色模式的 RDG 填色等值面图

[复制链接]

2842

帖子

27

威望

9815

eV
积分
13197

Level 6 (一方通行)

发表于 2019-12-11 20:28:33 | 显示全部楼层 |阅读模式
本帖最后由 liyuanhe211 于 2020-2-26 19:16 编辑

本文未经同意不得转载内容,尤其是专门偷别人东西来发的公众号之类的。可以链接引用。



受益于 Multiwfn 及 Sobereva 的博文,文章中的 RDG 分析越来越常见。大家常使用VMD绘制RDG图。VMD上手容易,可调性极强,但在用 VMD 绘制 RDG 等填色图等值面图的过程中也有一些局限性。主要包括下面几点:(如果有的是我的错误认识,恳请指正)
  • VMD Windows 下 64 位程序不容易获取,加载较大 cube 时内存不足(可以用 Linux,不过x11传可视化界面还是比较难受的)。
  • VMD 不容易显示双键、三键、虚线键。
  • VMD 不记忆打开文件的目录,加载多个文件时要频繁从可执行文件的安装目录走很远去寻找要打开的文件。
  • VMD 不能用 Pov-Ray 渲染填色等值面图 (用 Tachyon 可以渲染,但 Tachyon 手册匮乏,有些效果不知如何增改,如指定位置焦点虚化)
  • (个人问题不太喜欢 tcl 语言)
  • 最重要的一点是,VMD 的混色有问题,这其实挺有意思,稍微解释:

第一个问题是,VMD 中的 colorbar 混色模式是 RGB linear,即分别对两种颜色的 R,G,B 值做数值线性加权平均。这种混合看起来有道理,但其实是不合理的:

如下图所示,左上角是 VMD 的混色模式,因为人眼对亮度的响应函数大概介于 log() 和 sqrt() 之间,所以计算机对各通道亮度的存储是开根号的,而因为 ( (√a + √b) / 2 )^2 < (a + b)/2,所以线性混合的结果是 RGB 中的某个通道越接近 50-50 混合的地方越暗、越“污”。这一点可以从其去色后的灰度图看出来,图中中上和右上分别时 HSV 和 LAB 下的亮度通道,都可见离红绿蓝基准点越远的地方越黑。
混色模式.png


这有两个解决方案,一是先将颜色取平方、加权平均、再开方,得到的结果如“Square”所示,其 LAB-L 通道基本平衡,HSV-V 通道也平均化了许多。
另一种方案是用 HSV-mixing,这样混合出来的HSV-V通道是严格平均化的(不过 LAB-L 通道显示中间较亮,这是考虑人眼对绿色的感知比红、蓝更加敏感,所以有时人眼“感觉”靠中间的位置混色较多的地方稍亮一些)。


第二个问题是,VMD默认三种颜色中的中间一种对应的数值是 min,max 的中点。而RDG图的填色通常是自-0.04至0.02,VMD会将绿色放置在正中央即-0.01的位置上,相对于0点(黑线处)有偏移,这使得一些接近“中性”的范德华作用被显示成略微排斥作用的棕黄色,影响分析。

混色位移.png


为了解决这些缺点,研究了一下用 PyMOL 绘制类似的图,效果不错。写了一个比较方便的脚本。可见结合脚本用PyMOL绘制可以:
  • 使图片比较鲜亮生动,不“污”;
  • 处于范德华作用区域的基团没有被显示为棕色,而显示为比较符合化学直观的(稍黄的)绿色;
  • 可以显示多重键键级。

2019-12-11_19-02-54.jpg


下图体现绿色定位不同造成的差异(下图中大片的RDG等值面按经验判断应该都是“一般的”范德华相互作用,将绿色向正值方向偏移后,RDG更符合化学直观。这两图做的时候没注意两边端点的值稍有区别,不过这不重要,造成显著差别的还是绿色是否在中心。):


2019-12-11_19-22-33.png


所用脚本如下:

PyMOL.zip (10.23 KB, 下载次数: 14)

评分

参与人数 13威望 +2 eV +58 收起 理由
wuzhiyi + 5 谢谢
IIIO_OIII + 5 谢谢
冰释之川 + 5 とてもいい!
puzhongji + 5 精品内容
zsu007 + 5 牛!
lijiayisjtu + 3 好物!
snljty + 5 你太厉害!
sobereva + 2
biogon + 5 とてもいい!
ChrisZheng + 5 とてもいい!
978142355 + 5 GJ!
indec + 5
ene + 5

查看全部评分

2万

帖子

25

威望

2万

eV
积分
54442

管理员

公社社长

发表于 2019-12-13 23:28:35 | 显示全部楼层
好文,链接已加入下文,之后在Multiwfn培训班里也介绍一下
用Multiwfn+VMD做RDG分析时的一些要点和常见问题
http://sobereva.com/291http://bbs.keinsci.com/thread-1206-1-1.html

评分

参与人数 1eV +1 收起 理由
liyuanhe211 + 1 谢谢!

查看全部评分

第12届北京科音初级量子化学培训班将于六月举办!是零基础和初学者速成量子化学计算的非常难得和宝贵的机会,欢迎参加!详情和报名方式见http://www.keinsci.com/workshop/12KEQC
北京科音自然科学研究中心http://www.keinsci.com  致力于计算化学的发展和传播,长期开办最高水准的各种量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训,是提升计算化学研究水平的最佳选择。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯!培训相关信息见《北京科音办的培训班FAQ》(http://bbs.keinsci.com/thread-5098-1-1.html)。
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群:思想家公社QQ群1号:18616395,2号:466017436。合计约6000人。两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一定会被拒绝加入。
思想家公社的门口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!

33

帖子

0

威望

496

eV
积分
529

Level 4 (黑子)

发表于 2020-1-2 09:49:04 | 显示全部楼层
老师好,您文中说:“本脚本只在Windows 10, PyMOL-2.3.4.121 x64 portable (及其自带的python 3.7)下测试通过”。这里明确了别的系统都不可以是吗?我笔记本、台式都是win7

2842

帖子

27

威望

9815

eV
积分
13197

Level 6 (一方通行)

 楼主| 发表于 2020-1-2 18:59:49 | 显示全部楼层
Peter_zhong 发表于 2020-1-2 09:49
老师好,您文中说:“本脚本只在Windows 10, PyMOL-2.3.4.121 x64 portable (及其自带的python 3.7)下测 ...

不是,其他系统理论上都可以,只是仅在Win10测试过。

33

帖子

0

威望

496

eV
积分
529

Level 4 (黑子)

发表于 2020-1-2 19:24:23 | 显示全部楼层
liyuanhe211 发表于 2020-1-2 18:59
不是,其他系统理论上都可以,只是仅在Win10测试过。

谢谢老师我改天试试

2842

帖子

27

威望

9815

eV
积分
13197

Level 6 (一方通行)

 楼主| 发表于 2020-2-7 09:23:13 | 显示全部楼层
更新了一个版本,新的文件夹下有一个Draw_RDG_with_PyMOL_MultipleCube.bat文件,可以通过它载入多个等值面文件,但都使用同一套着色cube。其目的是为了支持这一帖子:http://bbs.keinsci.com/thread-16243-1-1.html。使用方法与上类似,一看就知道差别。

220

帖子

1

威望

3780

eV
积分
4020

Level 6 (一方通行)

发表于 2020-2-7 12:15:40 | 显示全部楼层
好物,谢谢分享!

221

帖子

1

威望

720

eV
积分
961

Level 4 (黑子)

发表于 2020-2-26 18:46:35 | 显示全部楼层
请教一下老师 我在osx/py3下运行了这个脚本 但是显示
    RDG_cube_object_name = proper_object_name(filename_class(RDG_cube).name_stem)[-20:] + "_RDG"
NameError: name 'proper_object_name' is not defined
想问问proper_object_name是什么啊?

221

帖子

1

威望

720

eV
积分
961

Level 4 (黑子)

发表于 2020-2-26 19:01:57 | 显示全部楼层
wuzhiyi 发表于 2020-2-26 18:46
请教一下老师 我在osx/py3下运行了这个脚本 但是显示
    RDG_cube_object_name = proper_object_name(fil ...

好像删掉就可以正常运行了
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2020-5-31 18:54 , Processed in 0.173745 second(s), 28 queries .

快速回复 返回顶部 返回列表