计算化学公社

标题: source tcl脚本时出现bug [打印本页]

作者
Author:
lucl13    时间: 2020-2-23 18:21
标题: source tcl脚本时出现bug
我的tcl脚本如下:
------------------
set outfile [open receptor.txt w]
set sel [atomselect 1 "all"]
for {set i 0} {$i < 20} {incr i} {
        $sel frame $i
        $sel update
        set center [measure center $sel]
        puts $center
        set xc [lindex $center 0]
        set yc [lindex $center 1]
        set zc [lindex $center 2]
        set near [atomselect 0 "same residue as ((x-$xc)^2+(y-$yc)^2+(z-$zc)^2)<7^2"]
        set nres [lsort -unique [$near get resid]]
        puts $outfile $nres
}
close $outfile
-----------------

当我把该脚本在tk控制台中source执行时,”set center [measure center $sel]“这一行中的”sel“没有办法更新相应的帧数,使用的sel仍然时第0帧,尽管我已经在上面写了更新帧数的代码。但是,我将代码复制到tk控制台执行时却能够得到正确的结果。这是为什么呢?是一个bug还是我的脚本有问题。

谢谢。
作者
Author:
sobereva    时间: 2020-2-23 19:10
脚本没问题。没遇到过你这种情况,tk console和直接在命令行窗口里运行的结果我没有遇到不同的时候
作者
Author:
lucl13    时间: 2020-2-24 17:14
sobereva 发表于 2020-2-23 19:10
脚本没问题。没遇到过你这种情况,tk console和直接在命令行窗口里运行的结果我没有遇到不同的时候

谢谢社长。后来我发现好像是前面的命令没有执行完毕,就执行后面的了。这个该怎么解决。

------
mol new $receptor.pdb
for {set i 0} {$i < 16} {incr i} {
        set  ligand [lindex $ligands $i]
        after 50 mol new $receptor-$ligand.pdb
}

for {set j 0} {$j < 16} {incr j} {
       
        set ligand [lindex $ligands $j]
        set outfile [open $receptor-$ligand.txt w]

        set ligand_i [expr $j+1]

        set sel [atomselect $ligand_i "all"]

        for {set i 0} {$i < 20} {incr i} {
                $sel frame $i
                $sel update
                set center [measure center $sel]
                set xc [lindex $center 0]
                set yc [lindex $center 1]
                set zc [lindex $center 2]
                set near [atomselect 0 "same residue as ((x-$xc)^2+(y-$yc)^2+(z-$zc)^2)<7^2"]
                set nres [lsort -unique [$near get resid]]
                puts $outfile $nres
        }
        close $outfile
}

--------

因为每一个结构有20帧所以加载需要一定时间,但是还没等到加载完就执行后面的命令了,即使想要更新帧数也还没加载。所以出现了这个问题。这个该怎么办呢?

作者
Author:
sobereva    时间: 2020-2-24 17:30
你的情况我没碰见过。尝试用sleep命令在加载后等待几秒钟看看行不行
作者
Author:
diaok    时间: 2020-2-24 18:47
lucl13 发表于 2020-2-24 17:14
谢谢社长。后来我发现好像是前面的命令没有执行完毕,就执行后面的了。这个该怎么解决。

------

先全加载进去,然后一个个分子间切换处理怎么样?




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