私はしばらくベクトルを抽出するために使用していたtclスクリプトが突然動作を停止しましたが、なぜ私は確信しています。また、エラーも意味をなさないと思われます。無効なコマンド名 ""のエラー
私が実行しているコードは次のとおりです。私が受けた
for {set resd 501} {$resd < 502} {incr resd 1} {
set basefile1 "CCvector$resd"
set workdir [pwd]
set nf [molinfo top get numframes]
set fil [open $basefile1.dat w]
for {set frame 0} {$frame < $nf} {incr frame 1} {
animate goto $frame
display update ui
set c1 [atomselect top "name C1 and resid $resd and resname G130"]
set c3 [atomselect top "name C3 and resid $resd and resname G130"]
set c1c [$c1 get {x y z} ]
set c3c [$c3 get {x y z} ]
set c1c3x [expr [$c3 get x]-[$c1 get x]]
set c1c3y [expr [$c3 get y]-[$c1 get y]]
set c1c3z [expr [$c3 get z]-[$c1 get z]]
set st [expr $frame]
puts $fil [list $st $c1c3x $c1c3y $c1c3z ]
$c3 delete
$c1 delete
}
close $fil
元のエラーが「 @でオペランドがありません」でした、しかし、私はコードの部分になる置き換え:
for {set frame 0} {$frame < $nf} {incr frame 1} {
animate goto $frame
display update ui
set c1 [atomselect top "name C1 and resid $resd and resname G130"]
set c3 [atomselect top "name C3 and resid $resd and resname G130"]
set c1x [$c1 get x]
set c3x [$c3 get x]
set c1c3x [expr [$c3x - $c1x]]
set c1y [$c1 get y]
set c3y [$c3 get y]
set c1c3y [expr [$c3y - $c1y]]
set c1z [$c1 get z]
set c3z [$c3 get z]
set c1c3z [expr [$c3z - $c1z]]
set st [expr $frame]
puts $fil [list $st $c1c3x $c1c3y $c1c3z ]
$c3 delete
$c1 delete
}
close $fil
これではなく、「無効なコマンド名」エラーが表示されています。どこが間違っていますか?
追加情報:。で、私は
さらに、 'c1c3z [expr {$ c3z - $ c1z}]'を設定すれば、あらゆる種類のトラブルを避け、より高速なコンパイルが可能になります。 –
@Donal、良い点。編集を参照してください。 –