;
; 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
;
;