社长,我学习着写了一个脚本,但是发现我写的这个脚本只能统计结构文件中按顺序的原子,对于序号不是相连并且不从文件起始位置开始的原子不能统计,想请社长帮忙看下。脚本如下:
set range [atomselect top {resid 1 to 30 and name P}]
set n [molinfo top get numframes]
for { set i 0 } { $i<$n } { incr i} {
$range frame $i
$range update
set nres [llength [lsort -unique [[atomselect top {resid 1 to 30 and name P}] get serial]]]
for { set ires 1} { $ires<=$nres } { incr ires } {
set sel [atomselect top "serial $ires"]
set X($ires) [$sel get x]
set Y($ires) [$sel get y]
set Z($ires) [$sel get z]
$sel delete
}
set num 0
for { set ires 1 } {$ires <= $nres} { incr ires } {
for { set jres [expr $ires+1] } { $jres<=$nres } { incr jres } {
set dx2 [expr ($X($ires)-$X($jres))**2]
set dy2 [expr ($Y($ires)-$Y($jres))**2]
set dz2 [expr ($Z($ires)-$Z($jres))**2]
set dist [expr sqrt($dx2+$dy2+$dz2)]
if {$dist<4} {
incr num
}
}
}
puts "Frame $i :$num"
}