([maxspfreq],[lambda],[iter1]) ; Prepare for refinement run by initializing input ; and output directories
;
; SOURCE:  spider/docs/techs/recon/newprogs/prepare.pam
;
; PURPOSE: Prepare various initial files, CTF correction, etc.
;
; CALLED FROM: refine & pub_refine refine.pam & pub_refine.pam
;
; Registers & files are set in: refine settings refine settings.pam.pam)
;
; INPUT REGISTERS (SET ABOVE):
;   [maxspfreq]             Maximum spatial frequency[a-1]
;   [lambda]                Lambda(angstroms)
;   [iter]                  Initial iteration (usually 1)
;
; '***' denotes group number
; 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 
;   [aligned_images_orig]   ../Alignment/input/dala01_***          Aligned image stacks 
;   [unaligned_images_orig] ../Alignment/input/data***             Aligned image stacks 
;
; OUTPUT FILES:
;   [input_dir]             input                                  Directory
;   [temp_work_dir]         work                                   Directory
;   [final_dir]             final                                  Directory
;   [current_vol]           final/vol01                            Starting volume file  
;   [sel_particles]         input/sel_particles_***                Particle selection files 
;   [sel_particles_odd]     input/sel_particles_odd_***            Particle selection files 
;   [sel_particles_even]    input/sel_particles_even_***           Particle selection files 
;   [sel_group]             input/sel_group                        Group selection file
;   [sel_group_sorted]      input/sel_group_sort                   Sorted group selection file
;   [group_align]           final/align_01_***                     Group align input file 
;   [aligned_images]        work/dala01_***                        Aligned image stacks    (LINKS!)
;   [unaligned_images]      input/data***                          Unaligned image stacks  (LINKS!)
;   [temp_ctf_file]         input/ctf***                           CTF correction files
;
; INLINE FILES USED: _1

[iter]=[iter1]                       ; Needed for naming initial files

VM                                   ; Dir. for temporary files and output files
mkdir -p [temp_work_dir] [final_dir] [input_dir]
   
CP                                   ; Copy initial volume to input directory 
[vol_orig]                           ; Input volume file               (input)
[current_vol]                        ; Initial volume file             (output)

VM                                   ; Copy group selection file to input dir. 
\cp -p [sel_group_orig].$DATEXT   [sel_group].$DATEXT 

DOC SORT                             ; Sort defocus groups by number of particles
[sel_group]                          ; Group selection file            (input)
[sel_group_sorted]                   ; Sorted group selection file     (output)
2                                    ; Register for particle numbers
Y                                    ; Compress and renumber keys

FI [nsam]                            ; Query NSAM value (NROW must be = NSAM)
[current_vol]                        ; Initial reference volume        (input)
12                                   ; NSAM location

UD N [num-grp]                       ; Get total number of defocus groups
[sel_group]                          ; Group selection file            (input)

[tot-part]=0
DO  [i]=1,[num-grp]                  ; Loop over defocus groups  -----------------------------  
   UD IC [i], [grp], [num-part]      ; Get number of particles 
   [sel_group]                       ; Doc file listing groups     (input)    

   [tot-part]=[tot-part]+[num-part]  ; Sum total number of particles in all groups
ENDDO

DO [i]=1,[num-grp]                   ; Loop over defocus groups  -----------------------------

   ;          GROUP, PART.,     DEFOCUS              
   UD IC [i], [grp], [num-part],[defocus] ; Get number of particles & defocus value
   [sel_group]                            ; Doc file listing groups (input)  

   VM                       ; Copy starting alignment parameter files to final dir. 
   \cp -p [group_align_orig].$DATEXT [group_align].$DATEXT

   VM                       ; Link the starting unaligned images to input dir (large files) 
   ln -sf  ../[unaligned_images_orig].$DATEXT  [unaligned_images].$DATEXT  

   VM                       ; Link the starting aligned images to work dir (large files) 
   ln -sf  ../[aligned_images_orig].$DATEXT  [aligned_images].$DATEXT  

   VM                       ; Copy particle selection files to input dir. (one/group)
   \cp -p [sel_particles_orig].$DATEXT  [sel_particles].$DATEXT

   DOC SPLIT                ; Split particles into two sets of particle selection files
   [sel_particles]          ; Particle sel. doc file  (one/group)      (input) 
   [sel_particles_odd]      ; Particle sel. doc file  (one/group)      (output)
   [sel_particles_even]     ; Particle sel. doc file  (one/group)      (output)

   ; Create group CTFs 
   TF C3                    ; Compute phase contrast transfer function 
   _1                       ; Creates temp inline CTF file                     (output)
   (2.0)                    ; CS
   [defocus], [lambda]      ; Defocus(Angstroems), lambda(Angstroems):
   [nsam]                   ; Number of spatial freq. points
   [maxspfreq]              ; Maximum spatial frequency[a-1]
   (0.005, 0)               ; Source size[a-1], defocus spread[a]
   (0,0)                    ; Astigmatism[a], azimuth[deg]
   (0.1, 10000)             ; Ampl contrast ratio [0-1], Gaussian env halfw [Fou units]:  
   (-1)                     ; Sign

   ; Weight by number of particles / group
   [WT] = [num-grp] * [num-part] / [tot-part] 

   AR                       ; Weight CTF by number of particles 
   _1                       ; Temp inline CTF file          (input)
   [temp_ctf_file]          ; Weighted for CTF              (output)
   P1*[WT]                  ; Does the weighting

   VM                                      
   echo ' 'Group: {***[grp]}  CTF weighting: {%f8.2%[WT]} 
ENDDO

UD ICE                      ; Finished with this doc file 
[sel_group]

DE                          ; Remove temp. inline file
_1

VM
echo ' Finished initial file preparation'
VM                                      
echo ' '

RE
;