;
; ; SOURCE: spider/docs/techs/recon/newprogs/apshgrp.spi ; New Nov 2004 ArDean Leith ; Rewritten Feb 2005 ArDean Leith ; Added alignment option & stack op Nov 2006 ArDean Leith ; SET MP location Feb 2008 ArDean Leith ; VAR name Feb 2010 ArDean Leith ; VAR names changed Dec 2010 ArDean Leith ; ; PURPOSE: Multi-reference alignment of an image series. ; Sample images are aligned with reference projections via ; shifts (translations) and rotations. ; FOR PROJECTS WITH MULTIPLE GROUPS- WITH OR WITHOUT PUBSUB. ; ;------------ Edit next 7 Input parameters ------------------------------ [pubsub] = 0 ; If >0 use PubSub [doalign] = 1 ; If >0 apply alignment to images [shrange] = 8 ; Translation search range (must be divisible by step size) [step] = 2 ; Translation step size [diam] = 276 ; Diameter of object (Angstroms) for alignment search. ; (EDIT as needed!) Used to find last rotational alignment radius. [r1] = 5 ; First rotation alignment ring, only radii > this will be analyzed [r2] = 0 ; Last rotation ring (If zero, compute from object diameter) ; ----------------- Input files -------------------------------------------- [params] = '../params' ; Parameter setting file [defgrps] = 'sel_group' ; List of defocus groups (doc. file) [ref_images] = 'projs/prj_{***[grp]}@' ; Reference images [ref_images_angles] = 'refangles' ; Reference images angles doc. file [unaligned_images] = 'data{***[grp]}@' ; Unaligned particles images ; ----------------- Output files ------------------------------------------------ [align_parameters] = 'align_01_{***[grp]}' ; Alignment parameters doc. file [aligned_images] = 'dala01_{***[grp]}@' ; Rotated, shifted (aligned) particles ; ----------------- END BATCH HEADER ------------------------------------------- MD TR OFF ; Decrease results file output MD VB OFF ; Decrease results file output MD () OFF ; No () necessary in loops ; DO NOT WORRY IF [grp] IS UNDEFINED HERE, IT IS TAKEN CARE OF BY PUBSUB IF ([grp] .GT. 0) [pubsub] = 0 ; Secondary PubSub run UD N [numgrps] ; Get number of groups [defgrps] ; Groups selection file (input) IF ([pubsub] .EQ. 0) THEN ; Main loop runs 'AP SH' ; Used for Non-PubSub & PubSub runs MD SET MP ; Use all processors (needed here for secondary runs) 0 ; Get rotational alignment radius from object size if needed IF ([r2].LE.0) THEN UD 5,[sp_pixsiz] ; Get pixel size (A) [params] ; Reconstruction parameters (input) UD 17,[sp_winsiz] ; Get window size (pixels) [params] ; Reconstruction parameters (input) [r2] = INT([diam]/(2.0*[sp_pixsiz])) ; Object radius (pixels) for last alignment ring [ring-sh] = [r2] + [shrange] ; Last ring + translation range [maxrad] = INT([sp_winsiz]/2) - 2 ; Max. radius of object in window IF ([ring-sh] .GE. [maxrad]) THEN [r2] = [maxrad] - [shrange] - 1 ; Reduce radius of outer ring to fit window ENDIF ENDIF IF ([grp] .GT. 0) [numgrps] = 1 ; Group listed on command line, overides list DO [numgrp]=1,[numgrps] ; Loop over all group(s) IF ([grp] .LT. 1) THEN ; Group not on command line, use selection file UD [numgrp],[grp] ; Get current group number [defgrps] ; Group selection file (input) ENDIF DE ; Delete existing output doc. files. [align_parameters] FI H [numpart] ; Get number of particles [unaligned_images] ; Unaligned particle images (input) MAXIM ; Max. image number in stack FI H [numproj] ; Get number of projections [ref_images] ; Reference images (input) MAXIM ; Max. image number in stack VM echo ' 'Aligning group: {****[grp]} with: {******[numpart]} particles AP SH ; Find Alignment using multiple references [ref_images]***** ; Reference image file name template (input) (1-[numproj]) ; List of reference images [shrange],[step] ; Shift search range, step size [r1],[r2] ; First and last ring [ref_images_angles] ; Ref. angles doc file (input) [unaligned_images]***** ; Unaligned particle images (input) (1-[numpart]) ; List of particles * ; No unaligned particles align. doc file (0) ; No restriction on angular proj. search (1) ; Check mirrored positions [align_parameters] ; Alignment angles doc. file (output) IF ([doalign] .GT. 0) THEN ; Apply alignment parameters to unaligned particles ; Order in doc file: PHI,THETA,PSI, REF#,IMG#, ROT,SX,SY RT SQ ; Rotate & shift whole stack operation [unaligned_images] ; Unaligned particles stack (input) [aligned_images] ; Aligned particles stack (output) (6,0,7,8) ; Reg. numbers for angle, scale,& shifts [align_parameters] ; Alignment angles doc. file (input) ENDIF MY FL ; Flush results file [grp] = 0 ; Reset default group for next group ENDDO ; End loop for multiple groups ELSE ; Used only to intiate master PubSub run DO [numgrp]=1,[numgrps] ; Loop over all groups UD [numgrp],[grp] ; Get current group number [defgrps] ; Group selection file (input) ; Create PubSub run for this group VM ; Use PubSub to manage parallel processes publish './spider spi/$DATEXT @apshgrp {***[grp]} grp={***[grp]}' ENDDO ENDIF EN ;