; Computes dala files
;
; SOURCE: spider/docs/techs/recon/newprogs/makedala.spi   
;                       New                                Jun 2010 ArDean Leith
;
; PURPOSE: Create 'dala' files for a given iteration.
;
;------------ Edit next 6 Input parameters ------------------------------ 

[pubsub]  = 0   ; If >0 use PubSub
[iter]    = 8   ; Iteration number for dala files


; ----------------- Input files --------------------------------------------

[defgrps]           = 'input/sel_group'                    ; List of groups (group selection doc file)

[unaligned_images]  = 'input/data{***[grp]}@'              ; Unaligned particles stacks

[align_parameters]  = 'final/align_{**[iter]}_{***[grp]}'  ; Alignment parameters doc. file 

; ----------------- Output files ------------------------------------------------

[aligned_images]    = 'work/dala_{**[iter]}_{***[grp]}@'   ; Rotated, shifted (aligned) particles

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

MD
TR OFF                                ; Decrease results file output
MD
VB OFF                                ; Decrease results file output

; DO NOT WORRY IF [grp] IS UNDEFINED HERE, IT IS TAKEN CARE OF BY PUBSUB
IF ([grp] .GT. 0) [pubsub] = 0        ; Secondary PubSub run 

UD N [numgrps]                        ; Get number of groups 
[defgrps]                             ; Groups selection file                    (input)

IF ([pubsub] .EQ. 0) THEN             ; Main loop runs 'AP SH'
                                      ; Used for Non-PubSub and PubSub runs 
  
   MD                 
   SET MP                             ; Use all processors (needed here for secondary runs)
   0

   IF ([grp] .GT. 0) [numgrps] = 1    ; Group listed on command line, overides list        

   DO  [numgrp]=1,[numgrps]           ; Loop over all group(s)

      IF ([grp] .LT. 1) THEN          ; Group not on command line, use list from selection file        
         UD [numgrp],[grp]            ; Get current group number 
         [defgrps]                    ; Group selection file                  (input)
      ENDIF

      VM
      echo ' 'Processing "dala" files for group: {****[grp]}   

      ; Apply alignment parameters to unaligned particles
      ; Order in doc file: PHI,THETA,PSI, REF#,IMG#,  ROT,SX,SY

      RT SQ                           ; Rotate & shift whole stack operation
      [unaligned_images]              ; Unaligned particles stack             (input) 
      [aligned_images]                ; Aligned particles stack               (output)
      (6,0,7,8)                       ; Reg. numbers for angle, scale,& shifts
      [align_parameters]              ; Alignment angles doc. file            (input)

      MY FL                           ; Flush results file
      [grp] = 0                       ; Reset default group for next group
   ENDDO                              ; End loop for multiple groups
    
ELSE                                  ; Used only to intiate master PubSub run 
   DO  [numgrp]=1,[numgrps]           ; Loop over all groups
   
       UD [numgrp],[grp]              ; Get current group number 
       [defgrps]                      ; Group selection file                   (input)
   
       ; Create parallel PubSub run for each group
       VM                             ; Use PubSub to create parallel processes   
       publish './spider spi/$DATEXT @makedala {***[grp]} grp={***[grp]}'
    ENDDO
ENDIF

EN