计算化学公社
标题: 利用VMD批量实现键级的自动标注 [打印本页]
作者Author: luzujia 时间: 2024-5-25 20:34
标题: 利用VMD批量实现键级的自动标注
本帖最后由 luzujia 于 2024-5-25 20:44 编辑
研究了一下怎么批量实现键级的自动标注,在此整理向大家分享。(虽然有这个需求的小伙伴应该不多,但万一有用呢)
好像没有任何的可视化程序可以直接显示分子的键级,受社长利用原子显示静电势表面极值点的方法的启发,实现了基于VMD的键级自动标注。
步骤:
1. 首先要有一个键级列表文件,我的命名格式为[mol]_bond_BO.txt,文件的结构如下:
(, 下载次数 Times of downloads: 79)
第一列是化学键,第三列是键级,第二列是键长,并没有什么用,写成这种格式是“历史原因”。这个文件我是用脚本从Multiwfn里输出的键级记录文件bndmat.txt里读的,基本思路是先从高斯输出文件里读键连关系,再去bndmat.txt里找相应的键级。这个脚本也给了,就是附件里的geom.sh。从名字可以看出来,这个脚本原来是用来从高斯输出文件里读键长、键角、二面角的。不带参数执行会输出如下的使用说明
(, 下载次数 Times of downloads: 84)
简单解释一下,i/o分表代表”读初始结构/读最后一帧结构”,<B/A/D/T>分别代表输出”键长/键角/二面角/全部”,如果第三个参数是一个文件那就会去读键级。在我的例子中,执行“geom.sh ske100.out i bndmat.txt”就得到ske100_bond_BO.txt。在后面的bo_visual.sh和showchrg.vmd两个脚本中,都是按这个规则去找相对应的文件的。所以要注意文件名命名格式,或者改脚本以符合你的习惯。同理,我定义键级文件是3列的,如果你用自己的方法得到的没有键长这一列,要嘛随便填点东西占位,要嘛改脚本。
2. 把分子结构文件转为mol2格式,我是用Open Babel把高斯输出文件转成mol2文件。命令为“obabel -ig98 input_file -omol2 -O output_file”。
3. 用bo_visual.sh生成mol2文件对应的“键级点”文件[mol]_bo.mol2。我进行自动标注的思路是在每个键的中心点定义一个原子(就叫做键级点吧),把键级写到原子电荷的位置(@<TRIPOS>ATOM字段的最后一列),然后用vmd同时载入分子结构文件和键级点文件,然后显示键级点的原子电荷,这就实现了自动标注键级的作用。
4. 把所有的[mol].mol2、[mol]_bo.mol2文件和附件里的showchrg.vmd、showchrg.tcl脚本都拷到VMD文件夹里。在VMD命令行窗口输入“source showchrg.vmd”就会对所有分子进行批量键级标注。效果如下:
(, 下载次数 Times of downloads: 83)
图中红色的点表示该键的键级最小,特别用不同元素作了标识。VMD默认的原子标签是绿色的,如果想用别的颜色(像这个例子改成了紫色),就按“Graphics--Colors--Labels--Atoms--Colors”在VMD里设置完再运行脚本。
5. 把多张图片排版合并成大图。这是个人的需求,让gpt写了个python脚本实现这个功能,我觉得还挺方便的,也在此分享出来(附件里的image_grids.py,要安装Pillow模块:“pip install pillow”)。先用IrfanView批量裁去白边,再调用image_grids.py进行排版,命令为“python image_grids.py/path/to/images output_grid --rows 3 --cols 3 --add_labels --font_path/path/to/arial.ttf --font_size 24 --h_spacing 10 --v_spacing 10”。可以定义每行和每列放几个,在每个小图下标注其对应的文件名,还可以定义字体(直接用系统自带的字体,如C:/Windows/Fonts/arial.ttf)、还能定义横向和纵向间距。最后效果如下,效果嘛,只能说差强人意吧。
(, 下载次数 Times of downloads: 83)
作者Author: sobereva 时间: 2024-5-26 04:38
之前我介绍过用GaussView实现的方式
将Multiwfn计算的键级直接标注在分子结构图上的方法
http://sobereva.com/523(http://bbs.keinsci.com/thread-15658-1-1.html)
作者Author: zsu007 时间: 2024-5-26 12:29
谢谢楼主的分享!
作者Author: anlancx 时间: 2024-5-31 16:00
本帖最后由 anlancx 于 2024-5-31 17:00 编辑
1.geom.sh ske100.out i bndmat.txt 这里为什么是i,而不是o呢?
2.为什么最后用vmd生成图片的时候那么小呢?好模糊
作者Author: luzujia 时间: 2024-6-3 15:35
1. i和o都可以,因为只读取键连关系,读哪一帧都可以
2. 我的参数是按照自己的体系调的,可能不适合你的体系。你可以分别在showchrg.tcl里的“label textsize 0.5”调节字体大小,在showchrg.vmd里的“scale to 0.15”调节分子的大小,其它的参数也都可以调,主要在showchrg.vmd里定义。
欢迎光临 计算化学公社 (http://bbs.keinsci.com/) |
Powered by Discuz! X3.3 |