C PROTEIN DATA BANK SOURCE CODE FISIPL FISIPL21 C AUTHOR. F.BERNSTEIN FISIPL22 C ENTRY DATE. 11/78 SUPPORTED FISIPL23 C LAST REVISION. 9/79 FISIPL24 C PURPOSE. PHI/PSI PLOTS ON PRINTER FISIPL25 C LANGUAGE. FORTRAN IV FISIPL26 C FISIPL27 C FISIPL28 C FISIPL29 C FISIPL10 PROGRAM FISIPL(INPUT,OUTPUT,TAPE1,TAPE5=INPUT,TAPE6=OUTPUT) FISIPL 3 C FISIPL 4 C THIS PROGRAM WAS WRITTEN BY FISIPL 5 C FISIPL 6 C FRANCES C. BERNSTEIN FISIPL 7 C PROTEIN DATA BANK FISIPL 8 C CHEMISTRY DEPARTMENT FISIPL 9 C BROOKHAVEN NATIONAL LABORATORY FISIPL10 C UPTON, NEW YORK 11973 USA FISIPL11 C FISIPL12 C THE PROTEIN DATA BANK IS FUNDED BY THE NATIONAL SCIENCE FISIPL13 C FOUNDATION UNDER GRANT PCM 77-16811. FISIPL14 C FISIPL15 C PLEASE NOTIFY THE PROTEIN DATA BANK OF ANY PROBLEMS IN USING THIS FISIPL16 C PROGRAM. FISIPL17 C FISIPL18 C FISIPL19 C A. PURPOSE FISIPL20 C FISIPL21 C FISIPL GENERATES PLOTS ON THE LINE PRINTER OF OCCURRENCES OF FISIPL22 C PAIRS OF PHI-PSI VALUES. (SUCH DIAGRAMS ARE ALSO COMMONLY KNOWN FISIPL23 C AS *RAMACHANDRAN PLOTS*.) THE PROGRAM USES THE MACHINE READABLE FISIPL24 C OUTPUT FILE FROM PROTEIN DATA BANK PROGRAM PHIPSI. FISIPL25 C FISIPL26 C FISIPL27 C B. INPUT/OUTPUT FILES FISIPL28 C FISIPL29 C SYMBOLIC LOGICAL DESCRIPTION FISIPL30 C DESIGNATION UNIT FISIPL31 C FISIPL32 C INP TAPE5 SYSTEM INPUT FILE FISIPL33 C IOUT TAPE6 SYSTEM OUTPUT FILE TO BE PRINTED FISIPL34 C IDATA TAPE1 FILE OF TORSION ANGLES PRODUCED BY PHIPSI FISIPL35 C FISIPL36 C FISIPL37 C C. INPUT PARAMETERS FISIPL38 C FISIPL39 C FOR EACH DATA ENTRY TO BE PROCESSED A HEADER RECORD MUST BE FOUND FISIPL40 C ON THE INPUT FILE. THIS HEADER APPEARS ON THE OUTPUT FILE. FISIPL41 C IF NO MORE HEADER RECORDS ARE FOUND FISIPL WILL STOP EVEN IF THEREFISIPL42 C ARE MORE ENTRIES PRESENT ON TAPE1. FISIPL43 C FISIPL44 C FISIPL45 C D. OUTPUT FISIPL46 C FISIPL47 C ONE PLOT IS PRODUCED FOR EACH FILE READ FROM TAPE1. FISIPL48 C ALL VALUES OF PHI AND PSI ARE ROUNDED TO THE NEAREST 5 DEGREES. FISIPL49 C THE NUMBERS PRINTED IN THE PLOT REPRESENT THE NUMBER OF FISIPL50 C RESIDUES WITH PARTICULAR PAIRS OF PHI AND PSI VALUES. FISIPL51 C NUMBERS OF RESIDUES GREATER THAN 9 ARE REPRESENTED BY +. FISIPL52 C THE HORIZONTAL EDGES ARE IDENTICAL (-180 AND 180) AS ARE THE FISIPL53 C VERTICAL EDGES. FISIPL54 C FISIPL55 C THE ARRAY IPLOT IS USED TO HOLD THE ENTIRE PLOT. IT WOULD BE FISIPL56 C FEASIBLE TO CHANGE THE PROGRAM TO HAVE AN ARRAY WITH 3 DEGREE FISIPL57 C GRADATIONS (DIMENSION 121 BY 121 =14641) ON SOME COMPUTERS AND FISIPL58 C STILL PRINT THE ENTIRE WIDTH OF THE PLOT ON ONE PAGE. FISIPL59 C FOR FINER GRADATIONS IT WOULD BE NECESSARY TO SORT THE INPUT FISIPL60 C DATA, STORING IT EITHER IN MEMORY OR ON A SCRATCH FILE, AND THEN FISIPL61 C GENERATE THE PLOT IN VERTICAL STRIPS. FISIPL62 C FISIPL63 C FISIPL64 C E. MACHINE DEPENDENCIES FISIPL65 C FISIPL66 C DATE AND TIME ARE CDC ROUTINES TO RETURN 10 CHARACTERS IN ONE WORDFISIPL67 C WHICH CAN THEN BE PRINTED. FISIPL68 C FISIPL69 C ALL COMPARISONS OF WORDS CONTAINING CHARACTERS ARE DONE USING FISIPL70 C THE ARITHMETIC STATEMENT FUNCTION ICOMP. SEE BELOW. FISIPL71 C FISIPL72 C THE FOLLOWING VARIABLES IN THIS PROGRAM ARE USED TO STORE FISIPL73 C CHARACTERS AT 4 PER WORD FISIPL74 C FISIPL75 C ICHAIN, ICHAR, IEND, INS, IPLOT, IPLUS, IRES, LINE FISIPL76 C FISIPL77 C THE FOLLOWING VARIABLES IN THIS PROGRAM ARE USED TO STORE FISIPL78 C CHARACTERS AT 10 PER WORD FISIPL79 C FISIPL80 C IDAT, ITIM FISIPL81 C FISIPL82 C FISIPL11 C CORRECTION. FIX LABELLING OF PSI AXIS. 04-MAY-79. FISIPL12 C FISIPL13 C FISIPL14 C FISIPL11 C CORRECTION. INSERT COMMENT CARDS AT BEGINNING FOR USE BY FISIPL12 C DIRECTORY PROGRAM. 20-SEP-79. FISIPL13 DIMENSION IPLOT(73,73) FISIPL83 DIMENSION LINE(20) FISIPL84 DIMENSION ICHAR(10) FISIPL85 DATA IN/5/,IOUT/6/,IDATA/1/ FISIPL86 DATA IEND/3HEND/ FISIPL87 DATA ICHAR/1H ,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9/ FISIPL88 DATA IPLUS/1H+/ FISIPL89 C FISIPL90 C ICOMP IS AN ARITHMETIC STATEMENT FUNCTION USED TO COMPARE TWO FISIPL91 C WORDS. THE RESULT IS ZERO FOR EQUALITY AND NON-ZERO OTHERWISE. FISIPL92 C ALL COMPARISONS INVOLVING CHARACTERS ARE DONE VIA ICOMP. THIS FISIPL93 C FUNCTION MAY HAVE TO BE CHANGED FOR OTHER THAN CDC COMPUTERS. FISIPL94 C FISIPL95 ICOMP(I,J)=I-J FISIPL96 10 CONTINUE FISIPL97 C FISIPL98 C READ HEADER LINE FROM INPUT FILE. STOP IF NO MORE HEADER LINES FISIPL99 C FISIP100 READ (IN,160) (LINE(I),I=1,20) FISIP101 C FISIP102 C THE STATEMENT BELOW WILL TRANSFER CONTROL TO STATEMENT 150 IF AN FISIP103 C END-OF-FILE WAS ENCOUNTERED ON THE INPUT DEVICE. IF NO END-OF- FISIP104 C FILE IS SENSED CONTROL IS ASSUMED BY STATEMENT 20. FISIP105 C FISIP106 IF (EOF(IN)) 150,20 FISIP107 20 CONTINUE FISIP108 WRITE (IOUT,190) FISIP109 C FISIP110 C DATE AND TIME ARE CDC ROUTINES TO RETURN 10 CHARACTERS IN ONE FISIP111 C WORD WHICH CAN THEN BE PRINTED. THIS WILL PROBABLY HAVE TO BE FISIP112 C CHANGED (OR SIMPLY DELETED) ON OTHER EQUIPMENT. FISIP113 C FISIP114 CALL DATE (IDAT) FISIP115 CALL TIME (ITIM) FISIP116 WRITE (IOUT,180) ITIM,IDAT FISIP117 WRITE (IOUT,170) (LINE(I),I=1,20) FISIP118 C FISIP119 C READ THREE HEADER LINES FROM TORSION ANGLE FILE AND PRINT THEM. FISIP120 C FISIP121 READ (IDATA,160) (LINE(I),I=1,20) FISIP122 C FISIP123 C THE STATEMENT BELOW WILL TRANSFER CONTROL TO STATEMENT 150 IF AN FISIP124 C END-OF-FILE WAS ENCOUNTERED ON THE INPUT DEVICE. IF NO END-OF- FISIP125 C FILE IS SENSED CONTROL IS ASSUMED BY STATEMENT 30. FISIP126 C FISIP127 C AN END-OF-FILE OCCURS HERE ONLY IF THERE IS A DOUBLE END-OF-FILE FISIP128 C ON TAPE1 SIGNIFYING THE END OF ALL DATA. FISIP129 C FISIP130 IF (EOF(IDATA)) 150,30 FISIP131 30 CONTINUE FISIP132 WRITE (IOUT,170) (LINE(I),I=1,20) FISIP133 READ (IDATA,160) (LINE(I),I=1,20) FISIP134 WRITE (IOUT,170) (LINE(I),I=1,20) FISIP135 READ (IDATA,160) (LINE(I),I=1,20) FISIP136 WRITE (IOUT,170) (LINE(I),I=1,20) FISIP137 C FISIP138 C INITIALIZE ARRAY OF POINTS TO BE PLOTTED. FISIP139 C INITIALIZE COUNTS OF POINTS. FISIP140 C ONLY ACCEPT POINTS WITH VALUES FROM -179 TO +180. FISIP141 C VALUES THAT COULD NOT BE COMPUTED BY PHIPSI ARE REPRESENTED BY FISIP142 C 999 AND MUST BE REJECTED. FISIP143 C FISIP144 DO 50 I=1,73 FISIP145 DO 40 J=1,73 FISIP146 IPLOT(I,J)=0 FISIP147 40 CONTINUE FISIP148 50 CONTINUE FISIP149 NUMRD=0 FISIP150 NUMPTS=0 FISIP151 60 READ (IDATA,200) IRES,ICHAIN,ISEQ,INS,IPHI,IPSI,IOMEGA FISIP152 IF (ICOMP(IRES,IEND).EQ.0) GO TO 70 FISIP153 NUMRD=NUMRD+1 FISIP154 IF (IPHI.EQ.-180) IPHI=180 FISIP155 IF (IPSI.EQ.-180) IPSI=180 FISIP156 IF (IPHI.LT.-179) GO TO 60 FISIP157 IF (IPSI.LT.-179) GO TO 60 FISIP158 IF (IPHI.GT.180) GO TO 60 FISIP159 IF (IPSI.GT.180) GO TO 60 FISIP160 C FISIP161 C CODE TO REJECT POINTS BASED ON RESIDUE NAME OR OTHER CRITERIA CAN FISIP162 C BE INSERTED HERE. FISIP163 C FISIP164 NUMPTS=NUMPTS+1 FISIP165 C FISIP166 C USING VALUES OF PHI AND PSI COMPUTE SUBSCRIPTS FOR STORING THIS FISIP167 C PAIR OF VALUES. ONE IS ACCUMULATING THE NUMBER OF PHI-PSI PAIRS FISIP168 C IN EACH BOX OF THE GRID. FISIP169 C FISIP170 INDPHI=(IPHI+182)/5+1 FISIP171 INDPSI=73-(IPSI+182)/5 FISIP172 IPLOT(INDPSI,INDPHI)=IPLOT(INDPSI,INDPHI)+1 FISIP173 GO TO 60 FISIP174 70 CONTINUE FISIP175 C FISIP176 C A RECORD WITH END AS THE RESIDUE NAME HAS ALREADY BEEN READ. FISIP177 C THE FOLLOWING READ IS MEANT TO READ THE END-OF-FILE WHICH MUST FISIP178 C NOW BE NEXT ON TAPE1. THE TEST FOR END-OF-FILE CLEARS THE FISIP179 C END-OF-FILE INDICATOR AND ALLOWS LATER READING OF THE NEXT FILE FISIP180 C ON TAPE1. FISIP181 C FISIP182 READ (IDATA,160) FISIP183 IF (EOF(IDATA)) 80,80 FISIP184 80 CONTINUE FISIP185 WRITE (IOUT,220) NUMPTS FISIP186 NUMREJ=NUMRD-NUMPTS FISIP187 WRITE (IOUT,230) NUMREJ FISIP188 C FISIP189 C IF THERE ARE NO ACCEPTABLE POINTS DO NOT PRINT EMPTY PLOT. FISIP190 C FISIP191 IF (NUMPTS.EQ.0) GO TO 10 FISIP192 C FISIP193 C THE FIRST AND LAST VALUES OF EACH ROW/COLUMN MUST BE COMBINED. FISIP194 C BECAUSE OF THE ARTIFICIAL BOUNDARY AT 180 SOME VALUES WERE STORED FISIP195 C AT EACH END. FISIP196 C FISIP197 DO 90 I=1,73 FISIP198 NUM=IPLOT(I,1)+IPLOT(I,73) FISIP199 IPLOT(I,1)=NUM FISIP200 IPLOT(I,73)=NUM FISIP201 90 CONTINUE FISIP202 DO 100 I=1,73 FISIP203 NUM=IPLOT(1,I)+IPLOT(73,I) FISIP204 IPLOT(1,I)=NUM FISIP205 IPLOT(73,I)=NUM FISIP206 100 CONTINUE FISIP207 C FISIP208 C EACH VALUE IN THE ARRAY IPLOT MUST BE CONVERTED TO CHARACTERS. FISIP209 C ALL ZEROES WILL BE PRINTED AS BLANKS AND ALL VALUES GREATER THAN FISIP210 C 9 WILL BE PRINTED AS +. FISIP211 C FISIP212 DO 130 I=1,73 FISIP213 DO 120 J=1,73 FISIP214 IND=IPLOT(I,J)+1 FISIP215 IF (IND.GT.10) GO TO 110 FISIP216 IPLOT(I,J)=ICHAR(IND) FISIP217 GO TO 120 FISIP218 110 IPLOT(I,J)=IPLUS FISIP219 120 CONTINUE FISIP220 130 CONTINUE FISIP221 C FISIP222 C PRINT PLOT ON OUTPUT FILE. FISIP223 C FISIP224 WRITE (IOUT,240) FISIP225 DO 140 I=1,73 FISIP226 IND=185-5*I FISIPL15 WRITE (IOUT,210) IND,(IPLOT(I,J),J=1,73) FISIP228 140 CONTINUE FISIP229 WRITE (IOUT,240) FISIP230 WRITE (IOUT,250) FISIP231 WRITE (IOUT,260) FISIP232 WRITE (IOUT,270) FISIP233 WRITE (IOUT,280) FISIP234 GO TO 10 FISIP235 150 CONTINUE FISIP236 WRITE (IOUT,290) FISIP237 STOP FISIP238 C FISIP239 C FISIP240 160 FORMAT (20A4) FISIP241 170 FORMAT (1H0,20A4) FISIP242 180 FORMAT (8H0RUN AT ,A10,4H ON ,A10) FISIP243 190 FORMAT (43H1OUTPUT OF PROTEIN DATA BANK PROGRAM FISIPL) FISIP244 200 FORMAT (1X,A3,1X,A1,1X,I4,A1,1X,3I5) FISIP245 210 FORMAT (1X,I5,2X,1H.,73A1,1H.) FISIP246 220 FORMAT (43H0NUMBER OF POINTS ACCEPTED FOR PLOTTING IS ,I5) FISIP247 230 FORMAT (43H0NUMBER OF POINTS REJECTED FOR PLOTTING IS ,I5////) FISIP248 240 FORMAT (8X,75H....................................................FISIP249 1.......................) FISIP250 250 FORMAT (1H0,1HP,7X,73H- - - - - - - - - FISIP251 1 + + + + + + + + +) FISIP252 260 FORMAT (1X,1HS,7X,73H1 1 1 1 1 1 1 1 1 - - - - - - - - - + + + +FISIP253 1 + + + + + 1 1 1 1 1 1 1 1 1) FISIP254 270 FORMAT (1X,1HI,7X,73H8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 1 2 3 4FISIP255 1 5 6 7 8 9 0 1 2 3 4 5 6 7 8) FISIP256 280 FORMAT (3X,4HPHI ,2X,73H0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 FISIP257 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) FISIP258 290 FORMAT (40H0END OF PROTEIN DATA BANK PROGRAM FISIPL) FISIP259 END FISIP260