;
; ; SOURCE: spider/docs/techs/recon/newprogs/refine.pam ; New ArDean Leith Nov 2000 ; Rewritten ArDean Leith Mar 2004 ; [] variables ArDean Leith Dec 2005 ; Ampenhance ArDean Leith May 2006 ; More stacks ArDean Leith Dec 2006 ; Small angles limits ArDean Leith Oct 2010 ; pixsiz, resol headers,r2,... ArDean Leith Aug 2012 ; [n-big] ArDean Leith Apr 2015 ; ; PURPOSE: Controls serial reconstruction refinement ; ; I/O Registers and files are set in: refine settings.pam ; ; INPUT REGISTERS: ; [pixsiz] Pixel size ; [r2] Radius of object ; [alignsh] Shift allowed is +- this value ; [prj-radius] Radius of object for projection ; [iter1] Starting iteration ; [iter-end] Ending iteration ; [lambda] Lambda (A) (Used in prepare) ; [small-ang] Small angle refinement flag (1 is true) ; ; INPUT FILES: ; [params] ../params Input params file ; [vol_orig] ../Reconstruction/vol01 Input volume file ; [sel_group_orig] ../Reconstruction/sel_group_cclim Group selection file ; [sel_particles_orig] ../Reconstruction/sel_particles_*** Particle selection files ; [group_align_orig] ../Alignment/align_01_*** Alignment parameter files ; [unaligned_images] ../Alignment/data*** Original unaligned images stack ; ; PROCEDURES CALLED: ; refine_settings refine_settings.pam ; prepare prepare.pam ; ; grploop grploop.pam OR ; smangloop smangloop.pam ; ; mergegroups mergegroups.pam ; ... enhance (optional) enhance.pam ; endmerge endmerge.pam ; ; endrefine endrefine.pam ; ; --------------------------------------------------------------------- MD TR OFF ; Loop info turned off MD VB OFF ; File info turned off MD SET MP ; Use all available OMP processors 0 ; Input initial parameters & file names @refine_settings([pixsiz],[r2],[alignsh],[prj-radius],[iter1],[iter-end],[lambda],[small-ang],[winsize]) ; Redefine [temp_local_dir] location to current work directory for non-PubSub run GLO [temp_local_dir] = '[temp_work_dir]' IF ([iter1] <= 1) THEN ; Prepare input files (only needs to be done once) @prepare([pixsiz],[lambda],[iter1]) SD / ITERATION GROUP RESOLUTION [iter_resol] ; Resolution doc file (output) SD / ITERATION GROUP RESOLUTION [grp_resol] ; Resolution doc file (output) ENDIF MY FL UD N [num-grps] ; Get number of defocus groups [sel_group] ; Group selection doc file (input) DO [iter]=[iter1],[iter-end] ; Loop over all iterations ---------------------------------- RR S [ampenhance] ; Amplitude enhancement flag (varies with iteration) [amp-enhance-flags] ; Global string variable [iter] FT ; Fourier on volume [current_vol] ; Volume produced by previous iter. (input) [iter_vft] ; For all groups on this iter. (output) DE [iter_refangs] ; Reference angles doc file (removed) ; Create reference angle doc file for this iteration IF ( [small-ang] == 0 ) THEN ; For normal angle refinement RR S [ang-step] [ang-steps] ; Angular step for projection angle (varies with iteration) [iter] VO EA [num-angles] ; Sets [num-angles] to number of reference projections [ang-step] ; Theta angular step (varies with iteration) 0, 90 ; Theta range, 90 is for use with 'Check Mirrored Positions' 0, 359.9 ; Phi range [iter_refangs] ; Reference angles doc file (output) RR S [ang-limit] ; Restriction on angular search (varies with iteration) [ang-limits] [iter] ELSE ; Small angle refinement ; For Small angle refinement VO EA [num-angles] ; Sets [num-angles] to number of reference projections [ang-step-sm] ; Theta angular step 0, [theta-range] ; Theta range 0, 359.9 ; Phi range [iter_refangs] ; Reference angles doc file (output) ENDIF ; Process all defocus groups one by one [n-big] = -1 [ntot-big] = 0 [ntot] = 0 DO [i]=1,[num-grps] UD S [i],[grp],[n-part] ; Get defocus group number from list [sel_group] ; Group selection file (input) SYS echo -n " Processing group: {%I0%[grp]} " ; date '+ TIME: %x %X' MY FL ; Flush results file ; Run main refinement loop task IF ( [small-ang] == 0 ) THEN ; Runs normal refinement loop @grploop([ang-step],[ang-limit],[r2],[alignsh],[prj-radius],[iter],[grp],[n-big],[pixsiz]) [ntot-big] = [ntot-big] + [n-big] [ntot] = [ntot] + [n-part] ELSE @smangloop([r2],[alignsh],[prj-radius],[iter],[grp],[pixsiz]) ENDIF MY FL ; Flush results file ENDDO UD E ; Finished with incore doc file IF ( [n-big] > 0 ) THEN [per-big] = INT([ntot-big] / [n-big]) SYS echo " Iteration: {%I0%[iter]} Images with large proj. ang. changes: {%I0%[per-big]}%" ELSE SYS echo " Iteration: {%I0%[iter]}" ENDIF ; Consolidate data for CTF corrections @mergegroups([pixsiz],[iter],[ampenhance],[r2]) DE ; Delete vft file. [iter_vft] ; Current iteration Fourier vol (removed) MY FL ; Flush results file ENDDO SYS echo ; echo -n " Alignment halting after iteration: {%I0%[iter]} " ; date '+ TIME: %x %X' ; echo DO [i]=1,[num-grps] UD IC [i], [grp] ; Get defocus group number from list [sel_group] ; Group selection doc file (input) @endmerge([prj-radius],[grp],[iter],[pixsiz],[r2]) ENDDO UD ICE ; End doc file 'UD IC' use [sel_group] ; Group selection doc file (finished) ; Prepare final resolution files @endrefine([r2],[pixsiz],[iter]) SYS echo ; echo -n " FINISHED REFINEMENT " ; date '+ TIME: %x %X' EN ;