tcl script for rmsd

From: yp sun (
Date: Thu Oct 04 2012 - 04:43:37 CDT

Dear all,          I want to analyze the NAMD simulation results, especially RMSD during the time. But it is difficult for me to understand the tcl script. The following is a tcl script from NAMD-tutorial for computing rmsd of each residue during the timesteps:         proc rmsd_residue_over_time {{mol top} res} {         # use frame 0 for the reference     set reference [atomselect $mol "protein" frame 0]     # the frame being compared     set compare [atomselect $mol "protein"]     #make a selection with all atoms     set all [atomselect top all]     #get the number of frames     set num_steps [molinfo $mol get numframes]     #open file for writing     set fil [open residue_rmsd.dat w]         foreach r $res {  set rmsd($r) 0     }         #loop over all frames in the trajectory     for {set frame 0} {$frame < $num_steps} {incr frame} {  puts "Calculating rmsd for frame $frame ..."  # get the correct frame  $compare frame $frame         $all frame $frame  # compute the transformation  set trans_mat [measure fit $compare $reference]  # do the alignment  $all move $trans_mat    # compute the RMSD  #loop through all residues  foreach r $res {      set ref [atomselect $mol "protein and resid $r and noh" frame 0]      set comp [atomselect $mol "protein and resid $r and noh" frame $frame]      set rmsd($r) [expr $rmsd($r) + [measure rmsd $comp $ref]]      $comp delete      $ref delete  }     }         set ave 0  foreach r $res {      set rmsd($r) [expr $rmsd($r)/$num_steps]      # print the RMSD      puts "RMSD of residue $r is $rmsd($r)"      puts $fil " $r \t $rmsd($r)"      set res_b [atomselect $mol "resid $r"]             $res_b set user $rmsd($r)             $res_b delete      set ave [expr $ave + $rmsd($r)]  }       set ave [expr $ave/[llength $res]]     puts " Average rmsd per residue:   $ave"     close $filI }     Could you explain in detail what are the functions of every stentences? For example,  what role is the following loop sentence for?   " foreach r $res {  set rmsd($r) 0     }"   My simulation is done on a protein containing three chains. I feel this script is not suitable for calculation every residue in individual chains. Then how should I modify it? Thanks     Best regards!   Yeping Sun CAS Key Laboratory of Pathogenic Microbiology & Immunology INSTITUTE OF MICROBIOLOGY CHINESE ACADEMY OF SCIENCES NO.1 Beichen West Road,Chaoyang District,Beijing 100101,china

This archive was generated by hypermail 2.1.6 : Tue Dec 31 2013 - 23:22:39 CST