;
Estimates defocus values from power spectra
;
; SOURCE: spider/docs/techs/recon/newprogs/mrcctf.spi
; New Bill Baxter
; Pixel size bug and total rewrite Sept 2010 ArDean Leith
;
; PURPOSE: Get defocus using MRC program CTFFIND3
;
; REQUIRES: ctffind3.exe CTFFIND3 executable
; readmrc.py Python script that extracts info from report
; loadmic.spi SPIDER procedure to load micrographs
;
; INPUTS: Micrographs (in SPIDER format)
; SPIDER Parameter doc file
; Selection doc file containing micrograph numbers
; Boundary for windowing edges of micrographs
; Parameters for ctffind, including
; - CS (mm) : Spherical aberration of objective
; - HT (kv) : Electron beam voltage
; - AmpCnst : Amplitude contrast ratio
; - XMAG : Magnification or original image
; - DStep (microns): Pixel size on scanner (microns)
; - Box (pixels) : Tile size in ctffind (must be even)
; - ResMin (A) : Low resolution end of data to be fitted
; - ResMax (A) : High resolution end of data to be fitted
; - dFMin (A) : Starting defocus value for grid search
; - dFMax (A) : End defocus value for grid search
; - FStep (A) : Step width for grid search
;
; OUTPUTS: Doc file of defocus and astigmatism information.
; Power spectrum from ctffind3 (in SPIDER format).
; Text report from ctffind3.
;
; DETAILS: defmrc.html
;
; CS[mm], HT[kV], AmpCnst, XMAG, DStep[um]
; 2.6, 200.0, 0.07, 60000.0, 28.0 From source
; 2.00 200. 0.10 41899. 14.0 From Albany
; Box, ResMin[A], ResMax[A], dFMin[A], dFMax[A], FStep
; 512, 35.0, 7.5, 10000.0, 40000.0, 5000.0 From Albany
; 128, 100.0, 15.0, 30000.0, 90000.0, 5000.0 from source
;
; --------------------- Albany Standard Parameters ---------------------------------
; Exclude edges of the micrograph
[xb] = 500 ; X distance from border
[yb] = 500 ; Y distance from border
[box] = 500 ; Box size for CTFFIND3 (must be even)
[ResMin] = 35 ; ResMin (A)
[ResMax] = 7.5 ; ResMax (A)
[dFMin] = 10000 ; dFMin (A)
[dFMax] = 40000 ; dFMax (A)
[FStep] = 5000 ; FStep (A)
; ----------- Input files ---------------
[params] = '../params' ; Reconstruction parameters file
[raw] = '../Micrographs/mic{****[num]}' ; Micrographs
[sel_mic] = '../sel_micrograph' ; Micrograph selection doc file
[exec] = '/usr8/repository/ctffind3/ctffind3.exe' ; CTFFIND3 executable location
; ----------- Output files --------------
[output_dir] = 'power' ; Dir. for output files
[ps-spi] = '[output_dir]/powchk{****[num]}' ; Power spectrum files
[report] = '[output_dir]/report{****[num]}' ; Report files, created by CTFFIND3
[defocus] = 'defocus-mrc' ; Summary defocus doc file
; Temporary files
[spi] = '_1' ; SPIDER temp files from conversion
[temp] = '_2' ; SPIDER temp file from Nikon & Hiscan
[win-spi] = 'jnk-win-spi' ; Windowed SPIDER temp files
[commands] = './jnk-commands.sh' ; CTFFIND3 command files
; -------------------- END BATCH HEADER -----------------------
MD ; Skip unnecessary output
VB OFF
MD ; Skip unnecessary output
TR OFF
MD
SET MP ; Use single processor
1
VM ; Create output directory
mkdir -p [output_dir]
; Parameters for loading
UD 1,[zflag] ; Get zip flag
[params] ; Params file (input)
UD 2,[fflag] ; Get tif flag
[params] ; Params file (input)
UD 3,[nx] ; HiScan X parameters
[params] ; Params file (input)
UD 4,[ny] ; HiScan Y dimension
[params] ; Params file (input)
; Parameters for CTFFIND3
UD 6,[sp_kev] ; Electron beam voltage (kV)
[params] ; Params file (input)
UD 7,[sp_sph_abb] ; Spherical aberration
[params] ; Params file (input)
UD 12,[sp_acr] ; Amplitude contrast ratio
[params] ; Params file (input)
UD 19,[sp_mag] ; Magnification of original image (final mag on F30)
[params] ; Params file (input)
UD 20,[sp_scanres] ; Scanning resolution (microns) = Pixel size on scanner
[params] ; Params file (input)
DE ; Delete output summary doc file
[defocus] ; Doc file (removed)
[deci] = 1 ; No decimation
[keepspi] = 0 ; Do not keep temp Spider file
[sp_sph_abb]
[sp_kev]
[sp_acr]
[sp_mag]
[sp_scanres]
DO ; Loop over all files -------------------------
UD NEXT [key],[num] ; Get micrograph number from sel. file
[sel_mic] ; [num] is now the micrograph file number
IF ([key] .LE. 0) EXIT ; End of images in selection doc file
; Convert micrograph to SPIDER format (if necessary)
@loadmic([num],[zflag],[fflag],[deci],[nsam],[nrow],[keepspi])
[raw] ; Micrograph (input)
[spi] ; SPIDER file (output)
_2 ; Scratch file (output)
FI H [nsam],[nrow] ; Get NSAM & NROW
[spi] ; SPIDER file (input)
NSAM,NROW
[x] = [nsam] - (2*[xb]) ; Dimensions without border
[y] = [nrow] - (2*[yb])
VM
echo " Micrograph: {*****[num]} : {*****[nsam]} x {*****[nrow]} -- {*****[x]} x {*****[y]}"
; Window the micrograph, removing borders
WI ; Window
[spi] ; Micrograph (input)
[win-spi] ; Windowed micrograph (output)
([x],[y]) ; Dimensions
([xb],[yb]) ; Start coords
FS ; CTFFIND3 needs min & max
[win-spi] ; Windowed micrograph (output)
; Create a CTFFIND3 command script
VM
\rm -f [report] [commands]
VM ; CTFFIND3 command script
echo '#!/bin/csh -x ' >> [commands]
VM
echo '[exec] << eof' >> [commands]
VM
echo [win-spi].$DATEXT >> [commands]
VM
echo [ps-spi].$DATEXT >> [commands]
VM
echo ' ' {%f5.2%[sp_sph_abb]} {%f6.0%[sp_kev]} {%f5.2%[sp_acr]} {%f7.0%[sp_mag]} {%f7.2%[sp_scanres]} >> [commands]
VM
echo ' ' {****[box]} {%f5.1%[ResMin]} {%f5.1%[ResMax]} {*****[dFMin]} {*****[dFMax]} {*****[FStep]} >> [commands]
VM
echo 'eof' >> [commands]
IF ([key] .LE. 1) THEN
VM
echo ' ' ; echo ' 'First CTFFIND3 command script: ; cat [commands] ; echo ' '
ENDIF
; Execute the CTFFIND3 command script
VM
chmod +x [commands] ; [commands] >> [report]
; Collect defocus values from report
VM
readmrc.py [report] {****[num]} >> [defocus].$DATEXT
ENDDO
VM ; Type the defocus doc file
echo ' ' ; cat [defocus].$DATEXT ; echo ' '
DE
[spi] ; Temp SPIDER file (deleted)
DE
[win-spi] ; Windowed SPIDER micrograph (deleted)
VM
\rm -f [win-mic] [commands]
EN