本帖最后由 liyuanhe211 于 2020-11-12 23:52 编辑
本文未经同意不得转载内容,尤其是专门偷别人东西来发的公众号之类的。可以链接引用。
受益于 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 下的亮度通道,都可见离红绿蓝基准点越远的地方越黑。
这有两个解决方案,一是先将颜色取平方、加权平均、再开方,得到的结果如“Square”所示,其 LAB-L 通道基本平衡,HSV-V 通道也平均化了许多。
另一种方案是用 HSV-mixing,这样混合出来的HSV-V通道是严格平均化的(不过 LAB-L 通道显示中间较亮,这是考虑人眼对绿色的感知比红、蓝更加敏感,所以有时人眼“感觉”靠中间的位置混色较多的地方稍亮一些)。
◆ 第二个问题是,VMD默认三种颜色中的中间一种对应的数值是 min,max 的中点。而RDG图的填色通常是自-0.04至0.02,VMD会将绿色放置在正中央即-0.01的位置上,相对于0点(黑线处)有偏移,这使得一些接近“中性”的范德华作用被显示成略微排斥作用的棕黄色,影响分析。
为了解决这些缺点,研究了一下用 PyMOL 绘制类似的图,效果不错。写了一个比较方便的脚本。可见结合脚本用PyMOL绘制可以:- 使图片比较鲜亮生动,不“污”;
- 处于范德华作用区域的基团没有被显示为棕色,而显示为比较符合化学直观的(稍黄的)绿色;
- 可以显示多重键键级。
下图体现绿色定位不同造成的差异(下图中大片的RDG等值面按经验判断应该都是“一般的”范德华相互作用,将绿色向正值方向偏移后,RDG更符合化学直观。这两图做的时候没注意两边端点的值稍有区别,不过这不重要,造成显著差别的还是绿色是否在中心。):
所用脚本如下:
PyMOL.zip
(10.23 KB, 下载次数 Times of downloads: 116)
|