;
;
; PURPOSE: Assign micrographs to defocus groups
;
; SOURCE: spider/docs/techs/recon/newprogs/defsort.spi
;
; Input : Defocus doc file with 2 register columns:
; (1) Micrograph#, (2) Defocus value
; Micrograph selection doc file with 1 register column:
; (1) micrograph#
;
; Output : Defocus group doc file with 3 register columns
; (1) Micrograph#, (2) Defocus value, (3) Defocus group number
; OUTPUT FILE IS SORTED BY DEFOCUS VALUE!
; ----------- Parameters --------------
[maxdiff] = 1000 ; Max. difference for defocus values in same group
; ----------- Input files --------------
[mic_sel] = '../sel_micrograph' ; Micrograph selection doc. file
[defocus] = 'defocus' ; Micrograph defocus doc. file
; ----------- Output files --------------
[defsort] = 'def_sort' ; Defocus group doc. file
; -------------------- END BATCH HEADER ----------------------------
MD ; Skip unnecessary output
VB OFF
MD ; Skip unnecessary output
TR OFF
[tmp]='tmpdefsort' ; Create name for temp output doc file
DE ; Delete temp output doc file
[tmp] ; Temp file (removed)
DE ; Delete any existing output doc file
[defsort] ; Doc file (removed)
DOC SORT ; Sort the defocus file by defocus col
[defocus] ; Doc file (input)
[tmp] ; Doc file (output)
2 ; Sort column
Y ; Renumber doc file
; Put column labels in output doc file
SD / Micrograph Defocus Def.Group
[defsort]
[def1] = -1.0e20 ; So that it starts a new group
[grp] = 0 ; Initialize group
[nmics] = 0 ; Initialize output key
VM
echo ' 'Assigning defocus groups ; echo ' '
DO ; Loop over all micrographs --------------
UD NEXT [key],[mic],[def] ; Read micrgraph # & defocus
[tmp] ; Doc file (input)
IF ([key].LE. 0) EXIT
UD FIND [selkey] ; See if micrograph is in selection file
[mic_sel] ; Selection file (input)
(1,[mic]) ; Col. & micrograph to be selected
IF ([selkey] .LE. 0) CYCLE ; Skip if micrograph not selected
[def-diff] = ([def] - [def1]) ; Defocus difference
IF ([def-diff].GT.[maxdiff]) THEN
[grp] = [grp] + 1 ; Start new group
[def1] = [def] ; Lowest defocus value in new group
ENDIF
[nmics] = [nmics]+1 ; Output key number
; Save mic, defocus, group in doc file
SD [nmics], [mic],[def],[grp]
[defsort] ; Defocus doc file (output)
VM
echo ' 'Micrograph: {*****[mic]}' 'Group: {****[grp]}
ENDDO ; End Loop -------------------------------
VM
echo ' ' ; echo ' 'Created: {****[grp]} groups from: {******[nmics]} micrographs ; echo ' '
UD NEXT E
[tmp]
UD FIND E
[mic_sel]
DE
[tmp]
EN
;