; sigsearchg.bat Bimal Rath JULY 2002 ; ; SEARCH FOR MOLECULAR SIGNATURE OF A REFERENCE VOLUME ; INSIDE A LARGE VOLUME. WORKS GREAT FOR GLOBULAR MOTIFS. ; USES AN ISOTROPIC (ROTATIONALLY INVARRIANT) MASK. USES ; REAL SPACE CALCULATION. TO SEARCH FOR NON-GLOBULAR MOTIFS ; INSIDE A LARGE VOLUME, USE sigsearch.spi ; MAKE SURE THAT BOTH VOLUMES ARE OF SAME MAGNIFICATION (1 PIXEL = "N" NANO ; METER) MD NO RESULTS ; READ INPUT FILES FR ?LARGE_VOLUME?<1> FR ?SMALL_REFERENCE_VOLUME?<2> ; DOC FILES DOC_1 - DOC_5 ARE FOR TESTING THE PROGRAM FR L ?DOC_FILE #1?<3> doc_1 FR L ?DOC_FILE #2?<4> doc_2 FR L ?DOC_FILE #3?<5> doc_3 FR L ?DOC_FILE #4?<6> doc_4 ; PEAK SEARCH FILES FR L ?DOC_FILE #5?<7> DOC_DELETED_5 ; FILE WITH EULERIAN ANGLES AND INFO FROM PEAK SEARCH FILE FR L ?DOC_FILE #6?<8> DOC_DELETED_6 ; SORT INFO FROM EULERIAN ANGLES FILE AND PEAK SEARCH FILE AS PER PEAK HEIGHT FR ?DOC_FILE ?<9> ; SCALED REFERENCE IMAGE (SCALED AS PER LARGE VOLUME PIXEL INTENSITY VALUES) FR L ?IMAGE FILE #1?<10> REF_DELETED_7 ; EULERIAN ANGLES BEGINING AND ENDVALUES ; PHI (X65-X68), THETA(X66-X69), PSI(X67-X73) ; NOTE: KEEP ENDVALUES ALWAYS +VE RR X65 ?PHI, START ANGLE ? RR X68 ?PHI, END ANGLE (+VE) ? RR X74 ?PHI, SEARCH STEP SIZE (+VE) ? ; AVOID DIVISION BY ZERO IF (X74.EQ.0) THEN X74 = 1 ENDIF RR X66 ?THETA, START ANGLE ? RR X69 ?THETA, END ANGLE (+VE) ? RR X75 ?THETA, SEARCH STEP SIZE (+VE) ? ; AVOID DIVISION BY ZERO IF (X75.EQ.0) THEN X75 = 1 ENDIF RR X67 ?PSI, START ANGLE ? RR X73 ?PSI, END ANGLE (+VE) ? RR X76 ?PSI, SEARCH STEP SIZE (+VE) ? ; AVOID DIVISION BY ZERO IF (X76.EQ.0) THEN X76 = 1 ENDIF ; # OF PEAKS TO BE SEARCHED, NORMALLY # OF PARTICLES EXPECTED PLUS 3 (THREE) RR X95 ?NO. OF OCCURENCE OF REFERENCES ? X95 = X95 + 3 GOTO LB7 ; DELETES THE DOCUMENT FILES IF THEY EXIST IQ FI X15 <3> IF (X15.EQ.1) THEN DE <3> ENDIF IQ FI X15 <4> IF (X15.EQ.1) THEN DE <4> ENDIF IQ FI X15 <5> IF (X15.EQ.1) THEN DE <5> ENDIF IQ FI X15 <6> IF (X15.EQ.1) THEN DE <6> ENDIF IQ FI X15 <7> IF (X15.EQ.1) THEN DE <7> ENDIF IQ FI X15 <8> IF (X15.EQ.1) THEN DE <8> ENDIF IQ FI X15 <9> IF (X15.EQ.1) THEN DE <9> ENDIF LB7 ; SCALE PIXEL INTENSITY OF THE REFERENCE VOLUME AS PER THE LARGE VOLUME ; FIND STATISTICS OF LARGE VOLUME FS <1> FI X39,X49 <1> 8,7 ; FIND STATISTICS OF REFERENCE VOLUME FS <2> FI X59,X89 <2> 8,7 AR <2> <10> ((P1-X59)*(X49-X39)/(X89-X59))+X39 ; FIND NSAM, NROW AND NSLICE OF LARGE AND REFERENCE VOLUMES FI X20,X21,X22 <1> 12,2,1 FI X23,X24,X25 <10> 12,2,1 X26 = X20-X23+1 X27 = X21-X24+1 X28 = X22-X25+1 X33 = INT(X23/2)+1 X34 = INT(X24/2)+1 X35 = INT(X25/2)+1 ; FIND THE MINIMUM OF NSAM, NROW AND NSLICE OF SMALL VOLUME IF (X23.LT.X24) THEN X29 = X23 ELSE X29 = X24 ENDIF IF (X25.LT.X29) X29 = X25 ; IF DENO_1.DATAEXTENSION FILE EXISTS IN THE DIRECTORY THEN DENNOMINATOR #1 ; HAS BEEN CALCULATED. IF THE LARGE VOLUME AND THE REFERENCE VOLUME ARE THE SAME ; THEN DENO_1.DATAEXTENSION IS SAME FOR ALL EULER ANGLES TO BE SEARCHED. ; ONE DOESN'T NEED TO CALCULATE DENOMINATOR #1 ONE MORE TIME(IT SAVES A LOT OF TIME). ; IN THIS CASE IT IS ASSUMED THAT ONLY A DIFFERENT SET OF EULER ANGLES ARE DESIRED TO ; TO BE SEARCHED. IQ FI X15 DENO_1 IF (X15.EQ.1) THEN RR X99 ?ENTER '1' FOR ANGLE SEARCH ONLY, ENTER '0' FOR FULL COMPUTATION ? ENDIF IF (X99.EQ.1) THEN GOTO LB9 ENDIF ; CREATE AN EMPTY VOLUME OF SIZE SAME AS THE SEARCHED VOLUME TO ; SAVE THE DENOMINATOR #1 WHICH IS SAME FOR ALL EULERIAN ANGLES ; THIS VOLUME SHOULD HAVE DIMENSION = LARGE VOLUME DIMENSION - SMALL ; VOLUME DIMENSION MO 3 DENO_1 X26,X27 X28 B (0) ; FIND AND SAVE DENOMINATOR # 1 DO LB3 X42 =1,X28 DO LB2 X41 = 1,X27 DO LB1 X40 = 1,X26 ; WINDOW A SMALL VOLUME (SAME SIZE AS REFERENCE VOLUME FROM THE ; LARGE VOLUME AND FIND THE DENOMINATOR #1 . REPEAT IT THROUGH ; OUT THE LARGE VOLUME WI <1> _1 X23,X24 X25 X40,X41 X42 ; MASK PIXELS OUTSIDE THE RADIUS TO ZERO MA _1 _2 X29/2,0 D E (0) X33,X34 X35 ; FIND STATISTICS AND GET AVERAGE AND DO VOLUME CORRECTIONS FS _2 FI X50 _2 (9) X51 = 3.1415927 X52 = (X50 * X23 * X24 * X25) X53 = (X52 * 3)/(4*X51* (X29/2)*(X29/2)*(X29/2)) ; MAKE AVERAGE INSIDE AND OUTSIDE THE SPHERE ZERO AR _2 _3 (P1-X53) MA _3 _4 X29/2,0 D E (0) X33,X34 X35 FS _4 FI X54, X55 _4 (9,10) X60 = (X42-1)*X27*X26 X61 = (X41-1)*X26 X62 = X60+X61+X40 ; SAVE AVERAGE AND STANDARD DEVIATION ; SD X62, X54, X55 ; <3> ; FIND DENOMINATOR #1 AND SAVE THE VALUE AR _4 _5 P1*(P1+0) FS _5 FI X63 _5 (9) X64 = SQRT(X63*(X23*X24*X25)) ; SD X62, X64 ; <4> PP DENO_1 X40,X41,X42, X64 (0,0,0,0) LB1 LB2 LB3 LB9 ;GOTO LB8 ; EULER ANGLE SEARCH IS DONE HERE X77 = ((X68-X65)/X74)+1 X78 = ((X69-X66)/X75)+1 X79 = ((X73-X67)/X76)+1 DO LB4 X72 = 1, X79 DO LB5 X71 = 1, X78 DO LB6 X70 = 1, X77 X56 = X65+(X70-1)*X74 X57 = X66+(X71-1)*X75 X58 = X67+(X72-1)*X76 ; ROTATE THE REFERENCE RT 3D <10> _2 X56,X57,X58 ; MASK THE PIXEL VALUES OUTSIDE THE SPHERE TO ZERO MA _2 _6 X29/2,0 D E (0) X33,X34 X35 ; FIND STATISTICS AND MAKE VOLUME CORRECTIONS FS _6 FI X80 _6 (9) X81 = 3.1415927 X82 = (X80 * X23 * X24 * X25) X83 = (X82 * 3)/(4*X81* (X29/2)*(X29/2)*(X29/2)) AR _6 _7 (P1-X83) ; MASK AGAIN TO MAKE VALUES OUTSIDE THE SPHERE TO ZERO ; THIS WAY THE AVG OUTSIDE THE SPHERE IS ZERO AND AVERAGE ; INSIDE THE SPHERE IS ZERO MA _7 _8 X29/2,0 D E (0) X33,X34 X35 ; FIND STATISTICS AND SAVE AVERAGE AND STANDARD DEVIATION FS _8 FI X84, X85 _8 (9,10) X90 = (X72-1)*X77*X78 + (X71-1)*X77 + X70 ; SD X90, X84, X85 ; <5> ; FIND DENOMINATOR # 2 AR _8 _9 P1*(P1+0) FS _9 FI X93 _9 (9) X94 = SQRT(X93*(X23*X24*X25)) ; SD X90, X94 ; <6> ; CREATE AN EMPTY VOLUME OF DIMENSION = LARGE VOLUME DIMENSION ; AND PASTE THE REFERNCE VOLUME AT THE MIDDLE OF THIS EMPTY VOLUME MO 3 _1 X20,X21 X22 B (0) X36 = INT((X20-X23)/2)+1 X37 = INT((X21-X24)/2)+1 X38 = INT((X22-X25)/2)+1 IN _8 _1 X36,X37,X38 ; FIND CROSS CORRELATION FUNCTION OF THE ABOVE VOLUME WITH ; WITH THE LARGE VOLUME CC <1> _1 _2 ; WINDOW THE CC FILE TO SAME SIZE AS LARGE VOLUME DIMENSION ; MINUS THE REFERENCE VOLUME DIMENSION WI _2 _3 X26,X27 X28 X33,X34 X35 ; DIVIDE THE CC FUNCTION WITH DENOMINATOR # 2 (WHICH DEPENDS ; ON THE EULERIAN ANGLE) AR _3 _4 P1/(X94) ; DIVIDE THE ABOVE RESULT WITH CORRESPONDING ELEMENT OF ; THE DENOMINATOR #1 AR DENO_1 _5 1/P1 MU _4 _5 _6 * ; DO PEAK SEARCH PK 3D _6 + (X95,0) N N <7> ; WRITE EULER ANGLES AND XYZ POSITIONS AND PEAK HEIGHT VALUE TO FILE <8> DO LB10 X96 = 1,X95 UD S,X96,X11,X12,X13,X14,X16,X17,X18,X19 <7> X97 = ((X90 - 1)*X95 + X96) ; CORRECT FOR THE CENTER OF THE PEAK WITH RESPECT TO LARGE VOLUME. ; THE PEAK HEIGHT DETERMINED IN PEAK SEARCH STEP IS WITH RESPECT TO THE ; VOLUME CREATED BY SUBSTRACTING THE DIMENSION OF REFERENCE VOLUME ; FROM THE LARGE VOLUME. FACTOR OF NSAM/2+1, NROW/2+1 AND NSLICE/2+1 ; ARE ADDDED X30 = X11+INT(X20/2)+1 X31 = X12+INT(X21/2)+1 X32 = X13+INT(X22/2)+1 SD X97,X56,X57,X58,X30,X31,X32,X18 <8> LB10 UD E DE <7> LB6 LB5 LB4 ;LB8 ; SORT THE DOCUMENT AS PER PEAK HEIGHT DOC SORT <8> <9> 7 Y ; INSERT COMMENTS SD / PHI THETA PSI X Y Z =>PEAK HT <9> SD E <9> DE <8> DE <10> EN