我的轨迹包含75帧(* .dcd文件)。但是当我尝试通过tcl命令计算帧数时:
set id [molinfo top get id ]
puts [molinfo $id get numframes]
我得到的数字要低得多,即3。
那么如何才能获得正确的帧数?
PS:我知道我可以将VMD用于此目的,但轨迹文件位于远程计算机上,我需要运行多个计算,如RMSD,这取决于通过代码的帧数(没有图形界面) )。答案 0 :(得分:0)
这是一个古老的问题,但是我找到了解决方案,希望它能对其他人有所帮助。
当不是所有框架都加载时,我遇到了您的VMD问题,似乎只有几个框架。在VMD focumentation中,强调我的观点:
mol addfile等待: ... 返回前要加载多少帧; 默认值为1 ... [其他]帧将在后台加载 ...如果帧为-1或全部,则所有仍在处理中的文件中的所有帧将在之前加载该命令返回...
因此,默认情况下,除非指定了waitfor,否则我们只希望加载一帧。如果有更多的帧(例如加载了3/75),那是因为VMD在后台加载了更多帧。
尤其是在加载时,我建议执行以下操作:
set id [mol new "example.psf"]
mol addfile "example.dcd" waitfor all molid $id;
set n_frames [molinfo $id get numframes]
puts "There are $n_frames frames"
关键部分是以下几行:
mol addfile "example.dcd" waitfor all molid $id;
如上所述,其中使用了“ waitfor”标志。