From: Nuno R. L. Ferreira (nunolf_at_ci.uc.pt)
Date: Fri Nov 18 2005 - 04:10:16 CST

Hi Andrea

IMHO, I think the problem is not on tcl, but on how vmd deals with the id number of the loaded .pdb's.
When you load pro_1.pdb, it's id will be 0 (first loop). When you load the first molecule on loop 2 (pro_2.pdb), this molecule will have id 1 under vmd (ID1 = 1, and will loop till ID1 = 98, pro_99.pdb). Then you go again to the 1st loop, working with the second element (pro_2.pdb), which will receive the id 1 (accordingly to your script). You need to delete the molecule that resides in id 1 (which is pro_2.pdb) before you load another molecule into it. Without deleting it, you are concatenating .pdbs to the same id. For that, use: mol delete $ID. The same for ID1.

set outfile [open rmsd.dat w]
# 1st Loop
for {set i 1} {$i < 100} {incr i} {
    mol load pdb pro_$i.pdb
    set ID [expr $i-1]
    set sel1 [atomselect $ID "protein and backbone"]
    set lig1 [atomselect $ID "segid B"]
# 2nd Loop
    for { set j 2 } { $j < 100 } { incr j } {
            mol load pdb pro_$j.pdb
                        set ID1 [expr $j-1]
            set sel2 [atomselect $ID1 "protein and backbone"]
            set lig2 [atomselect $ID1 "segid B"]
            set all [atomselect $ID1 all]
            $all move [measure fit $sel2 $sel1]
            set rmsd [measure rmsd $lig2 $lig1]
            puts "RMSD of $i and $j is $rmsd"
            puts $outfile "RMSD of $i and $j is $rmsd"
            puts "Done"
              }
    set mol_list [molinfo list]
    foreach mol $mol_list {mol delete $mol} ;# this shoul delete all your molecules inside vmd
}

Best regards,
Nuno
  ----- Original Message -----
  From: andrea spitaleri
  To: vmd-l_at_ks.uiuc.edu
  Sent: Friday, November 18, 2005 9:42 AM
  Subject: Re: vmd-l: calculate rmsd in a loop:feedback [sorry if you get it twice]

  Hi,
  thanks to all for the precious help. My problem is that I don't know tcl .... (prefer python/perl)
  Anyway, this below works fine but it does only the rmsd calculation for the first pro_1.pdb with the rest of the files.

set outfile [open rmsd.dat w]
mol load pdb pro_1.pdb
set sel1 [atomselect 0 "protein and backbone"]
set lig1 [atomselect 0 "segid B"]
for { set j 2 } { $j < 100 } { incr j } {
    mol load pdb pro_$j.pdb
    set ID1 [expr $j-1]
    set sel2 [atomselect $ID1 "protein and backbone"]
    set lig2 [atomselect $ID1 "segid B"]
    set all [atomselect $ID1 all]
    $all move [measure fit $sel2 $sel1]
    set rmsd [measure rmsd $lig2 $lig1]
    puts "RMSD of 1 and $j is $rmsd"
    puts $outfile "RMSD of 1 and $j is $rmsd"
    puts Done
}In fact, if I use another loop to compare pro_2.pdb with rest and so on, vmd or tcl or whatsoever obscure to me does not go inside of the second loop (Loop 2) and I don't know why:

set outfile [open rmsd.dat w]
# 1st Loop
for {set i 1} {$i < 100} {incr i} {
    mol load pdb pro_$i.pdb
    set ID [expr $i-1]
    set sel1 [atomselect $ID "protein and backbone"]
    set lig1 [atomselect $ID "segid B"]
# 2nd Loop
    for { set j 2 } { $j < 100 } { incr j } {
            mol load pdb pro_$j.pdb
        set ID1 [expr $j-1]
            set sel2 [atomselect $ID1 "protein and backbone"]
            set lig2 [atomselect $ID1 "segid B"]
            set all [atomselect $ID1 all]
            $all move [measure fit $sel2 $sel1]
            set rmsd [measure rmsd $lig2 $lig1]
            puts "RMSD of $i and $j is $rmsd"
            puts $outfile "RMSD of $i and $j is $rmsd"
            puts "Done"
        }
}
Then, Luis could you send me the procedure how to test your plugin? Reading in your web page, it seem working only on trajectories, or am I wrong?

  Regards,

  andrea

-- 
-------------------------------
  Andrea Spitaleri 
  Dulbecco Telethon Institute
  c/o DIBIT Scientific Institute
  Biomolecular NMR, 1B4
  Via Olgettina 58
  20132 Milano (Italy)
  ------------------------------- 
----------------------------------------------------------------------------
    avast! Antivirus: Inbound message clean. 
    Virus Database (VPS): 0546-3, 16-11-2005
    Tested on: 18-11-2005 9:48:55
    avast! - copyright (c) 1988-2005 ALWIL Software.
     


---
avast! Antivirus: Outbound message clean.
Virus Database (VPS): 0546-3, 16-11-2005
Tested on: 18-11-2005 10:10:18
avast! - copyright (c) 1988-2005 ALWIL Software.
http://www.avast.com
firefox_80x15.png