;
;
; PURPOSE: Assign defocus values to groups
;
; Input : defocus doc file with 2 columns:
; (1) micrograph#, (2) defocus value
;
; Output : defocus group doc file with 3 columns
; (1) micrograph#, (2) defocus value, (3) defocus group
; NB: OUTPUT FILE IS SORTED BY DEFOCUS VALUE!
[maxdiff] = 1000 ; Max. difference for defocus values in same group
; ----------- Input files --------------
FR G
[defocus]defocus ; Defocus file
; ----------- Output files --------------
FR G
[defsort]def_sort ; Defocus group file
; -------------------- END BATCH HEADER ----------------------------
MD ; Skip unnecessary output
VB OFF
MD ; Skip unnecessary output
TR OFF
[grp] = 1 ; [grp] = group number
FR G
[tmp]tmpdefsort
DE ; Delete output doc file
[tmp]
DE ; Delete output doc file
[defsort]
DOC SORT ; Sort the defocus file
[defocus] ; Doc file (input)
[tmp] ; Doc file (output)
2 ; Sort column
Y ; Renumber doc file
VM
echo ' 'Computing defocus groups
; 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
DO ; Loop over all micrographs --------------------
; [def] = current defocus, [mic] = mic
UD NEXT [key],[mic],[def]
[tmp]
IF ([key].LE. 0) EXIT
[def-diff] = ([def] - [def1])
IF ([def-diff].GT.[maxdiff]) THEN
[grp] = [grp] + 1
[def1] = [def]
ENDIF
[nmics] = [nmics]+1 ; Output key number
; Write out 1st line: mic, defocus, defgroup
SD [nmics], [mic],[def],[grp]
[defsort]
ENDDO
UD NEXT E ;[tmp]
DE
[tmp]
VM
echo ' 'Found: {*****[grp]} groups from: {******[nmics]} micrographs
VM
echo ' '
EN D
;