;
;
; SOURCE: spider/docs/techs/recon/newprogs/average.spi
;
; PURPOSE: Creates average and variance for images which come from a
; each reference projection view. Works for a single
; specified group!
;
; I/O PARAMETERS AND FILES ARE SET HERE:
;
; ------------ Input files ---------------------------------------
[params] = '../params ' ; The parameter file
[dfdir] = 'df{***[grp]}' ; An input directory
[defgrps] = '../Alignment/sel_group' ; Defocus group selection doc file
[part_per_proj] = '[dfdir]/how_many' ; # of particles for each projection for group
[select] = '[dfdir]/ref_sel***' ; Particle numbers assigned to each projection set
[ali] = '../Alignment/dala01_{***[grp]}@******' ; Aligned particle images
; --------------- Output files -----------------------------------
[dir] = 'avg' ; Output directory
[avg] = '[dir]/avg_{***[grp]}@*****' ; Average image stack (one image per reference view)
[var] = '[dir]/var_{***[grp]}@*****' ; Variance image stack (one image per reference view)
; -------------- END BATCH HEADER ---------------------------------
MD
TR OFF ; Decrease results file output
MD
VB OFF ; Decrease results file output
UD 17,[sp_winsiz] ; Get image size
[params]
VM ; Create output directory if necessary
mkdir -p [dir]
[grp]=1 ; Assume all groups have same # of projections
UD N [numprojs] ; Get number of projections
[part_per_proj]
DO ; Loop over all defocus groups -------------------
UD NEXT [k],[grp] ; Get group from group sel. file
[defgrps] ; Group selection file (input)
IF ([k].LE.0) EXIT ; End of input
VM
echo " Creating avg. and var. images for group: {***[grp]} Projections: {***[numprojs]}"
DO ; Loop over all projections ------------------
UD NEXT [proj], [part] ; Get number of particles for current projection
[part_per_proj] ; Number of particles per projection (input)
IF ([proj].LE.0) EXIT ; End of input
IF ([part] .EQ. 0) THEN ; Zero particles for this projection
BL
[avg][proj] ; Average output (output)
[sp_winsiz],[sp_winsiz] ; Size
N ; No background
(0.0) ; Value
BL
[var][proj] ; Variance output (output)
[sp_winsiz],[sp_winsiz] ; Size
N ; No background
(0.0) ; Value
CYCLE ; Zero particle (should not occur!)
ENDIF
UD IC 1, [pn],[cc],[mir] ; Retrieve particle number, CC, & mirror flag
[select][proj] ; Selection file (input)
IF ([part] .EQ. 1) THEN ; Only a single particle for this projection
IF ([mir] .LT. 0.0) THEN
MR ; Must mirror the image
[ali][pn] ; Image file
[avg][proj] ; Average file (output)
Y ; Y axis
ELSE
CP ; Copy image to average
[ali][pn] ; Image file (input)
[avg][proj] ; Average file (output)
ENDIF
BL
[var][proj] ; Variance (output)
[sp_winsiz],[sp_winsiz] ; Size
N ; No background
(0.0) ; Value
ELSE ; Multiple particles for this projection
MS
_1@
[sp_winsiz],[sp_winsiz] ; Dimensions
[part] ; Num. slices
DO [partorder]=1,[part] ; Loop over particles ----------------
UD IC [partorder],[pn],[cc],[mir]
[select][proj]
IF ([mir] .LT. 0.0) THEN
MR ; Must mirror the image
[ali][pn] ; Image file (input)
_1@{*****[partorder]} ; Temp. mirrored file (output)
Y ; Y axis
ELSE
CP
[ali][pn] ; Image file (input)
_1@{*****[partorder]} ; Temp. mirrored file (output)
ENDIF
ENDDO ; End particle-loop
AS R ; Add to average/variance
_1@******
(1-[part]) ; Selection file
A
[avg][proj] ; Average input
[var][proj] ; Average output (output)
DE
_1@
ENDIF
UD ICE
[select][proj] ; Selection file (input)
ENDDO
UD NEXT END
[part_per_proj]
ENDDO
UD NEXT END
[defgrps] ; Group selection file (ends)
VM
echo ' '
EN
;