计算化学公社

标题: VMD选择一定区域内逐帧原子个数脚本输出总为整个体系总原子数,如何解决。 [打印本页]

作者
Author:
cgy    时间: 2024-7-7 11:45
标题: VMD选择一定区域内逐帧原子个数脚本输出总为整个体系总原子数,如何解决。
本帖最后由 cgy 于 2024-7-7 11:48 编辑

各位老师好,本人新手,在使用VMD进行可视化分析时,想要求x>0 and x<50 and y>0 and y<50 and z>130 and z<150区域的逐帧原子数,学习一段时间VMD脚本语言后,自行编写了一段脚本,尝试进行输出我所需要的区域的原子数,结果最后输出为全部总数原子,请问各位老师我写的脚本存在什么问题,谢谢老师。在无选定的区域上的原子数是由0逐渐到四千多个分子,而不是体系总分子数10290。
mol new {md.trr} type {trr} waitfor all
for {set i 0} {$i <= 201} {incr i} {
    set sel [atomselect top "x > 0 and x < 50 and y > 0 and y < 50 and z > 130 and z < 150"]
    animate goto $i
    set num_atoms [molinfo top get numatoms]
    puts "Frame $i: $num_atoms atoms"
}

md.gro和md.trr文件压缩后还32MB上传不了,就附上VMD输入脚本后的计数错误的截图。是在VMD打开md.trr文件后输入的脚本。谢谢各位老师了。



作者
Author:
丁越    时间: 2024-7-8 09:26
animate goto $i
改为:
$sel frame $i
$sel update
把set sel [atomselect top "x > 0 and x < 50 and y > 0 and y < 50 and z > 130 and z < 150"]挪到for循环外面去
作者
Author:
cgy    时间: 2024-7-8 10:18
丁越 发表于 2024-7-8 09:26
animate goto $i
改为:
$sel frame $i

set sel [atomselect top "water and x > 0 and x < 50 and y > 0 and y < 50 and z > 130 and z < 150"]
for {set i 0} {$i <= 201} {incr i} {
    $sel frame $i
    $sel update
puts "Frame $i: [expr [$sel num]]"
}
您好,经过您的指导,和http://bbs.keinsci.com/forum.php ... A%D0%C4%BE%E0%C0%EB这一篇的输出结果的语句参考,已经解决问题,最终输出了该区域的逐帧分子数,再次感谢您!




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3