;
; calcparms.bat
; PURPOSE: Reads parameter file, checks values for
; lambda,
; spatial frequency,
; window size,
; particle size
;
; If any are zero, they are computed and WRITTEN TO THE PARAMETER FILE.
;
; Computes an odd number for window size.
; Inputs:
; parameter file
; Outputs:
; parameter file may be changed
; ---------------------- Parameters -------------------------
x68 = 368 ; Angstroms, typical window size for ribosome projects
x69 = 250 ; Angstroms, actual ribosome particle diameter
; x91 = lambda, a function of kV
; x92 = maximum spatial frequency, = 1/(2*pixelsize)
; x93 = window size (pixels)
; x94 = particle (actual) size (pixels)
; ---------------------- Input/Output file ------------------
FR
?parameter file?[params] ; parameter file
; -------------- END BATCH HEADER ------------------------------
x77 = 0 ; set to 1 if any changed
FR L
[tmp]tmpparms
; copy parameter file to internal array
UD N,x98
[params]
SD IC NEW
[tmp]
(1,x98)
DO LB1 x11 = 1,x98
UD x11,x12
[params]
SD IC, x11,x12
[tmp]
LB1
UD E
;[params]
; check lambda (position 14)
UD IC,14,x91
[tmp]
IF (x91.EQ.0) THEN
x77 = 1
UD IC, 6,x21 ; KV, for computing lambda
[tmp]
x91 = 12.398 / SQR(x21 * (1022.0 + x21))
SD IC, 14,x91
[tmp]
ENDIF
UD IC, 5,x31 ; pixelsize, needed for next 3 values
[tmp]
; check max.spat.freq (position 15)
UD IC,15,x92
[tmp]
IF (x92.EQ.0) THEN
x77 = 1
x92 = 1.0 / (2.0 * x31)
SD IC, 15,x92
[tmp]
ENDIF
; window size (position 17)
UD IC,17,x93
[tmp]
IF (x93.EQ.0) THEN
x77 = 1
x93 = INT(x68/x31) ; compute window size
; make sure window size is odd
x91 = INT(x93/2.0)
x90 = x93 - (2*x91)
if (x90.EQ.0) x93 = x93 + 1
SD IC, 17,x93
[tmp]
ENDIF
; check particle size (position 18)
UD IC,18,x94
[tmp]
IF (x94.EQ.0) THEN
x77 = 1
x94 = INT(x69/x31) ; compute actual size
SD IC, 18,x94
[tmp]
ENDIF
UD ICE
; write new values, if any
IF (x77.EQ.1) THEN
DE
[params]
SD IC COPY
[tmp]
[params]
ENDIF
RE