;
; new_sigsloop.pam JAN 2003 Bimal Rath ; Parallelized MAY 2003 ArDean Leith ; Altered for tomography OCT 2006 Christian Renken ; Rewritten JUL 2008 ArDean Leith ; Improved JAN 2011 ArDean Leith ; ; PURPOSE: Locates molecular signature (motif) inside search volume. ; Be sure both volumes have same magnification ; (1 Pixel = "n" nanometer) ; ; SAMPLE USAGE : ./spider spi/dat @new_sigsloop 99 num=1 [num] ; NEEDED FROM STARTUP LINE!!!! ; Read input variables and file names @new_sigs_settings([n],[phi0],[the0],[psi0],[phid],[thed],[nphi],[nthe],[psin],[mskval],[peaks],[msktype]) MY fl MD VB OFF ; Minimize results file output MD TR OFF ; Minimize results file output MD SET MP ; Set number of OMP processors [n] [key] = 0 ; Initial doc. file output line number IQ FI [have_tomo_wedge] ; Are using tomo. wedge filter [WEDGE_FILTER] ; Euler angle search is done here [nrots] =0 [phi] = [phi0] + ([num]-1)*[phid] ; Current phi counter is sent from caller DO [it] = 1, [nthe] ; Theta loop --------------------------------- THETA [theta] = [the0]+([it]-1)*[thed] ; Modulate psid to uniformly sample unit sphere [sint] = SIN([theta]) [dsint] = ABS([sint]) IF ([dsint] .LE. 0.01) THEN [psid] = 360 [npsi] = 1 ELSE [psid] = [thed] / [sint] [npsi] = INT((([psin]-[psi0])/[psid])+1) if ([npsi] .LT. 1) [npsi] = 1 ENDIF !vm !echo ' For theta: {***[theta]} {%f5.1%[psid]} {***[npsi]}' DO [jt] = 1, [npsi] ; Psi loop -------------------------------- PSI [psi] = [psi0]+([jt]-1)*[psid] [nrots]=[nrots]+1 VM echo ' Rotation: {****[nrots]} Phi,the,psi: {***[phi]}, {***[theta]}, {***[psi]}' [loopcount] = ([it]-1)*[nphi] + [jt] ; Do-loop counter ; Using an asymmetric mask, Rotate mask vol RT 3D ; Rotate [MOTIF_MASK] ; Cubic motif mask vol (input) _1 ; Rotated cubic mask vol (output) [phi],[theta],[psi] ; Rotation angle ; Threshold cubic rotated mask TH M ; Threshold to create mask _1 ; Rotated mask vol (input) _2 ; Thresholded, rotated mask (output) B ; Below = 0 (.3) ; Threshold value !fi h [min],[max] ![SEARCH_VOL] !fmin,fmax !vm !echo ' Search vol:',{%1pg13.3%[min]} .... {%1pg13.3%[max]} !fi h [min],[max] !_2 !fmin,fmax !vm !echo ' Rotated mask vol:',{%1pg13.3%[min]} .... {%1pg13.3%[max]} !vm !echo ' Oper: LO I' ; Pad rotated mask and create FFT -------------------------- LO I LO I ; Padded FFT creation for mask M ; Make FFT of mask only [SEARCH_VOL] ; Large search vol (input) _2 ; Rotated cubic motif mask (input) [MOTIF_MASK_FFT] ; FFT of padded, rotated mask (output) !vm !echo ' Oper: LO LSD' ; Create local SD vol using rotated mask ------------------ LO LSD LO LSD ; LSD creation _2 ; Rotated cubic motif mask (input) [MOTIF_MASK_FFT] ; FFT of padded, rotated mask (input) [SEARCH_VOL_FFT] ; FFT of search vol (input) [SEARCH_VOL_SQ_FFT] ; FFT of sq. search vol (input) [LSD_VOL] ; Local SD vol (output) !vm !echo ' Oper: RT 3D on cubic motif vol' ; Rotate the cubic motif vol RT 3D ; Rotate [CUBE_MOTIF_VOL] ; Cubic motif (input) _3 ; Rotated cubic motif (output) [phi],[theta],[psi] ; Rotation angle VM echo ' Rotation angle: {****[phi]} {****[theta]} {****[psi]}' !vm !echo ' Oper: LO' ; Locate rotated motif within search vol -------------------- LO LO ; Locate motif [phi],[theta],[psi] ; Angles for doc. file _3 ; Rotated cubic motif (input) _2 ; Rotated mask for motif (input) [SEARCH_VOL_FFT] ; Search vol fft (input) [LSD_VOL] ; Local SD vol (input) [peaks] ; Number of peaks wanted [PEAK] ; Peaks image (output) [DOC_FILE_OUT] ; Peak location doc file (output) MY FL ; Flush results file ENDDO ; End of: Psi loop ENDDO ; End of: Theta loop @signal_pub([num]) ; Signal this parallel job is finished [SYNC_DOC_BASE] EN ;