# This script extracts the selection of atoms for all the frames of trajectory as separate PDB files (one file per frame). Updates the selection every frame (in can have different number of atoms every timestep). Useful when you want to analyze the selections later in some external program, like Matlab. # Andriy Anishkin (anishkin@icqmail.com) UMCP #Open file and load part of DCD trajectory mol new mscs-cry-chnl-big-oct-cor_wtr_f_salt.psf type psf mol off top set first_frame 0 set last_frame -1 # set filelist {sim_mscs-cry-chnl-big-oct-cor_wtr_f_salt_wrp_0.5.dcd sim_mscs-cry-chnl-big-oct-cor_wtr_f_salt_wrp_1.0.dcd sim_mscs-cry-chnl-big-oct-cor_wtr_f_salt_wrp_1.5.dcd sim_mscs-cry-chnl-big-oct-cor_wtr_f_salt_wrp_2.0.dcd sim_mscs-cry-chnl-big-oct-cor_wtr_f_salt_wrp_2.5.dcd sim_mscs-cry-chnl-big-oct-cor_wtr_f_salt_wrp_3.0.dcd sim_mscs-cry-chnl-big-oct-cor_wtr_f_salt_wrp_3.5.dcd sim_mscs-cry-chnl-big-oct-cor_wtr_f_salt_wrp_4.0.dcd sim_mscs-cry-chnl-big-oct-cor_wtr_f_salt_wrp_4.5.dcd sim_mscs-cry-chnl-big-oct-cor_wtr_f_salt_wrp_5.0.dcd sim_mscs-cry-chnl-big-oct-cor_wtr_f_salt_wrp_5.5.dcd sim_mscs-cry-chnl-big-oct-cor_wtr_f_salt_wrp_6.0.dcd} set filelist {test1.dcd test2.dcd} foreach crnt_file $filelist { #load file animate read dcd $crnt_file beg 0 end -1 waitfor all sleep 5 #Extract frames from file set num_steps [molinfo top get numframes] #--------- make a selection #set frm [atomselect top all] set frm [atomselect top "same residue as (water and (x^2 + y^2 - (z+20)^2) < 120 and (x^2 + y ^2) < 400 and z > -50)"] #set frm [atomselect top "(resname OCT)"] #set frm [atomselect top "within 10 of (not (resname OCT))"] for {set frame 0} {$frame < $num_steps} {incr frame} { #Update the frame $frm frame $frame $frm update #--------- save the frame #$frm writepdb sim_2_mscs-cry-chnl-big-oct-cor_f_fr{$frame}.pdb set filename [molinfo top get name]_wtrsl_fr[format "%04d" [expr {$frame + $first_frame}]].pdb $frm writepdb $filename #$frm writepdb _octane_fr{$frame}.pdb puts "global frame [expr {$frame + $first_frame}] file $crnt_file frame $frame of [expr {($num_steps - 1)}] finished" } set first_frame [expr {$first_frame + $num_steps}] animate delete all } bell puts "Finished !!!"