PROGRAM DSSP2PYMOL C---- translates whatif output to pymol commands C---- modified 1/4/2005 to take care of split HST files with peptide breaks C---- IMPLICIT NONE CHARACTER*80 SDUM,PDBFIL CHARACTER*1 H(100000) INTEGER I,HI,ST,EN,MR,S(100000) LOGICAL HON CALL GETARG(1,PDBFIL) OPEN (1,FILE=PDBFIL,STATUS='OLD') MR=0 5 READ (1,1100,END=7,ERR=7) SDUM IF (SDUM(13:16).EQ.' CA ') THEN MR=MR+1 READ (SDUM(23:26),*) S(MR) END IF GOTO 5 7 CONTINUE C WRITE (6,1002) C WRITE (6,1004) C WRITE (6,1002) DO I=1,100000 H(I)=' ' END DO 10 READ (5,*,END=20,ERR=20) READ (5,*,END=20,ERR=20) READ (5,*,END=20,ERR=20) READ (5,1000,END=20,ERR=20) ST,EN,(H(I),I=ST,EN) C WRITE (6,1000) ST,EN,(H(I),I=ST,EN) GOTO 10 20 CONTINUE IF (MR.NE.EN) THEN WRITE (6,*) 'Sorry, your PDB file does NOT contain the same' WRITE (6,*) 'input residues as present in the DSSP file' STOP END IF HON=.FALSE. HI=1 DO I=1,EN IF (HON) THEN IF (H(I).NE.H(I-1)) THEN HON=.FALSE. WRITE (6,*) S(HI),S(I-1),' ',H(I-1) HI=I END IF ELSE IF ((H(I).EQ.'H'.OR.H(I).EQ.'S').AND. + H(I).EQ.H(I+1)) THEN HON=.TRUE. C WRITE (6,*) S(HI),S(I-1),' ','L' HI=I END IF END IF END DO 1000 FORMAT (I5,2X,I4,2X,60A1) 1002 FORMAT ('#') 1004 FORMAT ('# NOTE: you may have to change the chain name from A') 1010 FORMAT ('alter A/',I1,':',I1,'/, ss="',A1,'"') 1020 FORMAT ('alter A/',I2,':',I2,'/, ss="',A1,'"') 1030 FORMAT ('alter A/',I3,':',I3,'/, ss="',A1,'"') 1040 FORMAT ('alter A/',I4,':',I4,'/, ss="',A1,'"') 1100 FORMAT (A80) END C 10 20 30 40 50 60 C | | | | | | C 1 - 60 GYKTCPKVKPDMLNVHLVPHTHDDVGWLKTVDQYFYGIYNNIQPAGVQYILDSVISSLLA C 1 - 60 TT TTT SSSSSS TTTTT HHHHHHT TTT HHHHHHHHHHHHHH C 70 80 90 100 110 120 C | | | | | | C 61 - 120 NPTRRFIYVEIAFFSRWWRQQTNATQKIVRELVRQGRLEFANGGWVMNDEATTHYGAIID C 61 - 120 TT SSS HHHHHHHHHTT HHHHHHHHHHHHTTTSSSTT TTT TTT HHHHHH C 130 140 150 160 170 180 C | | | | | | C 121 - 180 QMTLGLRFLEETFGSDGRPRVAWHIDPFGHSREQASLFAQMGFDGFFFGRLDYQDKKVRK C 121 - 180 HHHHHHHHHHHHH3333 TSSSSTTTTT HHHHHHHHHHT SSSST HHHHHHHH C2345678901234567890123456789012345678901234567890123456789012345678901234567890