|
|
- # 选择与名为"MOL"的残基距离在5埃之内的蛋白质原子
- set sel [atomselect top "same residue as {protein within 5 of resname MOL}"]
- # 循环处理200帧的数据
- for {set i 0} {$i < 200} {incr i} {
- # 设置当前帧
- $sel frame $i
- # 更新选择
- $sel update
-
- # 获取当前帧中选中的残基ID
- set residue_ids [$sel get resid]
-
- # 对残基ID进行去重,得到当前帧中的唯一残基ID
- set unique_residue_ids [lsort -unique $residue_ids]
-
- # 遍历唯一的残基ID
- foreach resid $unique_residue_ids {
- # 如果该残基ID已经存在于residue_frames数组中,则添加当前帧号
- if {[info exists residue_frames($resid)]} {
- lappend residue_frames($resid) $i
- } else {
- # 否则,初始化该残基ID的帧集合并添加当前帧号
- set residue_frames($resid) [list $i]
- }
- }
- }
- # 输出每个残基ID以及其出现的帧数
- foreach resid [array names residue_frames] {
- set frame_count [llength [lsort -unique $residue_frames($resid)]]
- puts "Residue ID: $resid, Total Frames: $frame_count"
- }
复制代码 |
|