;
; sigs_pub.pam Bimal Rath : JAN 2003 ; PARALLELIZED BY ArDean Leith ; ; SEARCHES FOR MOLECULAR SIGNATURE (REFERENCE VOLUME) INSIDE A LARGE VOLUME. ; WORKS FOR GLOBULAR AND ALSO NON-GLOBULAR REFERENCE VOLUMES. AN ISOTROPIC OR ; NON-ISOTROPIC MASK CAN BE USED AS A CHOICE. USED ALAN ROSEMAN'S FORMULATION ; FOR LOCAL CROSS-CORRELATION COEFFICIENTS.(ULTRAMICROSCOPY 94, 225-236, 2003) ; ; PARALLEL USAGE: current directory needs link to spider eg: ; ln -s /usr/local/spider/bin/spider_linux_mpfftw.27 spider ; ; SAMPLE PARALLEL USAGE : ./spider pam/dat @sigs_pub 0 & ; ; BE SURE BOTH VOLUMES HAVE SAME MAGNIFICATION (1 PIXEL = "N" NANOMETER) ; READ INPUT SETTINGS @sigs_settings[x12,x65,x66,x67,x74,x75,x76,x77,x78,x79,x83,x95,x39,x61,x64] ; PREPARE DIRECTORIES VM ; Dir. for output files - work, local, & output mkdir -p [temp_work_dir] [temp_local_dir] [output_dir] ; RESIZE THE SMALL VOLUME INTO A ROTATION CUBE FI x23,x24,x25 ; Small volume size [SMALL_REF_VOLUME] 12,2,1 IF (X39 .EQ. 1) THEN ; ASYMMETRIC MASK IS USED ; TEST IF THE THRESHOLD VALUE IS +VE. IT IS REQUIRED. OTHERWISE, THE PADDED ; VOLUME WITH ZEROS OUTSIDE THE INSERTED SMALL_REF_VOLUME WILL CREATE ; A MASK WHICH WILL NOT REPRESENT THE ACTUAL SHAPE OF THE MOTIF AS DESIRED ; BY THE USER. IF (x83 .LE. 0) THEN VM echo " " VM echo " ABORTING... RESCALE THE MOTIF SO THAT THE INPUT THERESHOLD (X83) WILL BE +VE !!" VM echo " " EN ENDIF ; FIND THE DIAGONAL OF THE SMALL VOLUME x28 = INT(SQR ((X23 * X23) + (X24 * X24) + (X25 * X25))) x29=x28 ; Y padded size x30=x28 ; Z padded size x31=INT((x28-x23)/2)+1 ; X corner x32=INT((x29-x24)/2)+1 ; Y corner x33=INT((x30-x25)/2)+1 ; Z corner PD ; Pad small volume into cube for rotation [SMALL_REF_VOLUME] [PADDED_REF_VOLUME] (x28,x29,x30) ; New size N ; Not average background 0.0 ; Background (x31,x32,x33) ; Location for small ref volume inside pad ELSE ; ROTATIONALLY INVARIANT MASK IS USED. EVEN THOUGH FOR ASYMMETRIC MASK ; THE REFERNCE VOLUME IS PADDED TO BE A CUBE AND THE ALGORITHM SHOULD WORK ; COMPUTATIONALLY, IT MAY GIVE INCORRECT RESULTS SINCE THE PADDED CUBE ; IS A BIGGER CUBE (SIDE = DIAGONAL OF THE REFRENCE VOLUME). THE ROATATIONALY ; INVARIENT MASK'S DIAMETER IS DEPENDENT ON THE PADDED CUBE'S DIMENSION. SO, THE ; ACTUAL MASK WILL BE LARGER THAN THE MOTIF THAT THE USER SUPPLIES. ; IT IS REQUIRED THAT THE REFERENCE VOLUME BE A CUBE IF A ROTATIONALLY ; INVARIANT MASK IS USED. THE MASK CREATED FOR THIS CASE WILL HAVE A DIAMETER EQUALS TO ; 4 PIXELS LESS THAN THE SIDE OF THE MOTIF. ; TEST IF THE INPUT MOTIF IS A CUBE IF ( X23 .EQ. X24) THEN IF (X23 .EQ. X25) THEN cp [SMALL_REF_VOLUME] [PADDED_REF_VOLUME] GOTO LB8 ENDIF ENDIF VM echo " " VM echo " ABORTING... INPUT MOTIF IS NOT A CUBE !!" VM echo " " EN ENDIF LB8 ; CREATE TEMP. FILES FOR SPEED-UP SQ ; Square the volume [LARGE_VOLUME] _3 ; DO FT ON SQUARE OF THE LARGE VOLUME FT ; Fourier transform _3 [LARGE_SQ_FT] DE _3 ; DO FT ON LARGE VOLUME FT ; Fourier transform [LARGE_VOLUME] [LARGE_FT] ; FINISHED PREPARING INPUT FILES ----------------------------- VM echo "Number of phi angles (parallel jobs): {****x79}" DO LB4 x72 = 1,x79 ; REMOVE SYNC FILES DE [DOC_FILE_OUT]_{****x72} ; COMMENCE EULER ANGLE SEARCH VM publish "./spider $PRJEXT/$DATEXT @sigsloop {***x72} x72={***x72}" LB4 ; Wait for all jobs x11=1 @wait_pub(x11,x79) VM echo "Finished search - Consolidate all doc files now." EN ; OFTEN DOC. FILES ARE TOO LARGE TO USE THE FOLLOWING STEPS ---------- DOC COMBINE ; Combine all the Renumbered doc files into one big file [DOC_FILE_OUT]_**** 1-x79 [PEAK_COMBINED] DOC SORT ; Sort the combined doc file [PEAK_COMBINED] [PEAK_COMBINED]_SORTED 7 Y EN ; If doc. files are too large, use the following steps ---------- ; cat *OUT* > jnkbig ; sort -nr -k 9 jnkbig > jnksort ; uniq.perl < jnksort > ryr6_sort.dat ; spider pam/dat @circle ; spider pam/dat @number ; spider pam/dat @window 2 ; scp volmark.dat leith@samar.wadsworth.org:/usr5/leith/sig ; ;