([sp_pixsiz],[angStep],[r2],[alignsh],[prjRadius],[sp_winsiz],[incoreYN],[bpType],[qsub],[masterCPUs],[groupCPUs]) ;([steptype],[sp_pixsiz],[angStep],[r2],[alignsh],[prjRadius],[sp_winsiz],[incoreYN],[bpType],[qsub],[masterCPUs],[groupCPUs]) ; ; Sets reconstruction parameters and files
 ;
 ; SOURCE: spider/docs/techs/recon1/Procs/recon_settings.spi
 ;         New                                 ArDean Leith  Jul 2002
 ;         [] variables                        ArDean Leith  Dec 2005
 ;         Rewritten, more stacks              ArDean Leith  Dec 2006
 ;         Variable assignment                 ArDean Leith  Jan 2010
 ;         Even-odd replaced                   ArDean Leith  Jan 2011
 ;         pixsiz returned, fsc                ArDean Leith  Aug 2012
 ;         For CTF corrected images            ArDean Leith  Oct 2013
 ;         For gold standard reconstruction    ArDean Leith  May 2014
 ;         Inlined params, changed dirs        ArDean Leith  Mar 2016
 ;
 ; INPUT REGISTERS:   [steptype] (0==align,  1==reconstruct, 3==restack, <1==none)
 ;
 ; OUTPUT REGISTERS (SET  BELOW):
 ;   [numGrps]        Number of groups used
 ;   [sp_pixsiz]      Pixel size                        (A) 
 ;   [angStep]        Angular step for ref. projections (degrees)
 ;   [r2]             Object alignment radius           (pixels)
 ;   [alignsh]        Alignment shift +- allowed        (pixels) 
 ;   [prjRadius]      Object projection radius          (pixels)
 ;   [sp_winsiz]      Image/window size = volume size   (pixels)
 ;   [incoreYN]       Use incore files                  (1 == true)
 ;   [bpType]         Backprojection method  (1=='BP CG', 2=='BP 3F', 3=='BP RP', 4=='BP 3N')
 ;   [qsub]           Specifies que type     (1 == use PBS, 0 == use PubSub,  <0 == none)
 ;
 ; ---------Set Refinement parameters from parameter file ----------
 
 ; ---- Adjust these parameters for your project --------------- EDIT -----

 [qsub]        = 3      ; Specifies queue (1 == use PBS, 2 == PBS with memory estimate, 0 == use PubSub, 3 == PBSPro, <0 == none) 
 
 GLO [pbsFlags] = '-l nodes=1:ppn=8 -q ceitecmu -l walltime=47:59:00'  ; Additional user-defined flags for old PBS
 
 GLO [proFlags] = '-l select=1:ncpus=8:mem={%i0%[memMb]}mb -l walltime=47:59:00'      ; Additional user-defined flags for PBSPro
 
 [masterCPUs]  = 1      ; Number of CPUs to use for master process
 
 [groupCPUs]   = 8      ; Number of CPUs to use for group processes

 [diam]        = -1     ; Diameter of the structure (A) used in alignment search (<0 == from 'params.spi')
 
 [sp_pixsiz]   = -1     ; Pixel size (A, <0 == from 'params.spi'))  
 
 [sp_winsiz]   = -1     ; Window size (pixels, <0 == from 'params.spi')   
 
 [winFrac]     = 0.95   ; Fraction of window diameter used in projection (0.95 == 95%)

 [alignsh]     = 8      ; Alignment shift (pixels) searched is +- this value
 
 [angStep]     = 15     ; Angular separation for reference projections

 [bpType]      = 2      ; Backprojection method (1==BP CG, 2==BP 32F, 3==BP RP, 4==BP 3N)

 [incoreYN]    = 1      ; Load input images into incore stack (>0 == Yes, we have enough memory)
 
 [maxWait]     = 600    ; Maximum delay in seconds for copying stacks before next group starts

 ; ----------------- Original input files ---  EDIT names as needed, These files must exist ------

 GLO [params]           = '../params'                             ; Parameter doc file  (one)  

 GLO [mic_sel_grp]     = '../sel_micrograph'                      ; Group (or micrograph) selection file  (one)

 GLO [mic_sel_part]    = '../Particles/good/sel_part_****'        ; Particle selection files   (one/micrograph)

 GLO [mic_parts]       = '../Particles/win/data_bymic_****'       ; Existing particle stacks  (one/micrograph)

 GLO [mic_align]       = 'input/align_01_****'                    ; Pre-existing alignment parameter files  (one/group)      (OPTIONAL)

 GLO [ref_vol_unfilt]  = '../ref_vol_unfilt'                      ; Initial unfiltered reference volume or reference volume (one)   

 ; OPTIONAL doc file needed if using symmetry                         
 GLO [symmetry_doc]     = '*'                                     ; OPTIONAL symmetry doc file for 'back projection' (one)

 ; -------------- Output files -- Usually no need to edit for default refinement ----------

 ; filter-refvol.spi
 GLO [ref_vol]             = '../ref_vol_filt'                             ; Initial filtered reference volume (one)   
 
 ; align-regroup.spi
