;
; ; SOURCE: spider/docs/techs/recon/newprogs/dftotals.spi ; More stacks, merged with sort.pam Dec. 2006 ArDean Leith ; Removed sorted output Jan. 2010 ArDean Leith ; ; PURPOSE: Creates particle selection files by applying cutoff. Creates an ; updated group selection file with current particle numbers and defocus ; values. ; ; I/O PARAMETERS AND FILES ARE SET HERE: ; ; ------------ Input files --------------------------------------- [defgrps] = '../Alignment/sel_group' ; Defocus groups selection file [docapsh] = '../Alignment/align_01_{***[grp]}' ; Document file from 'AP SH' command [thresh] = 'thresh' ; [optional] Doc file with CC thresholds ; --------------- Output files ------------------------------------- [sel_particles] = 'sel_particles_{***[grp]}' ; Output file (one for each defocus group) ; Contains the particle numbers whose correlation ; coefficients are greater than the threshold [defgrps_lim] = 'sel_group_cclim' ; New defocus groups selection file ; -------------- END BATCH HEADER --------------------------------- MD TR OFF ; Decrease results file output MD VB OFF ; Decrease results file output DE ; Remove any existing output doc file [defgrps_lim] SD / GROUP PARTICLES DEFOCUS [defgrps_lim] ; Group election file (output) IQ FI [exists] ; If thresh file exists, use thresh [thresh] ; Threshold doc file (input) UD N [numgrps] ; Get number of groups [defgrps] ; Group selection doc file (input) [all] = 0 [saved] = 0 IF ([exists].LE.0) THEN ; ***** No threshold doc file : Keep all particles ******************************** DO [numgrp]=1,[numgrps] ; Loop over all defocus group(s) UD [numgrp], [grp],[numparts],[def] ; Get current group number and particles [defgrps] ; Group selection doc file (input) ; Create particle selection file DE ; Remove any existing output doc file [sel_particles] ; Selection file SD / PARTICLE NUMBER [sel_particles] ; Selection file (output) DO [part]=1,[numparts] ; Loop over particles in this defocus group ; PHI,THE,PSI, REF#,IMG#,INPLANE, SX,SY,NPROJ, DIFF,CCROT,INPLANE,SX,SY UD IC [part], [d],[d],[d], [d],[d],[d], [d],[d],[d], [d],[cc] [docapsh] SD [part], [part] ; Save: Particle #, CC value, Defocus [sel_particles] ; Selection file (output) ENDDO UD ICE [docapsh] SD E ; Free doc file [sel_particles] SD [numgrp], [grp],[numparts],[def] ; Save: Group, Particle #, Defocus [defgrps_lim] ; Selection file (output) [all] = [all] + [numparts] ENDDO VM echo ' ' ; echo ' 'Overall particles: {******[all]} ELSE ; ********* Apply cuttoff threshold ************************************************** DO [numgrp]=1,[numgrps] ; Loop over all defocus group(s) UD [numgrp], [grp],[numparts],[def] ; Get current group number and particles [defgrps] ; Group selection doc file (input) [all] = [all] + [numparts] [key] = 0 ; Create particle selection file DE ; Remove any existing output doc file [sel_particles] ; Selection file SD / PARTICLE NUMBER [sel_particles] ; Selection file (output) DO [part]=1,[numparts] ; Loop over particles in this defocus group ; PHI,THE,PSI, REF#,IMG#,INPLANE, SX,SY,NPROJ, DIFF,CCROT,INPLANE,SX,SY UD IC [part], [d],[d],[d], [d],[d],[d], [d],[d],[d], [d],[cc] [docapsh] ; Alignment doc file (input) UD [grp],[ccthresh] ; Get CC threshold for this defocus group [thresh] ; Threshold doc file (input) IF ([cc].GE.[ccthresh]) THEN ; CC above threshold for this particle [key]=[key]+1 ; Increment new particle counter = key SD [key], [part] ; Save: Particle # [sel_particles] ; Selection file (output) ENDIF ENDDO UD ICE [docapsh] SD E ; Free doc file [sel_particles] SD [numgrp], [grp],[key],[def] ; Save: Group, Particle #, Defocus [defgrps_lim] ; Selection file (output) VM echo ' In: [sel_particles] Cutoff: {%F8.2%[ccthresh]} Keeps: {******[key]} Out of: {******[numparts]}' [saved] = [saved] + [key] ENDDO VM echo ' '; echo ' 'Overall keeping: {******[saved]} Out of: {******[all]} particles ENDIF SD E [defgrps_lim] ; Selection file (ends) VM echo ' ' EN ;