' This program will convert a pdb file to a rot file that can be read ' and displayed using "rotator" program. ' by Tomi Sasaki, September, 1994 ' ' Limited to 3000 atoms DIM t$(7000),mt(6000,4),anum$(6000), atom$(6000),aa$(6000),subunit$(6000),rnum$(6000) DIM xres$(6000),yres$(6000),zres$(6000) DIM conect$(600,6) DIM scr%(3),bar%(3),s&,r%(3) DIM top%,max%,linenum%,gap% MENU 1,0,1,"File" MENU 1,1,1,"Open" :cmdKey 1,1,"O" MENU 1,2,1,"Convert" MENU 1,3,0,"Save":cmdKey 1,3,"S" MENU 1,4,1,"Quit" :cmdKey 1,4,"Q" TEXTFONT 4 :TEXTSIZE 9 w%=WINDOW(2):h%=WINDOW(3) SetRect scr%(0),0,-1,w%-15,h% 'scroll area SetRect bar%(0),w%-15,-1,w%,h%+1 'scroll bar NewScroll s&,bar%(0),1,1,1000,1 'create scroll bar gap%=0 'line spacing in pixels ON MENU GOSUB domenu :MENU ON ON DIALOG GOSUB doDialog :DIALOG ON IF f$<>"" AND type$="TEXT" THEN 'Double-clicked: Open file GOSUB openfile top%=0 END IF WHILE 1 ScrollText s&,scr%(0),t$(0),top%,max%,0,0,gap% WEND quit: disposeScroll s& END openfile: CLS changecursor 4 PRINT PRINT "Opening the file. Please wait." PRINT OPEN f$ FOR INPUT AS #1 parse f$,p$ WINDOW 1,f$ max%=0 WHILE NOT EOF(1) AND max%<7000 LINE INPUT #1,t$(max%):max%=max%+1 WEND CLOSE INITCURSOR top%=0 activescroll s& RETURN domenu: menuID=MENU(0) :menuItem=MENU(1) IF menuID=1 THEN SELECT CASE menuItem CASE 1 'Open f$=FILES$(1,"TEXT") IF f$<>"" THEN GOSUB openfile END IF CASE 2 'Convert IF f$="" THEN f$=FILES$(1,"TEXT") :IF f$<>"" THEN GOSUB openfile IF f$<>"" THEN GOSUB ConvertFile END IF CASE 4 :GOTO quit CASE ELSE END SELECT END IF exitDoMenu: MENU RETURN doDialog: ' Only care about refresh events IF DIALOG(0)=5 THEN top%=0 RETURN ConvertFile: PRINT PRINT "Initializing" FOR i%=0 TO max% anum$(i%)="": atom$(i%)="":aa$(i%)="":rnum$(i%)="":subunit$(i%)="" xres$(i%)="":yres$(i%)="":zres$(i%)="" NEXT i% PRINT "Searching for ATOMs" k%=0 FOR i% = 0 TO max% IF LEFT$(t$(i%),4)="ATOM" THEN j%=5: GOSUB findcoord NEXT i% amax%=k%-1 PRINT amax%;: PRINT " ATOMs" PRINT "Searching for HETATMs" FOR i%=0 TO max% IF LEFT$(t$(i%),6)="HETATM" THEN j%=7: GOSUB findcoord NEXT i% hmax%=k%-1 PRINT hmax%-amax%;: PRINT " HETATMs" PRINT "initializing connection parameters" FOR i%=0 TO 600 FOR j%=0 TO 6 conect$(i%, j%)="" NEXT j% NEXT i% PRINT "Reading connectivities" p%=0: q%=0 i%=hmax% conect: IF i%>max% THEN cmax%=p%: GOTO findcenter IF LEFT$(t$(i%),6)="CONECT" THEN j%=7: GOSUB findc i%=i%+1: GOTO conect findc: IF j%>35 THEN p%=p%+1:q%=0: RETURN a$=MID$(t$(i%),j%,1) IF a$=CHR$(32) AND conect$(p%, q%)="" THEN j%=j%+1:GOTO findc ELSE IF a$=CHR$(32) THEN q%=q%+1 : GOTO findc ELSE conect$(p%, q%)=conect$(p%, q%)+a$: j%=j%+1:GOTO findc ' find atom#, aa name, residue # findcoord: findanum: a$=MID$(t$(i%),j%,1) IF a$=CHR$(32) AND anum$(k%)="" THEN j%=j%+1:GOTO findanum ELSE IF a$=CHR$(32) THEN GOTO findatom ELSE anum$(k%)=anum$(k%)+a$:j%=j%+1:GOTO findanum findatom: a$=MID$(t$(i%),j%,1) IF a$=CHR$(32) AND atom$(k%)="" THEN j%=j%+1:GOTO findatom ELSE IF a$=CHR$(32) THEN GOTO findaa ELSE atom$(k%)=atom$(k%)+a$:j%=j%+1:GOTO findatom findaa: a$=MID$(t$(i%),j%,1) IF a$=CHR$(32) AND aa$(k%)="" THEN j%=j%+1:GOTO findaa ELSE IF a$=CHR$(32) THEN :GOTO findmulti ELSE aa$(k%)=aa$(k%)+a$:j%=j%+1:GOTO findaa findmulti: a$=MID$(t$(i%),j%+1,1) IF a$=CHR$(32) THEN GOTO findresidue ELSE GOTO findsubunit findsubunit: a$=MID$(t$(i%),j%,1) IF a$=CHR$(32) AND subunit$(k%)="" THEN j%=j%+1:GOTO findsubunit ELSE IF a$=CHR$(32) THEN :GOTO findresidue ELSE subunit$(k%)=subunit$(k%)+a$:j%=j%+1:GOTO findsubunit findresidue: a$=MID$(t$(i%),j%,1) IF a$=CHR$(32) AND rnum$(k%)="" THEN j%=j%+1:GOTO findresidue ELSE IF a$=CHR$(32) THEN GOTO findx ELSE rnum$(k%)=rnum$(k%)+a$:j%=j%+1:GOTO findresidue findx: a$=MID$(t$(i%),j%,1) IF a$=CHR$(32) AND xres$(k%)="" THEN j%=j%+1:GOTO findx ELSE IF a$=CHR$(32) THEN mt(k%,1)=VAL(xres$(k%)):GOTO findy ELSE xres$(k%)=xres$(k%)+a$:j%=j%+1:GOTO findx findy: a$=MID$(t$(i%),j%,1) IF a$=CHR$(32) AND yres$(k%)="" THEN j%=j%+1:GOTO findy ELSE IF a$=CHR$(32) THEN mt(k%, 2)=VAL(yres$(k%)):GOTO findz ELSE yres$(k%)=yres$(k%)+a$:j%=j%+1:GOTO findy findz: a$=MID$(t$(i%),j%,1) IF a$=CHR$(32) AND zres$(k%)="" THEN j%=j%+1:GOTO findz ELSE IF a$=CHR$(32) THEN mt(k%,3)=VAL(zres$(k%)):GOTO repeat ELSE zres$(k%)=zres$(k%)+a$:j%=j%+1:GOTO findz repeat: k%=k%+1 RETURN findcenter: totalx=0:totaly=0:totalz=0 FOR i%=0 TO hmax% totalx=totalx+mt(i%,1) totaly=totaly+mt(i%,2) totalz=totalz+mt(i%,3) NEXT i% centerx=totalx/(amax%+1) centery=totaly/(amax%+1) centerz=totalz/(amax%+1) FOR i%=0 TO hmax% mt(i%,1)=mt(i%,1)-centerx mt(i%,2)=mt(i%,2)-centery mt(i%,3)=mt(i%,3)-centerz NEXT i% displaymode: INPUT "Main Chain Only(1) or Main Chain+Side Chain(2)"; mc$ IF mc$="1" THEN GOTO inwater IF mc$="2" THEN GOTO inwater GOTO displaymode inwater: INPUT "Include H2O (Y/N)?";wtr$ IF wtr$="Y" OR wtr$="y" THEN GOTO displaymode2 IF wtr$="N" OR wtr$="n" THEN GOTO displaymode2 GOTO inwater displaymode2: IF mc$="1" THEN GOTO mainchain ELSE IF mc$="2" THEN GOTO mainside ELSE GOTO displaymode ' mainchain mainchain: ' color colr%=7 mcolr%=2 hcolr%=5 i%=0 PRINT INPUT "Save AS"; outfile$ PRINT "Converting Your PDB file to ROT file. Please wait..." OPEN outfile$ FOR OUTPUT AS #1 IF aa$(i%)<>"ACE" THEN GOTO aminoAA ELSE GOSUB acetyl i%=3 GOTO aminoAA acetyl: PRINT #1, mt(2,1); mt(2,2); mt(2,3);0 PRINT #1, mt(0,1); mt(0,2); mt(0,3); mcolr% mx=(mt(0,1)+mt(1,1))/2: my=(mt(0,2)+mt(1,2))/2:mz=(mt(0,3)+mt(1,3))/2 PRINT #1, mx; my; mz; mcolr% PRINT #1, mt(1,1); mt(1,2); mt(1,3); 1 PRINT #1, mt(0,1); mt(0,2); mt(0,3); 0 mx=(mt(0,1)+mt(3,1))/2: my=(mt(0,2)+mt(3,2))/2:mz=(mt(0,3)+mt(3,3))/2 PRINT #1, mx; my; mz; mcolr% RETURN acetyl2: PRINT #1, mt(i%+2,1); mt(i%+2,2); mt(i%+2,3);0 PRINT #1, mt(i%,1); mt(i%,2); mt(i%,3); mcolr% mx=(mt(i%,1)+mt(i%+1,1))/2: my=(mt(i%,2)+mt(i%+1,2))/2:mz=(mt(i%,3)+mt(i%+1,3))/2 PRINT #1, mx; my; mz; mcolr% PRINT #1, mt(i%+1,1); mt(i%+1,2); mt(i%+1,3); 1 PRINT #1, mt(i%,1); mt(i%,2); mt(i%,3); 0 mx=(mt(i%,1)+mt(i%+3,1))/2: my=(mt(i%,2)+mt(i%+3,2))/2:mz=(mt(i%,3)+mt(i%+3,3))/2 PRINT #1, mx; my; mz; mcolr% i%=i%+3 RETURN aminoAA: IF i%=0 THEN colr2%=0 ELSE colr2%=3 IF aa$(i%)="ACE" THEN GOSUB acetyl2 PRINT #1, mt(i%,1); mt(i%,2); mt(i%,3); colr2% mx=(mt(i%,1)+mt(i%+1,1))/2: my=(mt(i%,2)+mt(i%+1,2))/2:mz=(mt(i%,3)+mt(i%+1,3))/2 PRINT #1, mx; my; mz; 3 PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); mcolr% PRINT #1, mt(i%+2, 1); mt(i%+2,2); mt(i%+2,3); mcolr% mx=(mt(i%+2,1)+mt(i%+3,1))/2: my=(mt(i%+2,2)+mt(i%+3,2))/2:mz=(mt(i%+2,3)+mt(i%+3,3))/2 PRINT #1, mx; my; mz; mcolr% PRINT #1, mt(i%+3,1); mt(i%+3,2); mt(i%+3,3); 1 PRINT #1, mt(i%+2,1); mt(i%+2,2); mt(i%+2,3); 0 k%=i%+2 i%=i%+4 scan: IF i%>amax% THEN GOSUB hetatms:GOTO closefile ELSEIF atom$(i%)="N" THEN mx=(mt(i%,1)+mt(k%,1))/2: my=(mt(i%,2)+mt(k%,2))/2:mz=(mt(i%,3)+mt(k%,3))/2 IF subunit$(i%)<>subunit$(k%) THEN PRINT #1, mt(i%,1); mt(i%,2); mt(i%,3); 0: GOTO aminoAA PRINT #1, mx; my; mz; mcolr%: GOTO aminoAA ELSE i%=i%+1: GOTO scan END IF hetatms: PRINT PRINT "Working on HETATMs..." IF wtr$="N" OR wtr$="n" THEN GOTO nonwater FOR i%=amax%+1 TO hmax% IF aa$(i%)="HOH" THEN PRINT #1, mt(i%,1); mt(i%,2); mt(i%,3); -hcolr% NEXT i% GOTO hetatms2 nonwater: FOR i%=amax%+1 TO hmax% IF aa$(i%)<>"HOH" THEN PRINT #1, mt(i%,1); mt(i%,2); mt(i%,3); -hcolr% NEXT i% hetatms2: FOR i%=0 TO cmax% FOR j%=0 TO hmax% IF conect$(i%, 0) = anum$(j%) THEN q%=1:k%=0:GOSUB conpoint NEXT j% NEXT i% RETURN conpoint: IF conect$(i%, q%)="" THEN RETURN ELSE IF VAL(anum$(j%))"SG" THEN k%=0:q%=q%+1: GOTO conpoint IF conect$(i%, q%) = anum$(k%) AND atom$(k%)="SG" THEN GOTO diSS2 IF conect$(i%, q%) = anum$(k%) THEN k%=0:q%=q%+1: GOTO conpoint k%=k%+1: GOTO diSS ctermN: IF conect$(i%, q%) = anum$(k%) THEN PRINT #1, mt(k%,1); mt(k%,2); mt(k%,3); hcolr%:k%=0:q%=q%+1: GOTO conpoint k%=k%+1: GOTO ctermN diSS2: PRINT "disulfide at"; rnum$(k%);: PRINT " and "; rnum$(j%) PRINT #1, mt(j%,1); mt(j%,2); mt(j%,3); 0: PRINT #1, mt(k%,1); mt(k%,2); mt(k%,3); 4 IF mc$="2" THEN k%=0:q%=q%+1: GOTO conpoint PRINT #1, mt(j%,1); mt(j%,2); mt(j%,3); 0 PRINT #1, mt(j%-4,1); mt(j%-4,2); mt(j%-4,3); 4 PRINT #1, mt(k%,1); mt(k%,2); mt(k%,3); 0 PRINT #1, mt(k%-4,1); mt(k%-4,2); mt(k%-4,3); 4 k%=0:q%=q%+1: GOTO conpoint ' Main Chain+Side Chain mainside: ' color colr%=7 mcolr%=2 hcolr%=5 i%=0 PRINT INPUT "Save AS"; outfile$ PRINT "Converting Your PDB file to ROT file. Please wait..." OPEN outfile$ FOR OUTPUT AS #1 IF aa$(i%)<>"ACE" THEN GOTO AAside ELSE GOSUB acetyl i%=3 GOTO AAside AAside: IF aa$(i%)="ACE" THEN GOSUB acetyl2 PRINT "residue#"; rnum$(i%);:PRINT " = "; IF i%>=amax% THEN GOSUB hetatms: GOTO closefile IF i%=0 THEN colr2%=0 ELSE colr2%=3 PRINT #1, mt(i%,1); mt(i%,2); mt(i%,3); colr2% mx=(mt(i%,1)+mt(i%+1,1))/2: my=(mt(i%,2)+mt(i%+1,2))/2:mz=(mt(i%,3)+mt(i%+1,3))/2 PRINT #1, mx; my; mz; 3 PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); mcolr% PRINT #1, mt(i%+2, 1); mt(i%+2,2); mt(i%+2,3); mcolr% mx=(mt(i%+2,1)+mt(i%+3,1))/2: my=(mt(i%+2,2)+mt(i%+3,2))/2:mz=(mt(i%+2,3)+mt(i%+3,3))/2 PRINT #1, mx; my; mz; mcolr% PRINT #1, mt(i%+3,1); mt(i%+3,2); mt(i%+3,3); 1 IF aa$(i%)="ALA" THEN GOSUB alanine : GOTO AAside ELSE IF aa$(i%)="GLY" THEN GOSUB glycine : GOTO AAside ELSE IF aa$(i%)="VAL" THEN GOSUB valine : GOTO AAside ELSE IF aa$(i%)="LEU" THEN GOSUB leucine : GOTO AAside ELSE IF aa$(i%)="ILE" THEN GOSUB isoleucine : GOTO AAside ELSE IF aa$(i%)="PHE" THEN GOSUB phenylala : GOTO AAside ELSE IF aa$(i%)="ASN" THEN GOSUB asparagine : GOTO AAside ELSE IF aa$(i%)="GLN" THEN GOSUB glutamine : GOTO AAside ELSE IF aa$(i%)="TRP" THEN GOSUB tryptophan : GOTO AAside ELSE IF aa$(i%)="PRO" THEN GOSUB proline : GOTO AAside ELSE IF aa$(i%)="SER" THEN GOSUB serine : GOTO AAside ELSE IF aa$(i%)="THR" THEN GOSUB threonine : GOTO AAside ELSE IF aa$(i%)="TYR" THEN GOSUB tyrosine : GOTO AAside ELSE IF aa$(i%)="CYS" THEN GOSUB cysteine : GOTO AAside ELSE IF aa$(i%)="MET" THEN GOSUB methionine : GOTO AAside ELSE IF aa$(i%)="ASP" THEN GOSUB aspacid : GOTO AAside ELSE IF aa$(i%)="GLU" THEN GOSUB gluacid : GOTO AAside ELSE IF aa$(i%)="LYS" THEN GOSUB lysine : GOTO AAside ELSE IF aa$(i%)="ARG" THEN GOSUB arginine : GOTO AAside ELSE IF aa$(i%)="HIS" THEN GOSUB histidine : GOTO AAside ELSE PRINT "Unusual amino acids in the sequence!" i%=k%+1 searchN: IF atom$(i%)<>"N" THEN i%=i%+1:GOTO searchN ELSE PRINT #1, mt(k%,1); mt(k%, 2); mt(k%,3); 0 mx=(mt(i%,1)+mt(k%,1))/2: my=(mt(i%,2)+mt(k%,2))/2:mz=(mt(i%,3)+mt(k%,3))/2 PRINT #1, mx; my; mz; mcolr% GOTO AAside ' closing closefile: PRINT "DONE!!" CLOSE #1 ON ERROR GOTO 0 INITCURSOR morecon: INPUT "Do you need another conversion?(Y/N)";ac$ IF ac$="Y" OR ac$="y" THEN GOTO displaymode IF ac$="N" OR ac$="n" THEN END GOTO morecon ' amino acid side chains alanine: PRINT "ALA " IF aa$(i%+4)<>"ALA" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% k%=i%+2: i%=i%+5 GOTO amide glycine: PRINT "GLY " k%=i%+2: i%=i%+4 PRINT #1, mt(k%,1); mt(k%, 2); mt(k%,3); 0 IF subunit$(i%)<>subunit$(k%) THEN RETURN mx=(mt(i%,1)+mt(k%,1))/2: my=(mt(i%,2)+mt(k%,2))/2:mz=(mt(i%,3)+mt(k%,3))/2 PRINT #1, mx; my; mz; mcolr% RETURN valine: PRINT "VAL " IF aa$(i%+4)<>"VAL" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"VAL" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); colr% IF aa$(i%+6)<>"VAL" THEN k%=i%+2:i%=i%+6:GOTO amide ELSE PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); 0 PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); colr% k%=i%+2: i%=i%+7 GOTO amide leucine: PRINT "LEU " IF aa$(i%+4)<>"LEU" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"LEU" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); colr% IF aa$(i%+6)<>"LEU" THEN k%=i%+2:i%=i%+6:GOTO amide ELSE PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); colr% IF aa$(i%+7)<>"LEU" THEN k%=i%+2:i%=i%+7:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); 0 PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); colr% k%=i%+2:i%=i%+8 GOTO amide isoleucine: PRINT "ILE " IF aa$(i%+4)<>"ILE" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"ILE" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); colr% IF aa$(i%+6)<>"ILE" THEN k%=i%+2:i%=i%+6:GOTO amide ELSE PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); 0 PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); colr% IF aa$(i%+7)<>"ILE" THEN k%=i%+2:i%=i%+7:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); 0 PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); colr% k%=i%+2:i%=i%+8 GOTO amide phenylala: PRINT "PHE " IF aa$(i%+4)<>"PHE" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"PHE" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); colr% IF aa$(i%+6)<>"PHE" THEN k%=i%+2:i%=i%+6:GOTO amide ELSE PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); colr% IF aa$(i%+7)<>"PHE" THEN k%=i%+2:i%=i%+7:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); 0 PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); colr% IF aa$(i%+8)<>"PHE" THEN k%=i%+2:i%=i%+8:GOTO amide ELSE PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); 0 PRINT #1, mt(i%+8,1); mt(i%+8, 2); mt(i%+8,3); colr% IF aa$(i%+9)<>"PHE" THEN k%=i%+2:i%=i%+9:GOTO amide ELSE PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); 0 PRINT #1, mt(i%+9,1); mt(i%+9, 2); mt(i%+9,3); colr% IF aa$(i%+10)<>"PHE" THEN k%=i%+2:i%=i%+10:GOTO amide ELSE PRINT #1, mt(i%+10,1); mt(i%+10, 2); mt(i%+10,3); colr% PRINT #1, mt(i%+8,1); mt(i%+8, 2); mt(i%+8,3); colr% k%=i%+2:i%=i%+11 GOTO amide asparagine: PRINT "ASN " IF aa$(i%+4)<>"ASN" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"ASN" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); colr% IF aa$(i%+6)<>"ASN"THEN k%=i%+2:i%=i%+6:GOTO amide ELSE mx=(mt(i%+5,1)+mt(i%+6,1))/2: my=(mt(i%+5,2)+mt(i%+6,2))/2:mz=(mt(i%+5,3)+mt(i%+6,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); 1 IF aa$(i%+7)<>"ASN" THEN k%=i%+2:i%=i%+7:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); 0 mx=(mt(i%+5,1)+mt(i%+7,1))/2: my=(mt(i%+5,2)+mt(i%+7,2))/2:mz=(mt(i%+5,3)+mt(i%+7,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); 3 k%=i%+2:i%=i%+8 GOTO amide glutamine: PRINT "GLN " PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 IF aa$(i%+4)<>"GLN" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"GLN" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); colr% IF aa$(i%+6)<>"GLN" THEN k%=i%+2:i%=i%+6:GOTO amide ELSE PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); colr% mx=(mt(i%+6,1)+mt(i%+7,1))/2: my=(mt(i%+6,2)+mt(i%+7,2))/2:mz=(mt(i%+6,3)+mt(i%+7,3))/2 PRINT #1, mx; my; mz; colr% IF aa$(i%+7)<>"GLN" THEN k%=i%+2:i%=i%+7:GOTO amide ELSE PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); 1 IF aa$(i%+8)<>"GLN" THEN k%=i%+2:i%=i%+8:GOTO amide ELSE PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); 0 mx=(mt(i%+6,1)+mt(i%+8,1))/2: my=(mt(i%+6,2)+mt(i%+8,2))/2:mz=(mt(i%+6,3)+mt(i%+8,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+8,1); mt(i%+8, 2); mt(i%+8,3); 3 k%=i%+2:i%=i%+9 GOTO amide tryptophan: PRINT "TRP " PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 IF aa$(i%+4)<>"TRP" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"TRP" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); colr% IF aa$(i%+6)<>"TRP" THEN k%=i%+2:i%=i%+6:GOTO amide ELSE PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); colr% IF aa$(i%+7)<>"TRP" THEN k%=i%+2:i%=i%+7:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); 0 PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); colr% IF aa$(i%+8)<>"TRP" THEN k%=i%+2:i%=i%+8:GOTO amide ELSE PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); 0 mx=(mt(i%+6,1)+mt(i%+8,1))/2: my=(mt(i%+6,2)+mt(i%+8,2))/2:mz=(mt(i%+6,3)+mt(i%+8,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+8,1); mt(i%+8, 2); mt(i%+8,3); 3 IF aa$(i%+9)<>"TRP" THEN k%=i%+2:i%=i%+9:GOTO amide ELSE mx=(mt(i%+9,1)+mt(i%+8,1))/2: my=(mt(i%+9,2)+mt(i%+8,2))/2:mz=(mt(i%+9,3)+mt(i%+8,3))/2 PRINT #1, mx; my; mz; 3 PRINT #1, mt(i%+9,1); mt(i%+9, 2); mt(i%+9,3); colr% PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); colr% IF aa$(i%+10)<>"TRP" THEN k%=i%+2:i%=i%+10:GOTO amide ELSE PRINT #1, mt(i%+10,1); mt(i%+10, 2); mt(i%+10,3); colr% IF aa$(i%+11)<>"TRP" THEN k%=i%+2:i%=i%+11:GOTO amide ELSE PRINT #1, mt(i%+9,1); mt(i%+9, 2); mt(i%+9,3); 0 PRINT #1, mt(i%+11,1); mt(i%+11, 2); mt(i%+11,3); colr% IF aa$(i%+12)<>"TRP" THEN k%=i%+2:i%=i%+12:GOTO amide ELSE PRINT #1, mt(i%+10,1); mt(i%+10, 2); mt(i%+10,3); 0 PRINT #1, mt(i%+12,1); mt(i%+12, 2); mt(i%+12,3); colr% IF aa$(i%+13)<>"TRP" THEN k%=i%+2:i%=i%+13:GOTO amide ELSE PRINT #1, mt(i%+13,1); mt(i%+13, 2); mt(i%+13,3); colr% PRINT #1, mt(i%+11,1); mt(i%+11, 2); mt(i%+11,3); colr% k%=i%+2:i%=i%+14 GOTO amide proline: PRINT "PRO " IF aa$(i%+4)<>"PRO" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"PRO" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); colr% IF aa$(i%+6)<>"PRO" THEN k%=i%+2:i%=i%+6:GOTO amide ELSE PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); colr% mx=(mt(i%+6,1)+mt(i%,1))/2: my=(mt(i%+6,2)+mt(i%,2))/2:mz=(mt(i%+6,3)+mt(i%,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%,1); mt(i%, 2); mt(i%,3); 3 k%=i%+2:i%=i%+7 GOTO amide serine: PRINT "SER " IF aa$(i%+4)<>"SER" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"SER" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE mx=(mt(i%+4,1)+mt(i%+5,1))/2: my=(mt(i%+4,2)+mt(i%+5,2))/2:mz=(mt(i%+4,3)+mt(i%+5,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); 1 k%=i%+2:i%=i%+6 GOTO amide threonine: PRINT "THR " IF aa$(i%+4)<>"THR" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"THR" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE mx=(mt(i%+4,1)+mt(i%+5,1))/2: my=(mt(i%+4,2)+mt(i%+5,2))/2:mz=(mt(i%+4,3)+mt(i%+5,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); 1 IF aa$(i%+6)<>"THR" THEN k%=i%+2:i%=i%+6:GOTO amide ELSE PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); 0 PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); colr% k%=i%+2:i%=i%+7 GOTO amide tyrosine: PRINT "TYR " IF aa$(i%+4)<>"TYR" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"TYR" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); colr% IF aa$(i%+6)<>"TYR" THEN k%=i%+2:i%=i%+6:GOTO amide ELSE PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); colr% IF aa$(i%+7)<>"TYR" THEN k%=i%+2:i%=i%+7:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); 0 PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); colr% IF aa$(i%+8)<>"TYR" THEN k%=i%+2:i%=i%+8:GOTO amide ELSE PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); 0 PRINT #1, mt(i%+8,1); mt(i%+8, 2); mt(i%+8,3); colr% IF aa$(i%+9)<>"TYR" THEN k%=i%+2:i%=i%+9:GOTO amide ELSE PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); 0 PRINT #1, mt(i%+9,1); mt(i%+9, 2); mt(i%+9,3); colr% IF aa$(i%+10)<>"TYR" THEN k%=i%+2:i%=i%+10:GOTO amide ELSE PRINT #1, mt(i%+10,1); mt(i%+10, 2); mt(i%+10,3); colr% PRINT #1, mt(i%+8,1); mt(i%+8, 2); mt(i%+8,3); colr% IF aa$(i%+11)<>"TYR" THEN k%=i%+2:i%=i%+11:GOTO amide ELSE PRINT #1, mt(i%+10,1); mt(i%+10, 2); mt(i%+10,3);0 mx=(mt(i%+10,1)+mt(i%+11,1))/2: my=(mt(i%+10,2)+mt(i%+11,2))/2:mz=(mt(i%+10,3)+mt(i%+11,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+11,1); mt(i%+11, 2); mt(i%+11,3); 1 k%=i%+2:i%=i%+12 GOTO amide cysteine: PRINT "CYS " IF aa$(i%+4)<>"CYS" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"CYS" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE mx=(mt(i%+4,1)+mt(i%+5,1))/2: my=(mt(i%+4,2)+mt(i%+5,2))/2:mz=(mt(i%+4,3)+mt(i%+5,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); 4 k%=i%+2:i%=i%+6 GOTO amide methionine: PRINT "MET " IF aa$(i%+4)<>"MET" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"MET" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); colr% IF aa$(i%+6)<>"MET" THEN k%=i%+2:i%=i%+6:GOTO amide ELSE mx=(mt(i%+6,1)+mt(i%+5,1))/2: my=(mt(i%+6,2)+mt(i%+5,2))/2:mz=(mt(i%+6,3)+mt(i%+5,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); 4 IF aa$(i%+7)<>"MET" THEN k%=i%+2:i%=i%+7:GOTO amide ELSE mx=(mt(i%+6,1)+mt(i%+7,1))/2: my=(mt(i%+6,2)+mt(i%+7,2))/2:mz=(mt(i%+6,3)+mt(i%+7,3))/2 PRINT #1, mx; my; mz; 4 PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); colr% k%=i%+2:i%=i%+8 GOTO amide aspacid: PRINT "ASP " IF aa$(i%+4)<>"ASP" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"ASP" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); colr% IF aa$(i%+6)<>"ASP" THEN k%=i%+2:i%=i%+6:GOTO amide ELSE mx=(mt(i%+6,1)+mt(i%+5,1))/2: my=(mt(i%+6,2)+mt(i%+5,2))/2:mz=(mt(i%+6,3)+mt(i%+5,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); 1 IF aa$(i%+7)<>"ASP" THEN k%=i%+2:i%=i%+7:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); 0 mx=(mt(i%+5,1)+mt(i%+7,1))/2: my=(mt(i%+5,2)+mt(i%+7,2))/2:mz=(mt(i%+5,3)+mt(i%+7,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); 1 k%=i%+2:i%=i%+8 GOTO amide gluacid: PRINT "GLU " IF aa$(i%+4)<>"GLU" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"GLU" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); colr% IF aa$(i%+6)<>"GLU" THEN k%=i%+2:i%=i%+6:GOTO amide ELSE PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); colr% IF aa$(i%+7)<>"GLU" THEN k%=i%+2:i%=i%+7:GOTO amide ELSE mx=(mt(i%+6,1)+mt(i%+7,1))/2: my=(mt(i%+6,2)+mt(i%+7,2))/2:mz=(mt(i%+6,3)+mt(i%+7,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); 1 IF aa$(i%+8)<>"GLU" THEN k%=i%+2:i%=i%+8:GOTO amide ELSE PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); 0 mx=(mt(i%+6,1)+mt(i%+8,1))/2: my=(mt(i%+6,2)+mt(i%+8,2))/2:mz=(mt(i%+6,3)+mt(i%+8,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+8,1); mt(i%+8, 2); mt(i%+8,3); 1 k%=i%+2:i%=i%+9 GOTO amide lysine: PRINT "LYS " PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 IF aa$(i%+4)<>"LYS" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"LYS" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); colr% IF aa$(i%+6)<>"LYS" THEN k%=i%+2:i%=i%+6:GOTO amide ELSE PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); colr% IF aa$(i%+7)<>"LYS" THEN k%=i%+2:i%=i%+7:GOTO amide ELSE PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); colr% IF aa$(i%+8)<>"LYS" THEN k%=i%+2:i%=i%+8:GOTO amide ELSE mx=(mt(i%+7,1)+mt(i%+8,1))/2: my=(mt(i%+7,2)+mt(i%+8,2))/2:mz=(mt(i%+7,3)+mt(i%+8,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+8,1); mt(i%+8, 2); mt(i%+8,3); 3 k%=i%+2:i%=i%+9 GOTO amide arginine: PRINT "ARG " IF aa$(i%+4)<>"ARG" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"ARG" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); colr% IF aa$(i%+6)<>"ARG" THEN k%=i%+2:i%=i%+6:GOTO amide ELSE PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); colr% IF aa$(i%+7)<>"ARG" THEN k%=i%+2:i%=i%+7:GOTO amide ELSE mx=(mt(i%+7,1)+mt(i%+6,1))/2: my=(mt(i%+7,2)+mt(i%+6,2))/2:mz=(mt(i%+7,3)+mt(i%+6,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); 3 IF aa$(i%+8)<>"ARG" THEN k%=i%+2:i%=i%+8:GOTO amide ELSE mx=(mt(i%+7,1)+mt(i%+8,1))/2: my=(mt(i%+7,2)+mt(i%+8,2))/2:mz=(mt(i%+7,3)+mt(i%+8,3))/2 PRINT #1, mx; my; mz; 3 PRINT #1, mt(i%+8,1); mt(i%+8, 2); mt(i%+8,3); colr% IF aa$(i%+9)<>"ARG" THEN k%=i%+2:i%=i%+9:GOTO amide ELSE mx=(mt(i%+9,1)+mt(i%+8,1))/2: my=(mt(i%+9,2)+mt(i%+8,2))/2:mz=(mt(i%+9,3)+mt(i%+8,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+9,1); mt(i%+9, 2); mt(i%+9,3); 3 IF aa$(i%+10)<>"ARG" THEN k%=i%+2:i%=i%+10:GOTO amide ELSE PRINT #1, mt(i%+8,1); mt(i%+8, 2); mt(i%+8,3); 0 mx=(mt(i%+10,1)+mt(i%+8,1))/2: my=(mt(i%+10,2)+mt(i%+8,2))/2:mz=(mt(i%+10,3)+mt(i%+8,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+10,1); mt(i%+10, 2); mt(i%+10,3); 3 k%=i%+2:i%=i%+11 GOTO amide histidine: PRINT "HIS " PRINT #1, mt(i%+1,1); mt(i%+1, 2); mt(i%+1,3); 0 IF aa$(i%+4)<>"HIS" THEN k%=i%+2:i%=i%+4:GOTO amide ELSE PRINT #1, mt(i%+4,1); mt(i%+4, 2); mt(i%+4,3); colr% IF aa$(i%+5)<>"HIS" THEN k%=i%+2:i%=i%+5:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); colr% IF aa$(i%+6)<>"HIS" THEN k%=i%+2:i%=i%+6:GOTO amide ELSE mx=(mt(i%+5,1)+mt(i%+6,1))/2: my=(mt(i%+5,2)+mt(i%+6,2))/2:mz=(mt(i%+5,3)+mt(i%+6,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); 3 IF aa$(i%+7)<>"HIS" THEN k%=i%+2:i%=i%+7:GOTO amide ELSE PRINT #1, mt(i%+5,1); mt(i%+5, 2); mt(i%+5,3); 0 PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); colr% IF aa$(i%+8)<>"HIS" THEN k%=i%+2:i%=i%+8:GOTO amide ELSE PRINT #1, mt(i%+6,1); mt(i%+6, 2); mt(i%+6,3); 0 mx=(mt(i%+6,1)+mt(i%+8,1))/2: my=(mt(i%+6,2)+mt(i%+8,2))/2:mz=(mt(i%+6,3)+mt(i%+8,3))/2 PRINT #1, mx; my; mz; 3 PRINT #1, mt(i%+8,1); mt(i%+8, 2); mt(i%+8,3); colr% IF aa$(i%+9)<>"HIS" THEN k%=i%+2:i%=i%+9:GOTO amide ELSE mx=(mt(i%+9,1)+mt(i%+8,1))/2: my=(mt(i%+9,2)+mt(i%+8,2))/2:mz=(mt(i%+9,3)+mt(i%+8,3))/2 PRINT #1, mx; my; mz; colr% PRINT #1, mt(i%+9,1); mt(i%+9, 2); mt(i%+9,3); 3 mx=(mt(i%+9,1)+mt(i%+7,1))/2: my=(mt(i%+9,2)+mt(i%+7,2))/2:mz=(mt(i%+9,3)+mt(i%+7,3))/2 PRINT #1, mx; my; mz; 3 PRINT #1, mt(i%+7,1); mt(i%+7, 2); mt(i%+7,3); colr% k%=i%+2:i%=i%+10 amide: IF atom$(i%)<>"N" THEN i%=i%+1:GOTO amide ELSE PRINT #1, mt(k%,1); mt(k%, 2); mt(k%,3); 0 IF subunit$(i%)<>subunit$(k%) THEN RETURN mx=(mt(i%,1)+mt(k%,1))/2: my=(mt(i%,2)+mt(k%,2))/2:mz=(mt(i%,3)+mt(k%,3))/2 PRINT #1, mx; my; mz; mcolr% RETURN '------------------------------------------------- ' Divide full path name into path and simple file name ' SUB parse(f$,p$) STATIC i%=1 WHILE i% 'while there's another colon, keep scanning last%=i% 'keep track of last, since final INSTR will return 0 i%=INSTR(i%+1,f$,":") WEND IF last%=1 THEN p$="" ELSE p$=LEFT$(f$,last%) :f$=RIGHT$(f$,LEN(f$)-last%) END SUB