;;; GLO [init_dir]            = '../iter_0'                                    ; Dir. used for alignment
 GLO [init_dir]            = 'iter_0'                                    ; Dir. used for alignment
 GLO [init_sel_grp]        = '[init_dir]/sel_group'                         ; Group selection file             (one)
 GLO [init_sel_part]       = '[init_dir]/sel_part_***'                      ; Particle selection files         (one/group) 
 GLO [init_unaligned]      = '[init_dir]/data_***'                          ; Unaligned particle stacks                 (one/group)
 GLO [init_part2global]    = '[init_dir]/part2glonum_***'                   ; OPTIONAL Global particle lookup table     (one/group) (OPTIONAL)
 GLO [init_combined_parts] = '[init_dir]/global2group'                      ; OPTIONAL Combined global lookup table     (one)       (OPTIONAL)
 GLO [init_align_doc]      = '[init_dir]/align_00_***'                      ; OPTIONAL Alignment parameter files        (one/group) (OPTIONAL)

 ; make-ref-views.spi
 GLO [iter_refangs]        = '[init_dir]/ref_angs_00'                      ; Reference projection angle file      (one)
 GLO [ref_projs]           = '[init_dir]/ref_projs_00'                     ; Reference projections              (one)
 GLO [ref_view_list]       = '[init_dir]/sel_proj'                         ; List of reference views            (one)

 ; align.spi, pub-align.spi, align-loop.spi
 GLO [work_dir]            = 'work'                                       ; Dir. for scratch files
 GLO [out_align_doc]       = '[init_dir]/align_01_{***[grp]}'             ; Next group alignment doc file stem 
 GLO [out_aligned]         = '[init_dir]/dala_01_***'                     ; Aligned image data                 (one/group)

 ; recon-regroup.spi
;;; GLO [rec_dir]             = '../iter_1'                                  ; Dir. for files from reconstruction 
 GLO [rec_dir]             = 'iter_1'                                  ; Dir. for files from reconstruction 
 GLO [rec_unaligned]       = '[rec_dir]/data_***'                         ; New particle stacks                (one/group)
 GLO [sel_group]           = '[rec_dir]/sel_group'                        ; New group selection file           (one)
 ; (not naming [sel_group] [rec_sel_grp] so that merge-fsc-filt.spi can be reused from Refinement/)
 GLO [rec_sel_part]        = '[rec_dir]/sel_part_***'                     ; New particle selection files       (one/group) 
 GLO [rec_part2global]     = '[rec_dir]/part2glonum_***'                  ; New global particle lookup table   (one/group) (OPTIONAL)
 GLO [rec_aligned]         = '[rec_dir]/dala_01_***'                      ; New aligned image data             (one/group)
 GLO [rec_align_doc]       = '[rec_dir]/align_01_***'                     ; Alignment parameter files          (one/group) (OPTIONAL)
 
 ; recon.spi, pub-recon.spi, recon-loop.spi
 GLO [next_group_vol_stem] = '[work_dir]/vol_{**[next-iter]}_***_s{*[s]}' ; Next subset group volume stem
 GLO [next_group_vol]      = '[work_dir]/vol_01_{***[grp]}'               ; Next group volume                  (one/group)   
 GLO [next_group_vol_s]    = '[next_group_vol]_s{*[s]}'                   ; Next group halfset volume          (two/group)
 GLO [group_vol_stem]      = '[work_dir]/vol_00_{***[grp]}_***'           ; Current group volumes              (two/group) 
 GLO [next_vol_s]          = '[next_vol]_s{*[s]}'                         ; Filtered, shifted volumes          (two)
 GLO [fsc_mask]            = '[rec_dir]/fsc_mask'                         ; Mask for FSC                       (one)
 GLO [next_u_fsc]          = '[rec_dir]/fscdoc_u_01'                      ; Unmasked FSC curve doc file        (one)
 GLO [next_m_fsc]          = '[rec_dir]/fscdoc_m_01'                      ; Masked   FSC curve doc file        (one)
 GLO [iter_resol]          = '[rec_dir]/resolutions'                      ; Overall resolution doc file        (one)
 GLO [next_vol]            = '[rec_dir]/vol_01'                           ; Next volume stem   
 GLO [wait_file]           = 'jnk_waited_***'                             ; OPTIONAL Created when local copy finished (one/group)
 GLO [finished_file]       = 'jnk_sync_{****[rn]}_{***[grp]}'             ; Created when parallel segment finished (one/group)
 
 ; plot-fsc-curve.spi
 GLO [fscplots]            = 'fsc_iter.gnu'                               ; Gnuplot script for FSC plotting    (one) 

 ; ----------------- END BATCH HEADER -------------------------------------------

 ; ---- Usually no need to adjust following parameters 

 ; Get values from params
 IF ([sp_pixsiz] .LE. 0) THEN
   UD IC 5, [sp_pixsiz]
     [params]
 ENDIF
 
 IF ([sp_winsiz] .LE. 0) THEN
   UD IC 17, [sp_winsiz]
     [params]
 ENDIF
 
 IF ([diam] .LE. 0) THEN
   UD IC 18, [sp_partsiz]
     [params]
   ELSE
     [sp_partsiz] = [diam]/[sp_pixsiz]
 ENDIF
 
 UD ICE
   [params]

 [r2] = INT([sp_partsiz]/2.0)           ; Alignment radius (pixels) used in alignment search

 ; Ensure that sum of alignment radius + translation is within window dimensions 
 [ringsh] = [r2] + [alignsh]           ; Last ring + translation step
 [maxrad]  = INT([sp_winsiz]/2) - 1     ; Max radius of object in window

 IF ( [ringsh] >= [maxrad] ) THEN
   ; Must reduce radius of outer ring, not translation step
   [r2] = [maxrad] - [alignsh] - 2      ; Reduces rotational search radius 
 ENDIF

 [prjRadius] = INT(([winFrac]*[sp_winsiz])/2.0 )  ; Convert fraction to pixel radius
 
 RE

 ; Modified 2017-08-04
 ;    2017-07-26 (trs) -- now used for align-regroup.spi
 ;    2017-07-20 (trs) -- specifies #CPUs here
 ;    2016-10-12 (trs) -- removed numGrps
 ;    2016-05-26 (trs) -- can get pixel size, window size, and particle size from PARAMS
 
 ;