|
|
本帖最后由 slxc920113 于 2026-1-20 10:43 编辑
VMD默认的判断成键的规则不是太好,尤其是对于一些带金属元素的簇结构,会缺失大量的成键,虽然可以手动添加,但是实在是费劲,具体操作可以参考sobereva老师的博文。
谈谈VMD可视化程序的连接关系的判断和设置问题
http://sobereva.com/534(http://bbs.keinsci.com/thread-16396-1-1.html)
最近因为计算了大量MOF的簇,渲染轨道的时候需要添加的键太多了,本着一件事情如果重复3次以上就应该写成程序的思想,花了半小时写了如下的脚本,也分享给广大的网友,节约大家的时间。
成键的规则是之前写AuToFF的时候根据GaussView的可视化反推的,但是由于VMD只显示单键,就把双键,三键,共轭双键以及氢键的判断逻辑都删掉了。
使用方法,将脚本添加到VMD的根目录,在vmd.rc结尾添加一行source $env(VMDDIR)/auto_bonding.vmd
然后在控制台输 show_bonding_help 可以查看使用说明。
- 用法:
- auto_addbonds [options]
- 选项:
- -molid <id> 分子ID (默认: top,当前分子)
- -tolerance <val> 容差系数,控制成键距离的宽松程度 (默认: 1.1)
- -cutoff <val> 最大考虑距离,大于此值的原子对不检查 (默认: 5.0 Ang)
- -sel <selection> VMD选择语法,选择要处理的原子 (默认: 所有原子)
- -quiet 安静模式,减少输出信息
- 示例:
- auto_addbonds
- # 为当前分子添加所有键
- auto_addbonds -molid 0 -tolerance 1.1 -cutoff 4.0
- # 为分子0添加键,容差1.1,截断4.0Ang
- auto_addbonds -sel "resname His"
- # 只处理残基名为His的原子
- auto_addbonds -sel "resname UiO and within 10 of resname LIG"
- # 处理UiO残基中距离LIG残基10Ang以内的原子
- auto_addbonds -sel "element C O N" -tolerance 1.2
- # 处理所有C、O、N原子,容差1.2
- auto_addbonds -sel "protein" -cutoff 4.0 -quiet
- # 处理蛋白质原子,截断4.0Ang,安静模式
- auto_addbonds -sel "resid 1 to 10"
- # 处理残基1到10的原子
- auto_addbonds -sel "name CA CB CG"
- # 处理名为CA、CB、CG的原子
- 常用VMD选择语法示例:
- "resname CAU" # 残基名为CAU
- "element C O N" # 元素为C、O、N
- "resid 1 to 10" # 残基1到10
- "chain A" # 链A
- "within 5 of resid 1" # 距离残基1的5Ang以内的原子
复制代码 2025年12月20日更新:
添加select功能,一些分子动力学的文件原子数目太多,原来默认的全部检查成键太耗时了。
2026年1月20日更新,改进了判断成键的算法,现在速度应该会比原来快几十倍。
1. 先用vmd自带的measure contacts进行了空间分区,排除大量不可能成键的原子对。
2. 判断成键的阈值进行缓存,不再重复计算。
3. 一次性先批量获取所有的x,y,z坐标,避免反复访问原子对象
4. 通过x*x+y*y+z*z进行距离的判断,不再开方计算。
auto_bonding.vmd
(15.55 KB, 下载次数 Times of downloads: 75)
|
评分 Rate
-
查看全部评分 View all ratings
|