C PROTEIN DATA BANK SOURCE CODE DGPLOT DGPLOT21 C AUTHOR. E.SWANSON,F.BERNSTEIN DGPLOT22 C ENTRY DATE. 10/78 SUPPORTED DGPLOT23 C LAST REVISION. 1/83 DGPLOT31 C PURPOSE. DIAGONAL PLOTS ON PRINTER DGPLOT25 C LANGUAGE. FORTRAN IV DGPLOT26 C DGPLOT27 C DGPLOT28 C DGPLOT29 C DGPLOT10 PROGRAM DGPLOT(INPUT,OUTPUT,TAPE1,TAPE2,TAPE5=INPUT,TAPE6=OUTPUT) DGPLOT 3 C DGPLOT 4 C THIS PROGRAM WAS WRITTEN UNDER NATIONAL INSTITUTES OF DGPLOT 5 C HEALTH GRANT GM-13401 BY DGPLOT 6 C DGPLOT 7 C ERIC SWANSON DGPLOT 8 C DEPARTMENT OF BIOCHEMISTRY DGPLOT 9 C UNIVERSITY OF WASHINGTON DGPLOT10 C SEATTLE, WASHINGTON 98195 USA DGPLOT11 C DGPLOT12 C IT WAS REWRITTEN IN ITS PRESENT FORM BY DGPLOT13 C DGPLOT14 C FRANCES C. BERNSTEIN DGPLOT15 C PROTEIN DATA BANK DGPLOT16 C CHEMISTRY DEPARTMENT DGPLOT17 C BROOKHAVEN NATIONAL LABORATORY DGPLOT18 C UPTON, NEW YORK 11973 USA DGPLOT19 C DGPLOT20 C THE PROTEIN DATA BANK IS FUNDED BY THE NATIONAL SCIENCE DGPLOT21 C FOUNDATION UNDER GRANT PCM 77-16811. DGPLOT22 C DGPLOT23 C PLEASE NOTIFY THE PROTEIN DATA BANK OF ANY PROBLEMS IN USING THIS DGPLOT24 C PROGRAM. DGPLOT25 C DGPLOT26 C DGPLOT27 C A. PURPOSE DGPLOT28 C DGPLOT29 C TO PRODUCE PRINTED DIAGONAL PLOTS. PROGRAM DGPLOT WILL READ DGPLOT30 C PROTEIN DATA BANK ENTRIES AND PRODUCE DIAGONAL PLOTS ON THE DGPLOT31 C SYSTEM OUTPUT FILE. DGPLOT32 C DGPLOT33 C DGPLOT34 C B. INPUT/OUTPUT FILES DGPLOT35 C DGPLOT36 C SYMBOLIC LOGICAL DESCRIPTION DGPLOT37 C DESIGNATION UNIT DGPLOT38 C DGPLOT39 C INP TAPE5 SYSTEM INPUT FILE DGPLOT40 C IOUT TAPE6 SYSTEM OUTPUT FILE TO BE PRINTED DGPLOT41 C IDATA TAPE1 PROTEIN DATA BANK ENTRIES TO BE PROCESSED DGPLOT42 C ITEMP TAPE2 SCRATCH FILE IF ENCODE/DECODE CANNOT BE DGPLOT43 C USED DGPLOT44 C DGPLOT45 C DGPLOT46 C C. INPUT PARAMETERS DGPLOT47 C DGPLOT48 C DGPLOT READS ONE INPUT PARAMETER RECORD FROM THE INPUT FILE (INP).DGPLOT49 C THIS IS FOLLOWED BY ONE TITLE RECORD FOR EACH PROTEIN DATA BANK DGPLOT50 C ENTRY TO BE PROCESSED. DGPLOT51 C DGPLOT52 C INPUT PARAMETER RECORD FORMAT(A4,1X,I5) DGPLOT53 C DGPLOT54 C COLS. 1-4. IDX. NAME OF ATOMS TO BE USED FOR THE DISTANCE DGPLOT55 C CALCULATION. IF BLANK, THIS IS ASSUMED TO DGPLOT56 C BE * CA * (DENOTING ALPHA CARBON). THE DGPLOT57 C PROGRAM WILL CALCULATE DISTANCES BETWEEN DGPLOT58 C PAIRS OF RESIDUES FOR THE PARTICULAR ATOM DGPLOT59 C DEFINED BY THIS FOUR-CHARACTER STRING. DGPLOT60 C DGPLOT61 C COLS. 6-10. LIMIT. MAXIMUM DISTANCE (IN ANGSTROMS) TO BE DGPLOT62 C REPRESENTED ON THE PRINTED DIAGONAL PLOT. DGPLOT63 C IF BLANK, LIMIT IS ASSUMED TO BE 16 ANGSTROMS.DGPLOT64 C AT PRESENT, PROGRAM DGPLOT CAN REPRESENT DGPLOT65 C DISTANCES UP TO 36 ANGSTROMS (SEE BELOW). DGPLOT66 C DGPLOT67 C TITLE RECORDS ARE REPRODUCED ON THE SYSTEM OUTPUT FILE. THESE DGPLOT68 C RECORDS MAY BE BLANK. DGPLOT69 C DGPLOT70 C THE PROGRAM WILL STOP WHEN THERE ARE NO MORE TITLE CARDS ON DGPLOT71 C FILE INP OR WHEN THERE ARE NO MORE PROTEIN DATA BANK ENTRIES ON DGPLOT72 C FILE IDATA. DGPLOT73 C DGPLOT74 C DGPLOT75 C D. OUTPUT DGPLOT76 C DGPLOT77 C ALL OUTPUT IS PRODUCED ON THE SYSTEM OUTPUT FILE TO BE PRINTED. DGPLOT78 C BECAUSE THE PLOT IS PRODUCED ON THE LINE PRINTER IT IS LIMITED TO DGPLOT79 C 110 POINTS IN THE HORIZONTAL DIRECTION. IF THERE ARE MORE THAN DGPLOT80 C THAT NUMBER OF POINTS (RESIDUES), THE PLOT WILL BE PRODUCED IN DGPLOT81 C VERTICAL STRIPS WHICH CAN BE PASTED TOGETHER. DGPLOT82 C DGPLOT83 C IF THE PRINTER CANNOT ACCOMODATE LINES OF 125 CHARACTERS DGPLOT84 C (INCLUDING CARRIAGE CONTROL) THE PROGRAM WILL NEED TO BE MODIFIED.DGPLOT85 C DGPLOT86 C EACH TER RECORD PRODUCES A ROW AND COLUMN OF + CHARACTERS IN THE DGPLOT87 C APPROPRIATE PLACE. DGPLOT88 C DGPLOT89 C FOR DISTANCES LESS THAN 10 ANGSTROMS THE ACTUAL DISTANCE IS DGPLOT90 C PRINTED. FOR LARGER DISTANCES THE LETTERS OF THE ALPHABET ARE DGPLOT91 C USED STARTING WITH A=10, B=11, ETC. THIS IMPOSES AN ABSOLUTE DGPLOT92 C LIMIT OF 36 ANGSTROMS ON THE MAXIMUM DISTANCE THAT CAN BE PRINTED DGPLOT93 C IRRESPECTIVE OF THE DISTANCE THAT WAS SPECIFIED ON THE INPUT DGPLOT94 C PARAMETER RECORD. ALL THESE DISTANCES ARE ROUNDED. DGPLOT95 C DGPLOT96 C DGPLOT97 C E. MACHINE DEPENDENCIES DGPLOT98 C DGPLOT99 C DATE AND TIME ARE CDC ROUTINES TO RETURN 10 CHARACTERS IN ONE WORDDGPLO100 C WHICH CAN THEN BE PRINTED. DGPLO101 C DGPLO102 C THIS PROGRAM MUST HANDLE CHARACTERS STORED IN WORDS. AN DGPLO103 C ATTEMPT WAS MADE TO HAVE A LIMIT OF FOUR CHARACTERS PER WORD. DGPLO104 C TYPICALLY A RECORD IS READ IN 20A4 FORMAT AND IDENTIFIED. IT IS DGPLO105 C SUBSEQUENTLY ENCODED INTO A LINE OF 8A10 FORMAT THAT CAN IN TURN DGPLO106 C BE DECODED USING THE APPROPRIATE FORMAT. THE ARRAY *LINE* IS DGPLO107 C ALWAYS USED FOR THIS PURPOSE. FOR COMPUTERS WITH ENCODE/DECODE DGPLO108 C CAPABILITIES ONLY THE DIMENSION OF *LINE* AND A FORMAT STATEMENT DGPLO109 C NEED BE CHANGED. FOR A COMPUTER WITHOUT ENCODE/DECODE IT IS DGPLO110 C NECESSARY TO REMOVE THE USE OF THIS FEATURE. IN THAT CASE DGPLO111 C THE RECORD CAN BE WRITTEN ON A SCRATCH FILE (ITEMP) AND REREAD. DGPLO112 C THE CODE TO DO THIS HAS BEEN TESTED AND IS ALWAYS PRESENT AS DGPLO113 C COMMENT CARDS ALONG WITH THE ENCODE/DECODE STATEMENTS. DGPLO114 C DGPLO115 C ALL COMPARISONS OF WORDS CONTAINING CHARACTERS ARE DONE USING DGPLO116 C THE ARITHMETIC STATEMENT FUNCTION ICOMP (SEE BELOW). DGPLO117 C DGPLO118 C TO RUN PROGRAM DGPLOT ON A MACHINE WITH LIMITED MEMORY IT MAY BE DGPLO119 C NECESSARY TO CHANGE THE DIMENSIONS OF IRSNAM, IRSNUM, IRSINS, DGPLO120 C IRSCHN, X, Y, Z TO A SMALLER NUMBER AND REDEFINE LIMAT TO TAKE ON DGPLO121 C THAT SAME VALUE. LIMAT DEFINES THE MAXIMUM NUMBER OF RESIDUES DGPLO122 C THAT CAN BE HANDLED BY THE PROGRAM. DGPLO123 C DGPLO124 C THE FOLLOWING VARIABLES IN THIS PROGRAM ARE USED TO STORE DGPLO125 C CHARACTERS AT 4 PER WORD DGPLO126 C DGPLO127 C IALT, IBLANK, ICA, ICHAR, ID, IDX, IFMT, IHVTER, IPLUS, DGPLO128 C IROW, IRSCHN, IRSINS, IRSNAM, ITITLE DGPLO129 C DGPLO130 C THE FOLLOWING VARIABLES IN THIS PROGRAM ARE USED TO STORE DGPLO131 C CHARACTERS AT 10 PER WORD DGPLO132 C DGPLO133 C IDAT, ITIM DGPLO134 C DGPLO135 C DGPLO136 C CORRECTION. FIX CODE GIVEN IN COMMENT RECORDS. 12-MAR-79. DGPLOT11 C DGPLOT12 C DGPLOT11 C CORRECTION. INSERT COMMENT CARDS AT BEGINNING FOR USE BY DGPLOT12 C DIRECTORY PROGRAM. 20-SEP-79. DGPLOT13 C DGPLOT32 C CORRECTION. INCREASE DIMENSIONS TO ALLOW FOR LARGER STRUCTURES. DGPLOT33 C CORRECT HANDLING OF OVERLY LARGE STRUCTURE. DO NOT USE DGPLOT34 C VARIABLE ITEMP FOR TWO DIFFERENT PURPOSES. WRITE END-OF-FILE DGPLOT35 C BETWEEN PLOTS. 06-JAN-83. DGPLOT36 DIMENSION IROW(110) DGPLO137 DIMENSION ITITLE(20) DGPLO138 DIMENSION ICHAR(36) DGPLO139 DIMENSION IFMT(20) DGPLO140 COMMON /FILES/ INP,IOUT,IDATA,ITEMP DGPLO141 DIMENSION IRSNAM(2000),IRSNUM(2000),IRSINS(2000),IRSCHN(2000) DGPLOT37 DIMENSION X(2000),Y(2000),Z(2000) DGPLOT38 DATA LIMAT/2000/ DGPLOT39 DATA ICHAR/1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9,1HA,1HB,1HC,1HDDGPLO145 1,1HE,1HF,1HG,1HH,1HI,1HJ,1HK,1HL,1HM,1HN,1HO,1HP,1HQ,1HR,1HS,1HT,1DGPLO146 2HU,1HV,1HW,1HX,1HY,1HZ/ DGPLO147 DATA INP/5/,IOUT/6/,IDATA/1/,ITEMP/2/ DGPLO148 DATA IBLANK/1H / DGPLO149 DATA IPLUS/1H+/ DGPLO150 DATA ICA/4H CA / DGPLO151 DATA IHVTER/3HTER/ DGPLO152 C DGPLO153 C JCODE = 0 FOR GOOD ATOM DGPLO154 C = 1 FOR TER CODE DGPLO155 C = 2 FOR END CODE DGPLO156 C = 3 FOR END-OF-FILE SENSED DGPLO157 C DGPLO158 DATA JCODE/0/ DGPLO159 C DGPLO160 C THIS DATA STATEMENT DEFINES THE FORMAT USED TO READ THE ATOM AND DGPLO161 C HETATM RECORDS FROM A PROTEIN DATA BANK ENTRY. FOR OTHER FORMATS DGPLO162 C IT WOULD HAVE TO BE CHANGED. DGPLO163 C DGPLO164 DATA IFMT/4H(7X,,4HI4, ,4H1X, ,4HA4, ,4HA1, ,4HA3, ,4H1X, ,4HA1, ,DGPLO165 14HI4 ,4H,A1,,4H3X, ,4H3F8.,4H3) ,7*0/ DGPLO166 C DGPLO167 C ICOMP IS AN ARITHMETIC STATEMENT FUNCTION USED TO COMPARE TWO DGPLO168 C WORDS. THE RESULT IS ZERO FOR EQUALITY AND NON-ZERO OTHERWISE. DGPLO169 C ALL COMPARISONS INVOLVING CHARACTERS ARE DONE VIA ICOMP. THIS DGPLO170 C FUNCTION MAY HAVE TO BE CHANGED FOR OTHER THAN CDC COMPUTERS. DGPLO171 C DGPLO172 ICOMP(I,J)=I-J DGPLO173 READ (INP,250) IDX,LIMIT DGPLO174 IF (LIMIT.LE.0) LIMIT=16 DGPLO175 IF (LIMIT.GT.36) LIMIT=36 DGPLO176 IF (ICOMP(IDX,IBLANK).EQ.0) IDX=ICA DGPLO177 10 CONTINUE DGPLO178 READ (INP,260) ITITLE DGPLO179 C DGPLO180 C THE STATEMENT BELOW WILL TRANSFER CONTROL TO STATEMENT 240 IF AN DGPLO181 C END-OF-FILE WAS ENCOUNTERED ON THE INPUT DEVICE. IF NO END-OF- DGPLO182 C FILE IS SENSED CONTROL IS ASSUMED BY STATEMENT 20. DGPLO183 C DGPLO184 IF (EOF(INP)) 240,20 DGPLO185 20 CONTINUE DGPLO186 WRITE (IOUT,270) DGPLO187 C DGPLO188 C DATE AND TIME ARE CDC ROUTINES TO RETURN 10 CHARACTERS IN ONE DGPLO189 C WORD WHICH CAN THEN BE PRINTED. THIS WILL PROBABLY HAVE TO BE DGPLO190 C CHANGED (OR SIMPLY DELETED) ON OTHER EQUIPMENT. DGPLO191 C DGPLO192 CALL DATE (IDAT) DGPLO193 CALL TIME (ITIM) DGPLO194 WRITE (IOUT,280) ITIM,IDAT DGPLO195 WRITE (IOUT,290) ITITLE DGPLO196 C DGPLO197 C ALL ATOMS ARE STORED IN MEMORY . OTHERWISE THIS PROGRAM WOULD BE DGPLO198 C UNNECESSARILY COMPLICATED AND I/O BOUND. DGPLO199 C DGPLO200 I=0 DGPLO201 NTER=0 DGPLO202 30 I=I+1 DGPLO203 C DGPLO204 C LIMAT IS THE MAXIMUM NUMBER OF RESIDUES ALLOWED. DGPLO205 C DGPLO206 IF (I.LE.LIMAT) GO TO 50 DGPLO207 WRITE (IOUT,300) LIMAT DGPLO208 C DGPLO209 C HAVE STORED MAXIMUM NUMBER OF ATOMS POSSIBLE. THROW AWAY ANY DGPLO210 C EXTRAS AND MAKE SURE THAT FILE IDATA IS PROPERLY POSITIONED TO BE DGPLO211 C ABLE TO PROCESS MORE THAN ONE PROTEIN DATA BANK ENTRY. DGPLO212 C DGPLO213 40 CALL NXTLIN(JUNK,JUNK,JUNK,JUNK,JUNK,JUNK,JUNK,JUNK,JUNK,JUNK, DGPLOT10 1IFMT,JCODE) DGPLOT11 IF (JCODE.EQ.0) GO TO 40 DGPLO216 IF (JCODE.EQ.1) GO TO 40 DGPLO217 GO TO 80 DGPLO218 50 CONTINUE DGPLO219 C DGPLO220 C KEEP READING ATOMS AND SAVING THE SPECIFIED ONES DGPLO221 C DGPLO222 JCODSV=JCODE DGPLO223 CALL NXTLIN (JUNK,ID,IALT,IRSNAM(I),IRSCHN(I),IRSNUM(I),IRSINS(I),DGPLO224 1X(I),Y(I),Z(I),IFMT,JCODE) DGPLO225 C DGPLO226 C IF DOUBLE END-OF-FILE SENSED ON FILE IDATA IT IS TIME TO STOP. DGPLO227 C DGPLO228 IF ((JCODE.EQ.3).AND.(JCODSV.EQ.3)) GO TO 240 DGPLO229 IF (JCODE.EQ.0) GO TO 60 DGPLO230 IF (JCODE.EQ.1) GO TO 70 DGPLO231 IF (JCODSV.EQ.0) GO TO 80 DGPLO232 IF (JCODSV.EQ.1) GO TO 80 DGPLO233 GO TO 50 DGPLO234 60 IF (ID.EQ.IDX) GO TO 30 DGPLO235 GO TO 50 DGPLO236 70 IRSNAM(I)=IHVTER DGPLO237 NTER=NTER+1 DGPLO238 GO TO 30 DGPLO239 80 NP=I-1 DGPLO240 NAT=NP-NTER DGPLO241 WRITE (IOUT,310) NAT,IDX,NTER DGPLO242 IF (NAT.NE.0) GO TO 90 DGPLO243 WRITE (IOUT,320) DGPLO244 ENDFILE IOUT DGPLOT12 GO TO 10 DGPLO245 90 WRITE (IOUT,330) DGPLO246 C DGPLO247 C DETERMINE THE NUMBER OF VERTICAL STRIPS REQUIRED. DGPLO248 C DGPLO249 NBLK=(NP-1)/110+1 DGPLO250 DO 230 JBLK=1,NBLK DGPLO251 C DGPLO252 C PLOT VERTICAL STRIP OF NEXT 110 ATOMS DGPLO253 C DGPLO254 JLIMLO=110*(JBLK-1)+1 DGPLO255 JLIMUP=JLIMLO+109 DGPLO256 IF (JLIMUP.LE.NP) GO TO 100 DGPLO257 JLIMUP=NP DGPLO258 100 CONTINUE DGPLO259 C DGPLO260 C CHAIN INDICATOR DGPLO261 C DGPLO262 WRITE (IOUT,340) (IRSCHN(I),I=JLIMLO,JLIMUP) DGPLO263 WRITE (IOUT,350) DGPLO264 DO 110 I=1,110 DGPLO265 110 IROW(I)=IBLANK DGPLO266 C DGPLO267 C NUMBER THE COLUMNS. DGPLO268 C DGPLO269 C THOUSANDS DIGIT DGPLO270 C DGPLO271 DO 120 I=JLIMLO,JLIMUP DGPLO272 IJ=I-JLIMLO+1 DGPLO273 ITEM=IRSNUM(I)/1000+1 DGPLOT13 IF (ITEM.EQ.1) GO TO 120 DGPLOT14 IROW(IJ)=ICHAR(ITEM) DGPLOT15 120 CONTINUE DGPLO277 WRITE (IOUT,350) IROW DGPLO278 C DGPLO279 C HUNDREDS DIGIT DGPLO280 C DGPLO281 DO 130 I=JLIMLO,JLIMUP DGPLO282 IJ=I-JLIMLO+1 DGPLO283 KX=IRSNUM(I)/100 DGPLO284 ITEM=MOD(KX,10)+1 DGPLOT16 IF ((ITEM.EQ.1).AND.(ICOMP(IROW(IJ),IBLANK).EQ.0)) GO TO 130 DGPLOT17 IROW(IJ)=ICHAR(ITEM) DGPLOT18 130 CONTINUE DGPLO288 WRITE (IOUT,350) IROW DGPLO289 C DGPLO290 C TENS DIGIT DGPLO291 C DGPLO292 DO 140 I=JLIMLO,JLIMUP DGPLO293 IJ=I-JLIMLO+1 DGPLO294 KX=IRSNUM(I)/10 DGPLO295 ITEM=MOD(KX,10)+1 DGPLOT19 IF ((ITEM.EQ.1).AND.(ICOMP(IROW(IJ),IBLANK).EQ.0)) GO TO 140 DGPLOT20 IROW(IJ)=ICHAR(ITEM) DGPLOT21 140 CONTINUE DGPLO299 WRITE (IOUT,350) IROW DGPLO300 C DGPLO301 C ONES DIGIT DGPLO302 C DGPLO303 DO 150 I=JLIMLO,JLIMUP DGPLO304 IJ=I-JLIMLO+1 DGPLO305 ITEM=MOD(IRSNUM(I),10)+1 DGPLOT22 IF ((ITEM.EQ.1).AND.(ICOMP(IROW(IJ),IBLANK).EQ.0)) GO TO 150 DGPLOT23 IROW(IJ)=ICHAR(ITEM) DGPLOT24 150 CONTINUE DGPLO309 WRITE (IOUT,350) IROW DGPLO310 C DGPLO311 C INSERTION CODE DGPLO312 C DGPLO313 WRITE (IOUT,350) (IRSINS(I),I=JLIMLO,JLIMUP) DGPLO314 WRITE (IOUT,350) DGPLO315 DO 220 I=1,JLIMUP DGPLO316 C DGPLO317 C COMPUTE DISTANCES AND PRINT APPROPRIATE CHARACTERS DGPLO318 C DGPLO319 DO 160 L=1,110 DGPLO320 160 IROW(L)=IBLANK DGPLO321 LOWLIM=JLIMLO DGPLO322 IF (LOWLIM.LT.I) LOWLIM=I DGPLO323 IF (ICOMP(IRSNAM(I),IHVTER).NE.0) GO TO 180 DGPLO324 DO 170 L=LOWLIM,JLIMUP DGPLO325 LL=L-JLIMLO+1 DGPLO326 170 IROW(LL)=IPLUS DGPLO327 GO TO 210 DGPLO328 180 DO 200 J=LOWLIM,JLIMUP DGPLO329 DIST=SQRT((X(I)-X(J))**2+(Y(I)-Y(J))**2+(Z(I)-Z(J))**2) DGPLO330 IND=IFIX(DIST+.5)+1 DGPLO331 INDEX=J-JLIMLO+1 DGPLO332 IF (IND.GT.10000) GO TO 190 DGPLO333 IF (IND.GT.LIMIT) GO TO 200 DGPLO334 IROW(INDEX)=ICHAR(IND) DGPLO335 GO TO 200 DGPLO336 190 IROW(INDEX)=IPLUS DGPLO337 200 CONTINUE DGPLO338 210 WRITE (IOUT,360) IRSNAM(I),IRSCHN(I),IRSNUM(I),IRSINS(I),IROW DGPLO339 220 CONTINUE DGPLO340 230 CONTINUE DGPLO341 ENDFILE IOUT DGPLOT25 GO TO 10 DGPLO342 240 CONTINUE DGPLO343 WRITE (IOUT,370) DGPLO344 STOP DGPLO345 C DGPLO346 C DGPLO347 250 FORMAT (A4,1X,I5) DGPLO348 260 FORMAT (20A4) DGPLO349 270 FORMAT (1H1,42HOUTPUT OF PROTEIN DATA BANK PROGRAM DGPLOT) DGPLO350 280 FORMAT (8H0RUN AT ,A10,4H ON ,A10) DGPLO351 290 FORMAT (1H0,20A4) DGPLO352 300 FORMAT (46H0 TOO MANY ACCEPTABLE ATOMS - WILL PLOT FIRST ,I4) DGPLO353 310 FORMAT (1H0,I5,1X,A4,15H ATOMS ACCEPTED/1X,I5,21H TER RECORDS ACCEDGPLO354 1PTED) DGPLO355 320 FORMAT (19H0 NO PLOT GENERATED) DGPLO356 330 FORMAT (49H0 THE DISTANCES PLOTTED ARE MEASURED IN ANGSTROMS/30H DGPLO357 1WHERE A=11, B=12, C=13, ETC.) DGPLO358 340 FORMAT (1H1,14X,110A1) DGPLO359 350 FORMAT (15X,110A1) DGPLO360 360 FORMAT (1X,A3,1X,A1,1X,I4,A1,3X,110A1) DGPLO361 370 FORMAT (1H1,42HEND OF PROTEIN DATA PROGRAM PROGRAM DGPLOT) DGPLO362 END DGPLO363 SUBROUTINE NXTLIN (NATOML,NAML,NALTL,NAMRSL,NCHANL,NUML,INSL,XL,YLDGPLO364 1,ZL,IFMT,JCODE) DGPLO365 C DGPLO366 C THIS ROUTINE WILL PRINT CERTAIN RECORDS ON THE OUTPUT FILE. DGPLO367 C FOR ATOM AND HETATM RECORDS THE NEEDED PARAMETERS ARE RETURNED VIADGPLO368 C THE ARGUMENT LIST. DGPLO369 C DGPLO370 C NATOML IS THE ATOM SERIAL NUMBER DGPLO371 C NAML IS THE ATOM NAME DGPLO372 C NALTL IS THE ALTERNATE POSITION INDICATOR DGPLO373 C NAMRSL IS THE RESIDUE NAME DGPLO374 C NCHANL IS THE CHAIN INDICATOR DGPLO375 C NUML IS THE RESIDUE NUMBER DGPLO376 C INSL IS THE INSERTION CODE DGPLO377 C XL, YL, ZL ARE THE COORDINATES OF THE ATOM DGPLO378 C DGPLO379 C IFMT IS AN ARRAY STORING THE FORMAT USED TO READ ATOM AND HETATM DGPLO380 C RECORDS FROM A PROTEIN DATA BANK ENTRY. IT IS DEFINED IN THE DGPLO381 C MAIN PROGRAM AND USED BELOW. DGPLO382 C DGPLO383 C JCODE = 0 FOR GOOD ATOM DGPLO384 C = 1 FOR TER CODE DGPLO385 C = 2 FOR END CODE DGPLO386 C = 3 FOR END-OF-FILE SENSED DGPLO387 C DGPLO388 C THE FOLLOWING VARIABLES IN THIS ROUTINE ARE USED TO STORE DGPLO389 C CHARACTERS AT 4 PER WORD DGPLO390 C DGPLO391 C IATOM, IAUTH, ICMP, IDATE, IEND, IFMT, IHEAD, IHETA, INSL, DGPLO392 C INTRY, IREC, IREMA, ITER, JRNL, NALTL, NAML, NAMRSL, NCHANL DGPLO393 C DGPLO394 C THE FOLLOWING VARIABLES IN THIS ROUTINE ARE USED TO STORE DGPLO395 C CHARACTERS AT 10 PER WORD DGPLO396 C DGPLO397 C LINE DGPLO398 C DGPLO399 DIMENSION IFMT(20) DGPLO400 DIMENSION IDATE(3) DGPLO401 DIMENSION IREC(20) DGPLO402 DIMENSION LINE(8) DGPLO403 COMMON /FILES/ INP,IOUT,IDATA,ITEMP DGPLO404 DATA IATOM/4HATOM/,IHEAD/4HHEAD/,ICMP/4HCOMP/,ITER/4HTER / DGPLO405 DATA IEND/4HEND /,IAUTH/4HAUTH/,JRNL/4HJRNL/,IHETA/4HHETA/ DGPLO406 DATA IREMA/4HREMA/ DGPLO407 DATA XJUNK/10000./,YJUNK/10000./,ZJUNK/10000./ DGPLO408 ICOMP(I,J)=I-J DGPLO409 JCODE=0 DGPLO410 10 READ (IDATA,90) IREC DGPLO411 C DGPLO412 C THE STATEMENT BELOW WILL TRANSFER CONTROL TO STATEMENT 80 IF AN DGPLO413 C END-OF-FILE WAS ENCOUNTERED ON THE INPUT DEVICE. IF NO END-OF- DGPLO414 C FILE IS SENSED CONTROL IS ASSUMED BY STATEMENT 20. DGPLO415 C DGPLO416 IF (EOF(IDATA)) 80,20 DGPLO417 C DGPLO418 C IDENTIFY TYPE OF RECORD DGPLO419 C DGPLO420 20 IF (ICOMP(IREC(1),IATOM).EQ.0) GO TO 30 DGPLO421 IF (ICOMP(IREC(1),IHETA).EQ.0) GO TO 30 DGPLO422 IF (ICOMP(IREC(1),IREMA).EQ.0) GO TO 10 DGPLO423 IF (ICOMP(IREC(1),IHEAD).EQ.0) GO TO 50 DGPLO424 IF (ICOMP(IREC(1),ICMP).EQ.0) GO TO 60 DGPLO425 IF (ICOMP(IREC(1),ITER).EQ.0) GO TO 70 DGPLO426 IF (ICOMP(IREC(1),IAUTH).EQ.0) GO TO 60 DGPLO427 IF (ICOMP(IREC(1),IEND).EQ.0) GO TO 40 DGPLO428 IF (ICOMP(IREC(1),JRNL).EQ.0) GO TO 60 DGPLO429 GO TO 10 DGPLO430 C DGPLO431 C ATOM OR HETATM RECORD DGPLO432 C DGPLO433 30 CONTINUE DGPLO434 C REWIND ITEMP DGPLO435 C WRITE (ITEMP,90) IREC DGPLOT13 C REWIND ITEMP DGPLO437 C READ(ITEMP,IFMT) NATOML,NAML,NALTL,NAMRSL,NCHANL,NUML,INSL,XL,YL, DGPLO438 C ZL DGPLO439 ENCODE (80,90,LINE(1) )(IREC(I),I=1,20) DGPLO440 DECODE (80,IFMT,LINE(1) )NATOML,NAML,NALTL,NAMRSL,NCHANL,NUML,INSLDGPLO441 1,XL,YL,ZL DGPLO442 RETURN DGPLO443 40 JCODE=2 DGPLO444 RETURN DGPLO445 C DGPLO446 C HEADER RECORD DGPLO447 C DGPLO448 50 CONTINUE DGPLO449 C REWIND ITEMP DGPLO450 C WRITE (ITEMP,90) IREC DGPLOT14 C REWIND ITEMP DGPLO452 C READ (ITEMP,100) IDATE,INTRY DGPLOT15 ENCODE (80,90,LINE(1) )(IREC(I),I=1,20) DGPLO454 DECODE (80,100,LINE(1) )IDATE,INTRY DGPLO455 WRITE (IOUT,110) INTRY,IDATE DGPLO456 GO TO 10 DGPLO457 C DGPLO458 C SHIFT THE *COMPND*, *AUTH* OR *JRNL* INFORMATION IN IREC LEFT BY DGPLO459 C 10 CHARACTERS AND PRINT THE STRING DGPLO460 C DGPLO461 60 CONTINUE DGPLO462 C REWIND ITEMP DGPLO463 C WRITE (ITEMP,90) IREC DGPLOT16 C REWIND ITEMP DGPLO465 C READ (ITEMP,120) (IREC(I),I=1,15) DGPLOT17 ENCODE (80,90,LINE(1) )(IREC(I),I=1,20) DGPLO467 DECODE (80,120,LINE(1) )(IREC(I),I=1,15) DGPLO468 WRITE (IOUT,130) (IREC(I),I=1,15) DGPLO469 GO TO 10 DGPLO470 C DGPLO471 C TER RECORD DGPLO472 C DGPLO473 70 JCODE=1 DGPLO474 C REWIND ITEMP DGPLO475 C WRITE (ITEMP,90) IREC DGPLOT18 C REWIND ITEMP DGPLO477 C READ (ITEMP,140) NAMRSL,NCHANL,NUML,INSL DGPLOT19 ENCODE (80,90,LINE(1) )(IREC(I),I=1,20) DGPLO479 DECODE (80,140,LINE(1) )NAMRSL,NCHANL,NUML,INSL DGPLO480 C DGPLO481 C INSERT DUMMY COORDINATES FOR TER TO FORCE LONG DISTANCES AND DGPLO482 C HENCE SPECIALLY MARKED COLUMNS AND ROWS. DGPLO483 C DGPLO484 XL=XJUNK DGPLO485 YL=YJUNK DGPLO486 ZL=ZJUNK DGPLO487 RETURN DGPLO488 80 JCODE=3 DGPLO489 RETURN DGPLO490 C DGPLO491 C DGPLO492 C DGPLO493 90 FORMAT (20A4) DGPLO494 100 FORMAT (50X,2A4,A2,2X,A4) DGPLO495 110 FORMAT (25H0PROTEIN DATA BANK ENTRY ,A4,9H DATED ,2A4,A2,4H FOR)DGPLO496 120 FORMAT (10X,15A4) DGPLO497 130 FORMAT (1X,15A4) DGPLO498 140 FORMAT (17X,A3,1X,A1,I4,A1) DGPLO499 END DGPLO500