计算化学公社

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

[VMD] 求助VMD脚本仅能准确统计一帧的问题

[复制链接 Copy URL]

10

帖子

0

威望

160

eV
积分
170

Level 3 能力者

跳转到指定楼层 Go to specific reply
楼主
求助各位老师,在使用该脚本统计两分子与水形成的氢键桥中两个氢键的平均键角时,如果仅统计一帧数据准确,统计多帧数时出现错误的键角数据(如30度),经检查问题大概率出在第二次foreach循环但是没有发现具体问题是什么

angle5.tcl

1.24 KB, 下载次数 Times of downloads: 4

889

帖子

3

威望

1679

eV
积分
2628

Level 5 (御坂)

傻傻的木瓜

2#
发表于 Post on 2025-4-24 13:23:37 | 只看该作者 Only view this author
本帖最后由 Uus/pMeC6H4-/キ 于 2025-4-24 13:35 编辑

问题应该出在定义选区这里
  1. for {set i 0} {$i < $frames} {incr i} {
  2. set FCOOH [atomselect top "resname 8S3A and name H22 O3" frame $i]
  3. set FCOO [atomselect top "resname O7WK and name O2 O3" frame $i]
  4. set SOL [atomselect top "resname 6UAV" frame $i]
  5. ...}
复制代码
建议更改为如下写法,在循环外定义选区、循环每一帧时更新对应帧号并相应更新实际选择范围
  1. set FCOOH [atomselect top "resname 8S3A and name H22 O3"]
  2. set FCOO [atomselect top "resname O7WK and name O2 O3"]
  3. set SOL [atomselect top "resname 6UAV"]
  4. for {set i 0} {$i < $frames} {incr i} {
  5. $FCOOH frame $i; $FCOOH update
  6. $FCOO frame $i; $FCOO update
  7. $SOL frame $i; $SOL update
  8. ...}
复制代码


编辑:等等,由于选区范围只用resname和name定义,理论上应该各帧一致。如果涉及空间上的几何判据改变(比如within 4 of ...这种),那确实有必要像上面一样指定实时更新。

另一个可能出问题的是后面逐帧测量键角处,measure angle指令应该加frame $i选项确定测量所用的帧。
√546=23.36664289109

10

帖子

0

威望

160

eV
积分
170

Level 3 能力者

3#
 楼主 Author| 发表于 Post on 2025-4-25 08:59:45 | 只看该作者 Only view this author
Uus/pMeC6H4-/キ 发表于 2025-4-24 13:23
问题应该出在定义选区这里
建议更改为如下写法,在循环外定义选区、循环每一帧时更新对应帧号并相应更新实 ...

问题解决了,非常感谢您的解答!

本版积分规则 Credits rule

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

GMT+8, 2025-8-14 16:36 , Processed in 0.176426 second(s), 23 queries , Gzip On.

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