;
; ; SOURCE: spider/docs/techs/recon/newprogs/ccthresh.spi ; Merged with dftotals.spi Nov 2006 ArDean Leith ; Selection bugs Feb 2008 Magali ; Reject file Jan 2010 ArDean Leith ; ; PURPOSE: Given a threshold for the % of files in each group that should be ; eliminated, determines the corresponding threshold for the cross ; correlation value and stores threshold in a doc file. ; Applies the theshold to the coreelation values from the aligned particles ; and creates partilcel selection files listing particles with ; correlation values above the theshold. Also makes a listing of rejected ; particles sorted by correlation value. ; ; NOTE: Particle totals are approximate due to binning of data in histograms. ; ; I/O PARAMETERS AND FILES ARE SET HERE: ; ; ------------ Parameters --------------------------------------- [cutoff] = 0.15 ; Percentage of particles to eliminate ; ------------ Input files --------------------------------------- [defgrps] = '../Alignment/sel_group' ; Defocus groups selection file [docapsh] = '../Alignment/align_01_{***[grp]}' ; Document file created by 'AP SH' [cchist] = 'hist/cchist{***[grp]}' ; Histogram doc files ; --------------- Output files ------------------------------------- [thresh] = 'thresh' ; Doc file with CC thresholds [sel_particles] = 'hist/sav_particles_{***[grp]}' ; Contains sorted particle numbers whose ; correlation values are above threshold [rej_particles] = 'hist/rej_particles_{***[grp]}' ; Contains sorted rejected particle numbers ; -------------- END BATCH HEADER --------------------------------- MD TR OFF ; Decrease results file output MD VB OFF ; Decrease results file output DE ; Remove any existing output doc file [thresh] SD / CC_THRESH, N_ABOVE_THR, N_BELOW_THR, N_TOTAL [thresh] VM echo ' 'Correlation cutoff: {%f5.2%[cutoff]} ; echo ' ' [all] = 0 [saved] = 0 DO ; Loop over all defocus group(s) --------- UD NEXT [k],[grp],[numparts] ; Get current group number and particles [defgrps] ; Group selection doc file (input) IF ([k] .LE. 0) EXIT ; End of groups in doc file ; Determines the number of particles below the percent cutoff ([cutoff]), ; [cutoff] = Percent cutoff ; [grp] = Defocus group ; Gets the total number of particles (from column 2 in histogram), ; Determines the number of particles below the percent cutoff, ; Finds the corresponding CC value (column 1 in histogram). [ncum] = 0 ; Cumulative no. of particles [Nbelow] = 0 [nbad] = [cutoff]*[numparts] ; Number of particles to eliminate UD N [nbins] ; Find number of bins in histogram [cchist] ; Histogram doc file (input) DO [key] = 1,[nbins] ; Loop over all bins UD [key],[CC_threshold],[parts] [cchist] ; Histogram doc file (input) [ncum] = [ncum] + [parts] ; Number of particles below cuttof IF ([ncum].GT.[nbad]) THEN [cuttoffbin] = [key] IF ([key].NE.1) [cuttoffbin] = [key]-1 ; Last bin to discard UD [cuttoffbin],[CC_threshold] ; Get the cuttoff [cchist] ; Histogram doc file (input) EXIT ; Leave the loop now ENDIF [Nbelow] = [ncum] ; No. of particles from previous bins ENDDO [Nabove] = [numparts] - [Nbelow] ; Number above threshold ; Save [CC_threshold], N_above_threshold, N_below_threshold, total_N SD [grp],[CC_threshold],[Nabove],[Nbelow],[numparts] [thresh] [all] = [all] + [numparts] [saved] = [saved] + [Nabove]] ; Create selection file [key] = 0 [rejkey] = 0 DE ; Remove any existing output doc file [sel_particles] ; Selection file DE ; Remove any existing output doc file [rej_particles] ; Selection file SD / PART_NUMBER, CC_VALUE [sel_particles] ; Selection file (output) SD / PART_NUMBER, CC_VALUE [rej_particles] ; Selection file (output) DO [part]=1,[numparts] ; Loop over particles in this group ----- ; PHI,THE,PSI, REF#,IMG#,INPLANE, SX,SY,NPROJ, DIFF,CCROT,INPLANE,SX,SY UD IC [part], [d],[d],[d], [d],[img],[d], [d],[d],[d], [d],[cc] [docapsh] ; Alignment parameter file (input) IF ([cc].GE.[CC_threshold])THEN ; CC above threshold for this particle [key]=[key]+1 ; Increment new particle counter SD [key],[img],[cc] ; Save: Particle #, CC value [sel_particles] ; Selection file (output) ELSE [rejkey]=[rejkey]+1 ; Increment new particle counter y SD [rejkey],[img],[cc] ; Save: Particle #, CC value [rej_particles] ; Selection file (output) ENDIF ENDDO UD ICE ; Free doc file pointer [docapsh] SD E ; Free doc file pointer [sel_particles] SD E ; Free doc file pointer [rej_particles] DOC SORT ; Saved doc file sorting [sel_particles] ; Saved selection doc file (input) [sel_particles] ; Sorted saved selection doc file (output) (2) ; Sort column = CC value Yes ; Renumber keys IF ([cutoff].ne.0) THEN DOC SORT ; Reject doc file sorting [rej_particles] ; Reject selection doc file (input) [rej_particles] ; Sorted reject selection doc file (output) (2) ; Sort column = CC value Yes ; Renumber keys ENDIF VM echo ' 'Saved: {******[Nabove]} in: [sel_particles]' 'Rejected: {******[Nbelow]} in [rej_particles] ENDDO VM echo ' '; echo ' 'Overall keeping: {******[saved]} Out of: {******[all]} ; echo ' ' EN ;