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

计算化学公社

 找回密码
 现在注册!
查看: 677|回复: 6

[波函数分析交流] 分块自定义着色/隐藏 (填色) 等值面 (RDG/ELF) 区块的工具

[复制链接]

2841

帖子

27

威望

9815

eV
积分
13196

Level 6 (一方通行)

发表于 2020-2-7 09:18:00 | 显示全部楼层 |阅读模式
本帖最后由 liyuanhe211 于 2020-4-30 09:39 编辑

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

复杂分子的RDG等值面图经常有很多区域,渲染平面图时相互重叠,有难以让人看清关键部分的问题。解决这个问题可以使用屏蔽cube区域的方法,但常需要屏蔽多次,比较繁琐(尤其是想展示多片RDG区域,且等值面不够规整的时候)。在此开发了一个小工具,用于对cube进行等值面分块,之后可以在图形程序中进行。示例如下面的GIF(操作过程)和最终渲染图片对比(要看动图需特殊上网方法):




拼合_resize.png

这个工具适用于任何等值面分成孤立(不连续)的几片表面的情况,也可以实现等值面图的分片样式设置,如下面是水的ELF等值面图,分开后可以为每一部分设置不同的样式:


工具可从此处下载:
游客,本帖隐藏的内容需要积分高于 25 才可浏览,您当前积分为 0
(因为Python,又懒得精简依赖的包,有一点大)

使用时运行解压后文件夹中的 Isosurface_Split.exe 文件,程序首先询问三个参数:
首先是等值面的值,需要注意程序运行一个循环只能同时处理一个等值面,诸如±0.5是不自动处理的,要分别处理一次。:
  1. Input isovalues for isosurfaces. Split multiple isovalues with a comma (e.g. -0.05, 0.05). Press Enter for [0.5]:
复制代码
其次是对每个值,最多输出多少个等值面,程序会按照等值面的表面积排序,越大片儿的等值面越优先输出,默认输出50个,如果输入-1就有多少个等值面区域输出多少。
  1. Input maximum number of blocks for each isovalue. Press Enter for [50]. Input -1 to remove limit:
复制代码
最后是对切去的空白部分,填充什么数值。这个需要了解一点程序绘制等值面的原理。
  1. Input the value which will be filled to the blank region of a cube file. Press Enter for [100]:
复制代码
程序在绘制等值面时,是在尝试寻找cube文件中等于某数值的点,但因为Cube文件取点是间断的,(一般)没有与所要求值恰好相等的点,所以程序需要对相邻的格子进行某种插值。

用一维的例子进行说明(三维数据对应二维的等值面,一维曲线对应零维的等值点集),下面的曲线中,不做截取时有三个等值点,现在尝试将最左侧的等值点截去时,需要考虑应该对截去的部分填充什么数值,如果填充数值较大(如1.5),会导致程序多插值出一个没有物理意义的等值点(如红色箭头所示)如果设置为0.5,就正常了。


等值面说明.png




实际例子里,RDG图因为是“下凸的”(isovalue越大,等值面包围的面积越大),所以应该设置一个比所有数值都大的数字。ELF图是“上凸的”(isovalue越大,等值面越小),所以应该设置一个接近0的数值。如果设置错误,例如ELF的屏蔽值写了1(而不是正确的0)就会出现下图中第二张图的情况,在曲面的截断处多出一个“相似形状,大小更大的壳子”。

ELF 对比2.png


之后将要用于分割的cube文件拖到程序窗口里,按回车,程序就会自动完成分割,完成后会在原cube文件所在目录下生成一系列由大到小的cube文件:


  1. Size (kB)        Filename
  2. 380,256        func2.cube
  3. 3,677        func2_Iso_1.cube
  4. 1,907        func2_Iso_2.cube
  5. 1,260        func2_Iso_3.cube
  6. 924        func2_Iso_4.cube
  7. 825        func2_Iso_5.cube
  8. 712        func2_Iso_6.cube
  9. 365        func2_Iso_7.cube
  10. 378        func2_Iso_8.cube
  11. 376        func2_Iso_9.cube
  12. 317        func2_Iso_10.cube
  13. 428        func2_Iso_11.cube
  14. 196        func2_Iso_12.cube
  15. 201        func2_Iso_13.cube
复制代码
随后可以用下面这个脚本中的 <Draw_RDG_with_PyMOL_MultipleCube.bat> 自动将这些 cube 都载入 PyMol,实现帖子开头动图里的绘图。 (使用VMD等软件也是可以的,依次手动载入即可,也欢迎分享提供脚本)

PyMOL.zip (9.91 KB, 下载次数: 21)

评分

参与人数 6威望 +2 eV +25 收起 理由
snljty + 5 高级!
zsu007 + 5 好物!
978142355 + 5 因缺思厅
冰释之川 + 5 とてもいい!
sobereva + 2 GJ!
biogon + 5 とてもいい!

查看全部评分

298

帖子

0

威望

904

eV
积分
1202

Level 4 (黑子)

发表于 2020-2-7 16:20:38 | 显示全部楼层
标尺的字体是怎么控制的

701

帖子

5

威望

3193

eV
积分
3994

Level 5 (御坂)

发表于 2020-2-8 10:23:39 | 显示全部楼层
这是引诱我下载PyMOL么
Stand on the shoulders of giants

2841

帖子

27

威望

9815

eV
积分
13196

Level 6 (一方通行)

 楼主| 发表于 2020-2-8 10:25:15 | 显示全部楼层
冰释之川 发表于 2020-2-8 10:23
这是引诱我下载pymol么

这个分块VMD照样用,只是我不喜欢TCL,等值面填色有点问题,其他的VMD还是比PyMol亲民

701

帖子

5

威望

3193

eV
积分
3994

Level 5 (御坂)

发表于 2020-2-8 10:27:31 | 显示全部楼层
本帖最后由 冰释之川 于 2020-2-8 10:28 编辑
liyuanhe211 发表于 2020-2-8 10:25
这个分块VMD照样用,只是我不喜欢TCL,等值面填色有点问题,其他的VMD还是比PyMol亲民

不过 VMD的colorbar 确实 看着有些不舒服……棕色区域一坨屎一样……
啥时候搞个VMD版的脚本呗 (白女票党):
Draw_RDG_with_VMD_MultipleCube.bat
Stand on the shoulders of giants

2841

帖子

27

威望

9815

eV
积分
13196

Level 6 (一方通行)

 楼主| 发表于 2020-2-8 10:40:48 | 显示全部楼层
冰释之川 发表于 2020-2-8 10:27
不过 VMD的colorbar 确实 看着有些不舒服……棕色区域一坨屎一样……
啥时候搞个VMD版的脚本呗{: ...

不会写Tcl,等别人写

4

帖子

0

威望

31

eV
积分
35

Level 2 能力者

发表于 2020-4-30 00:09:10 | 显示全部楼层
挺好的。
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

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

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

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