计算化学公社

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

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

[复制链接 Copy URL]

3097

帖子

29

威望

1万

eV
积分
17091

Level 6 (一方通行)

本帖最后由 liyuanhe211 于 2020-4-30 09:39 编辑

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

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





这个工具适用于任何等值面分成孤立(不连续)的几片表面的情况,也可以实现等值面图的分片样式设置,如下面是水的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,就正常了。






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



之后将要用于分割的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, 下载次数 Times of downloads: 57)


这个脚本的使用方法见《用 PyMOL 渲染 HSV 混色模式的 RDG 填色等值面图》http://bbs.keinsci.com/thread-15756-1-1.html



向命令提示行中贴入多个文件可以用Windows explorer的“复制为路径功能”,选中这些cube文件之后按着shift点右键即有这个选项,可直接贴入cmd窗口里回车(不必去除引号)。



另外有个小问题,如果遇到下面最右侧这种“等值面多出一个角”的情况,可将程序目录下Isosurface_Split.ini中的 swell=4 改小一些,如 swell=6 是最右侧的样子,swell=2 就正常了是最左侧的样子,但如果没有这个问题,应该使 Swell 保持 4。这个数值是等值面的周围保留几个格子,因为绘图程序有时用不止一个格子做差值,所以仅保留两个格子有时绘图效果不佳,会有不平滑、锯齿的现象,所以尽量在不出问题的时候保留的稍多一点。




反馈与Bug:


如果遇到闪退问题,请在cmd里运行这个程序(方法是在exe文件所在的文件夹下,空白处按shift点右键,选择“在此处打开命令行窗口”,然后输入 ./Isosurface_Split.exe 运行程序,这样程序运行出错后能保留报错前的情况。如遇Bug,请将cube文件,操作选项,以及最后的报错传给我。


评分 Rate

参与人数
Participants 12
威望 +2 eV +48 收起 理由
Reason
西装暴徒 + 3 谢谢
Zaic + 3 好物!
slowlearner + 4 谢谢
woller + 3 好物!
xiaos + 5 好物!
ggdh + 5 牛!
snljty + 5 高级!
zsu007 + 5 好物!
978142355 + 5 因缺思厅
冰释之川 + 5 とてもいい!
sobereva + 2 GJ!
biogon + 5 とてもいい!

查看全部评分 View all ratings

1242

帖子

1

威望

3666

eV
积分
4928

Level 6 (一方通行)

2#
发表于 Post on 2020-2-7 16:20:38 | 只看该作者 Only view this author
标尺的字体是怎么控制的

1102

帖子

18

威望

6692

eV
积分
8154

Level 6 (一方通行)

計算化学の社畜

3#
发表于 Post on 2020-2-8 10:23:39 | 只看该作者 Only view this author
这是引诱我下载PyMOL么
Stand on the shoulders of giants

3097

帖子

29

威望

1万

eV
积分
17091

Level 6 (一方通行)

4#
 楼主 Author| 发表于 Post on 2020-2-8 10:25:15 | 只看该作者 Only view this author
冰释之川 发表于 2020-2-8 10:23
这是引诱我下载pymol么

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

1102

帖子

18

威望

6692

eV
积分
8154

Level 6 (一方通行)

計算化学の社畜

5#
发表于 Post on 2020-2-8 10:27:31 | 只看该作者 Only view this author
本帖最后由 冰释之川 于 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

3097

帖子

29

威望

1万

eV
积分
17091

Level 6 (一方通行)

6#
 楼主 Author| 发表于 Post on 2020-2-8 10:40:48 | 只看该作者 Only view this author
冰释之川 发表于 2020-2-8 10:27
不过 VMD的colorbar 确实 看着有些不舒服……棕色区域一坨屎一样……
啥时候搞个VMD版的脚本呗{: ...

不会写Tcl,等别人写

4

帖子

0

威望

47

eV
积分
51

Level 2 能力者

7#
发表于 Post on 2020-4-30 00:09:10 | 只看该作者 Only view this author
挺好的。

538

帖子

2

威望

2482

eV
积分
3060

Level 5 (御坂)

8#
发表于 Post on 2021-2-1 11:59:01 | 只看该作者 Only view this author
老师,您好,请问您这个在非正交的周期边界下是否可行呢?

6

帖子

0

威望

918

eV
积分
924

Level 4 (黑子)

9#
发表于 Post on 2021-2-26 19:32:46 | 只看该作者 Only view this author
挺好的1

本版积分规则 Credits rule

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

GMT+8, 2025-8-12 01:04 , Processed in 0.190605 second(s), 30 queries , Gzip On.

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