PROGRAM FRAGMENTDNA c find amide and nucleotide chromophores in a file implicit none integer*4 nat,iag,ib,id,iy,iq,ith,iax,iap,iah,iac,ipo, 1ia ,ia2,ia3,ia4,ia5,ia6,ia7,ia8,ia9,ia10,ia11,ia12,ia13, 1ix ,ix2,ix3,ix4,ix5,ix6,ix7,ix8,ix9,ix10,ix11,ix12,ix13, 1in,ica,ixn,ixa,icc,ixc,ico,ixap,ih,nh1,nh2,ih11,ih12,ih2, 1nc,ic1,ic2,nn2,nc2,no2,ic21,in21,io21,ia1,LO,LF,ibna, 1iALA,iGLY,iVAL,iLEU,iILE,iMET,iTRP,iPHE,iSER,iTHR,iCYS, 1iTYR,iASN,iGLN,iASP,iGLU,iLYS,iARG,iHIS,ixx,iPRO, 1ic11,ic12,ih1,ih3,in11,io1,io11,io12,io22,is1,is11,ix1, 1nc1,nh,nn1,no,no1,no4,ns,ns1,ihn,io4,ich,iACN,iH2O logical l5,lm,lcc,lcystine,lwrt,lcon,lhb,lala,LSS,ldna,lmin, 1lper real*8 xi,yi,zi,xj,yj,zj,d2,DL,epsin,epsout,DW,rdist(10), 1px,py,pz real*8,allocatable::r(:) character*45 tt(1000) integer*4,allocatable::ity(:),ipep(:,:),bt(:,:),nt(:), 1itym(:,:),iad(:,:),iqua(:,:),icy(:,:),us(:),ipex(:,:), 1ippp(:,:),ipeh(:,:),ipxx(:,:),ipec(:,:), 1ipALA(:,:),ipGLY(:,:),ipVAL(:,:),ipLEU(:,:),ipILE(:,:), 1ipMET(:,:),ipTRP(:,:),ipPHE(:,:),ipPRO(:,:),ipSER(:,:), 1ipTHR(:,:),ipCYS(:,:),ipTYR(:,:),ipASN(:,:),ipGLN(:,:), 1ipASP(:,:),ipGLU(:,:),ipLYS(:,:),ipARG(:,:),ipHIS(:,:), 1itink(:),ipACN(:,:),ipH2O(:,:),ipp(:,:) c numbers of aminoacid residues etc : data iALA,iGLY,iVAL,iLEU,iILE,iMET,iTRP,iPHE,iPRO,iSER,iTHR,iCYS, 1iTYR,iASN,iGLN,iASP,iGLU,iLYS,iARG,iHIS,ixx,iACN,iH2O/ 10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/ C WRITE(6,64000) 64000 FORMAT(' FIND AMIDE AND NUCLEOTIDE GROUPS IN A STRUCTURE',/, 1 ' REWRITE GEOMETRY TO TINKER.XYZ ',/, 1 ' and recognize some other structures ',/,/, 1 ' Input : FILE.X',/,/, 1 ' Output: AMIDE.LST',/, 1 ' PROLINE.LST',/, 1 ' TERMINAL.LST',/, 1 ' UNKNOWN.LST',/, 1 ' ADENINE.LST',/, 1 ' THYMINE.LST',/, 1 ' GUANINE.LST',/, 1 ' CYTOSINE.LST',/, 1 ' ACN.LST',/, 1 ' H2O.LST',/, 1 ' TINKER.XYZ',/) c OPEN(20,FILE='FILE.X',STATUS='OLD') read(20,*) read(20,*)nat allocate(r(3*nat),ity(nat),ipep(nat,8),bt(nat,7),nt(nat), 1itym(nat,8),iad(nat,8),iqua(nat,8),icy(nat,8),us(nat), 1ipex(nat,8),ippp(nat,8),ipeh(nat,8),ipxx(nat,8),ipec(nat,8), 1ipALA(nat,8),ipGLY(nat,8),ipVAL(nat,8),ipLEU(nat,8),ipILE(nat,8), 1ipMET(nat,8),ipTRP(nat,8),ipPHE(nat,8),ipPRO(nat,8),ipSER(nat,8), 1ipTHR(nat,8),ipCYS(nat,8),ipTYR(nat,8),ipASN(nat,8),ipGLN(nat,8), 1ipASP(nat,8),ipGLU(nat,8),ipLYS(nat,8),ipARG(nat,8),ipHIS(nat,8), 1itink(nat),ipACN(nat,8),ipH2O(nat,8),ipp(nat,11)) do 41 ia=1,nat read(20,*)ity(ia),(r(3*(ia-1)+ix),ix=1,3),(bt(ia,ix),ix=1,7) nt(ia)=7 us(ia)=1 do 411 ix=1,7 if(bt(ia,ix).eq.0)then nt(ia)=ix-1 goto 41 endif 411 continue itink(ia)=0 41 continue close(20) c initialize tinker types (according to amber99.prm): call assigntinkertypes(tt) c c number of ordinary trans amide groups: iag=0 c number of ordinary cis amide groups: iac=0 c number of terminal amide groups: iah=0 c number of proline amide groups: iap=0 c number of strange amide groups: iax=0 c number of bases: ib=0 c number of adenins: id=0 c number of thymins: ith=0 c number of cytosins: iy=0 c number of guanines: iq=0 c number of -PO2-O-CH2- groups ipo=0 c c delete bonds of Na atoms: ibna=0 do 84 ia=1,nat if(ity(ia).eq.11)then 86 do 85 ix=1,nt(ia) ia2=bt(ia,ix) call brkb(ia2,ia,nt,nat,bt) ibna=ibna+1 goto 86 85 continue endif 84 continue if(ibna.ne.0)write(6,*)ibna,' bonds to Na deleted' c c identify -PO2-O-CH2- do 1 ia=1,nat if(ity(ia).eq.15.and.nt(ia).eq.4)then c identify -P O O - O - C H H C c ia ia2 ia3 ia4 ia5 ia6 ia7 ia8 c between bases only: do 72 ix2=1,nt(ia) ia2=bt(ia,ix2) if(ity(ia2).eq.8.and.nt(ia2).eq.1)then do 73 ix3=1,nt(ia) ia3=bt(ia,ix3) if(ity(ia3).eq.8.and.ia3.ne.ia2.and.nt(ia3).eq.1)then do 74 ix4=1,nt(ia) ia4=bt(ia,ix4) if(ity(ia4).eq.8.and.nt(ia4).eq.2)then do 75 ix5=1,nt(ia4) ia5=bt(ia4,ix5) if(ity(ia5).eq.6.and.nt(ia5).eq.4)then do 76 ix6=1,nt(ia5) ia6=bt(ia5,ix6) if(ity(ia6).eq.1)then do 77 ix7=1,nt(ia5) ia7=bt(ia5,ix7) if(ity(ia7).eq.1.and.ia7.ne.ia6)then do 78 ix8=1,nt(ia5) ia8=bt(ia5,ix8) if(ity(ia8).eq.6)then c atoms a9-a11 only if exist: do 79 ix9=1,nt(ia8) ia9=bt(ia8,ix9) if(ity(ia9).eq.6.and.ia9.ne.ia5)then do 80 ix10=1,nt(ia9) ia10=bt(ia9,ix10) if(ity(ia10).eq.8)then do 81 ix11=1,nt(ia10) ia11=bt(ia10,ix11) c next phosphorus or OH terminus: 81 if(ity(ia11).eq.15.or.ity(ia11).eq.1)goto 778 endif 80 continue endif 79 continue ia9=0 ia10=0 778 do 82 ix11=1,nt(ia) ia11=bt(ia,ix11) 82 if(ity(ia11).eq.8.and.ia11.ne.ia4.and.nt(ia11).eq.2) 1 goto 777 ia11=0 777 call swallow11(nat,us, 1 ipo,ipp,ia,ia2,ia3,ia4,ia5,ia6,ia7,ia8,ia9,ia10,ia11) goto 772 endif 78 continue endif 77 continue endif 76 continue endif 75 continue endif 74 continue endif 73 continue endif 72 continue endif 772 continue c identify bases: if(ity(ia).eq.7)then c identify six-member ring c ia ia2 ia3 ia4 ia5 ia6 c N C N C C C do 102 ix2=1,nt(ia) ia2=bt(ia,ix2) if(ity(ia2).eq.6)then do 103 ix3=1,nt(ia2) ia3=bt(ia2,ix3) if(ity(ia3).eq.7.and.ia3.ne.ia)then do 104 ix4=1,nt(ia3) ia4=bt(ia3,ix4) if(ity(ia4).eq.6.and.ia4.ne.ia2)then do 105 ix5=1,nt(ia4) ia5=bt(ia4,ix5) if(ity(ia5).eq.6.and.ia5.ne.ia2)then do 106 ix6=1,nt(ia5) ia6=bt(ia5,ix6) if(ity(ia6).eq.6.and.ia6.ne.ia2.and.ia6.ne.ia4)then do 107 ix7=1,nt(ia6) ia7=bt(ia6,ix7) if(ia7.eq.ia)then c investigate 5-membered ring on ia5 and ia6: l5=.false. do 116 ix10=1,nt(ia5) ia10=bt(ia5,ix10) if(ity(ia10).eq.7)then do 118 ix11=1,nt(ia10) ia11=bt(ia10,ix11) if(ity(ia11).eq.6.and.ia11.ne.ia5)then do 119 ix12=1,nt(ia11) ia12=bt(ia11,ix12) if(ity(ia12).eq.7.and.ia12.ne.ia10)then do 120 ix13=1,nt(ia12) ia13=bt(ia12,ix13) if(ia13.eq.ia6)then l5=.true. goto 1007 endif 120 continue endif 119 continue endif 118 continue endif 116 continue 1007 continue c identify adenine do 117 ix8=1,nt(ia4) ia8=bt(ia4,ix8) if(nt(ia4).eq.3.and.ity(ia8).eq.7.and.ia8.ne.ia3)then if(l5)then ib=ib+1 call swallow(nat,us, 1 id,iad,ia,ia2,ia3,ia4,ia5,ia6,ia8,ia8) goto 1 endif endif 117 continue c identify cytosine do 110 ix8=1,nt(ia2) ia8=bt(ia2,ix8) if(nt(ia2).eq.3.and.ity(ia8).eq.8.and.nt(ia8).eq.1)then do 111 ix9=1,nt(ia4) ia9=bt(ia4,ix9) if(nt(ia4).eq.3.and.ity(ia9).eq.7.and..not.l5. 1 and.ia9.ne.ia3)then ib=ib+1 call swallow(nat,us, 1 iy,icy,ia,ia2,ia3,ia4,ia5,ia6,ia8,ia9) goto 1 endif 111 continue endif 110 continue c identify guanine do 121 ix8=1,nt(ia2) ia8=bt(ia2,ix8) if(nt(ia2).eq.3.and.ity(ia8).eq.7.and. 1 ia8.ne.ia.and.ia8.ne.ia3)then do 122 ix9=1,nt(ia4) ia9=bt(ia4,ix9) if(nt(ia4).eq.3.and.ity(ia9).eq.8)then if(l5.and.nt(ia9).eq.1)then ib=ib+1 call swallow(nat,us, 1 iq,iqua,ia,ia2,ia3,ia4,ia5,ia6,ia8,ia9) goto 1 endif endif 122 continue endif 121 continue c methyl on ia5 lm=.false. do 123 ix8=1,nt(ia5) ia8=bt(ia5,ix8) if(ia8.ne.ia4.and.ia8.ne.ia6.and.ity(ia8).eq.6)then lm=.true. goto 1002 endif 123 continue 1002 continue c identify thymine do 108 ix8=1,nt(ia2) ia8=bt(ia2,ix8) if(nt(ia2).eq.3.and.ity(ia8).eq.8.and.nt(ia8).eq.1)then do 109 ix9=1,nt(ia4) ia9=bt(ia4,ix9) if(nt(ia4).eq.3.and.ity(ia9).eq.8.and.nt(ia9).eq.1)then if(lm.and..not.l5)then ib=ib+1 call swallow(nat,us, 1 ith,itym,ia,ia2,ia3,ia4,ia5,ia6,ia8,ia9) goto 1 endif endif 109 continue endif 108 continue endif 107 continue endif 106 continue endif 105 continue endif 104 continue endif 103 continue endif 102 continue endif 1 continue c identify amide groups do 9 ia=1,nat if(ity(ia).eq.8.and.us(ia).eq.1.and.nt(ia).eq.1)then do 124 ix2=1,nt(ia) ia2=bt(ia,ix2) if(ity(ia2).eq.6.and.us(ia2).eq.1)then do 125 ix3=1,nt(ia2) ia3=bt(ia2,ix3) if(ity(ia3).eq.7.and.us(ia3).eq.1)then c ia ia2 ia3 c O = C - N c c carbon on C: lcc=.false. do 135 ix6=1,nt(ia2) ia6=bt(ia2,ix6) if(ity(ia6).eq.6)then lcc=.true. goto 1003 endif 135 continue 1003 continue c do 126 ix4=1,nt(ia3) ia4=bt(ia3,ix4) if(ity(ia4).eq.1)then c ia ia2 ia3 ia4 c O = C - N - H xi=r(3*(ia -1)+1) yi=r(3*(ia -1)+2) zi=r(3*(ia -1)+3) xj=r(3*(ia4-1)+1) yj=r(3*(ia4-1)+2) zj=r(3*(ia4-1)+3) d2=(xi-xj)**2+(yi-yj)**2+(zi-zj)**2 if(d2.gt.7.0d0)then c trans do 127 ix5=1,nt(ia3) ia5=bt(ia3,ix5) if(ity(ia5).eq.6.and.ia5.ne.ia2)then c O = C - N(-C) - H if(lcc)then c O = C(-C) - N(-C) - H if(iag.lt.0)call report('iag') call swallow(nat,us,iag,ipep, 1 ia,ia2,ia3,ia4,ia5,ia6,ia6,ia6) goto 9 endif endif if(ity(ia5).eq.1.and.ia5.ne.ia4)then c O = C - NH2 if(lcc)then c O = C(-C) - NH2 if(iah.lt.0)call report('iah') call swallow(nat,us,iah,ipeh, 1 ia,ia2,ia3,ia4,ia5,ia6,ia6,ia6) goto 9 endif endif 127 continue else c cis do 138 ix5=1,nt(ia3) ia5=bt(ia3,ix5) if(ity(ia5).eq.6.and.ia5.ne.ia2)then c O = C - N(-C) - H if(lcc)then c O = C(-C) - N(-C) - H if(iac.lt.0)call report('iac') call swallow(nat,us,iac,ipec, 1 ia,ia2,ia3,ia4,ia5,ia6,ia6,ia6) goto 9 endif endif 138 continue endif endif 126 continue do 129 ix4=1,nt(ia3) ia4=bt(ia3,ix4) if(ity(ia4).eq.6.and.ia4.ne.ia2)then c ia ia2 ia3 ia4 c O = C - N - C do 131 ix5=1,nt(ia3) ia5=bt(ia3,ix5) if(ity(ia5).eq.6.and.ia5.ne.ia2.and.ia5.ne.ia4)then c O = C - N(-C) - C c ensure that ia5 is the main chain continuation carbon: lcon=.false. do 136 ix7=1,nt(ia5) ia7=bt(ia5,ix7) if(ity(ia7).eq.6)then do 137 ix8=1,nt(ia7) ia8=bt(ia7,ix8) 137 if(ity(ia8).eq.8)lcon=.true. endif 136 continue if(.not.lcon)then ix7=ia4 ia4=ia5 ia5=ix7 endif if(lcc)then c O = C(-C) - N(-C) - C do 132 ix7=1,nt(ia5) ia7=bt(ia5,ix7) if(ity(ia7).eq.6)then do 133 ix8=1,nt(ia7) ia8=bt(ia7,ix8) if(ity(ia8).eq.6)then do 134 ix9=1,nt(ia8) ia9=bt(ia8,ix9) if(ia9.eq.ia4)then c proline amide if(iap.lt.0)call report('iap') call swallow(nat,us,iap,ippp, 1 ia,ia2,ia3,ia4,ia5,ia6,ia7,ia8) goto 9 endif 134 continue endif 133 continue endif 132 continue endif endif 131 continue endif 129 continue c unknown O = C - N group if(iax.lt.0)call report('iax') call swallow(nat,us,iax,ipex,ia,ia2,ia3,0,0,0,0,0) endif 125 continue endif 124 continue endif 9 continue c identify aminoacid side chains c N - aC (H ia) - C (=O) c in ica ih ia icc ico do 14 in=1,nat if(ity(in).eq.7)then do 15 ixn=1,nt(in) ica=bt(in,ixn) if(ity(ica).eq.6.and.nt(ica).eq.4)then do 16 ixa=1,nt(ica) icc=bt(ica,ixa) if(ity(icc).eq.6.and.nt(icc).eq.3)then do 17 ixc=1,nt(icc) ico=bt(icc,ixc) if(ity(ico).eq.8.and.nt(ico).eq.1)then do 18 ixap=1,nt(ica) ih=bt(ica,ixap) if(ity(ih).eq.1.and.nt(ih).eq.1)then ihn=0 do 1001 ix=1,nt(in) ia=bt(in,ix) 1001 if(ity(ia).eq.1)ihn=ia ich=0 do 1014 ix=1,nt(ica) ia=bt(ica,ix) 1014 if(ity(ia).eq.1)ich=ia c in (ihn) ica(ich) icc ico c N ( H ) - aC ( H ) - C = O do 19 ix=1,nt(ica) ia=bt(ica,ix) if(ia.ne.in.and.ia.ne.ih.and.ia.ne.icc)then if(ity(ia).eq.1)then c glycine: if(iGLY.lt.0)call report('iGLY') call swallow(nat,us,iGLY,ipGLY,ia,ih,ica,in,icc,ico,0,0) itink(in) =1 itink(ica)=2 itink(icc)=3 itink(ihn)=4 itink(ico)=5 call hh(ity,1,nt,ica,bt,6,nat,itink) goto 14 endif if(ity(ia).eq.6.and.nt(ia).eq.4)then nh=0 ih1=0 ih2=0 ih3=0 do 20 ix1=1,nt(ia) ia1=bt(ia,ix1) if(ity(ia1).eq.1)then nh=nh+1 if(nh.eq.1)ih1=ia1 if(nh.eq.2)ih2=ia1 if(nh.eq.3)ih3=ia1 endif 20 continue if(nh.eq.3)then c alanine if(iALA.lt.0)call report('iALA') call swallow(nat,us,iALA,ipALA,ih1,ih2,ih3, 1 ia,ica,in,icc,ico) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,6,itink) itink(ih2)=14 itink(ih3)=14 goto 14 endif nc=0 no=0 ns=0 io1=0 is1=0 ic1=0 ic2=0 do 21 ix1=1,nt(ia) ia1=bt(ia,ix1) if(ity(ia1).eq.16)then ns=ns+1 if(ns.eq.1)is1=ia1 endif if(ity(ia1).eq.8)then no=no+1 if(no.eq.1)io1=ia1 endif if(ity(ia1).eq.6.and.ia1.ne.ica)then nc=nc+1 if(nc.eq.1)ic1=ia1 if(nc.eq.2)ic2=ia1 endif 21 continue if(nh.eq.1)then if(nc.eq.1.and.no.eq.1)then c threonine c -bC (ia) bH (ih1) (O(io1) H) - C(ic1)H3 call swallow(nat,us,iTHR,ipTHR,io1,ic1,ih1, 1 ia,ica,in,icc,ico) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,64,itink) itink(io1)=73 call hh(ity,1,nt,io1,bt,74,nat,itink) itink(ic1)=75 call hh(ity,1,nt,ic1,bt,76,nat,itink) goto 14 endif if(nc.eq.2)then nh1=0 ih11=0 ih12=0 do 22 ix2=1,nt(ic1) ia2=bt(ic1,ix2) if(ity(ia2).eq.1)then nh1=nh1+1 if(nh1.eq.1)ih11=ia2 if(nh1.eq.2)ih12=ia2 endif 22 continue nh2=0 do 23 ix2=1,nt(ic2) ia2=bt(ic2,ix2) if(ity(ia2).eq.1)then nh2=nh2+1 endif 23 continue if(nh1.eq.3.and.nh2.eq.3)then c valine c -bC (ia) bH (ih1) (C(ic1)H3) (C(ic2)H3) call swallow(nat,us,iVAL,ipVAL,ic1,ic2,ih1, 1 ia,ica,in,icc,ico) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,14,itink) itink(ic1)=23 call hh(ity,1,nt,ic1,bt,24,nat,itink) itink(ic2)=25 call hh(ity,1,nt,ic2,bt,26,nat,itink) goto 14 endif if((nh1.eq.3.and.nh2.eq.2) 1 .or.(nh1.eq.2.and.nh2.eq.3))then c isoleucine c -bC (ia) bH (ih1) (C(ic1/2)H3) ( C(ic2/1) C) call swallow(nat,us,iILE,ipILE,ic1,ic2,ih1, 1 ia,ica,in,icc,ico) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,40,itink) if(nh1.eq.3)then itink(ic1)=51 itink(ic2)=49 call hh(ity,1,nt,ic1,bt,52,nat,itink) call hh(ity,1,nt,ic2,bt,50,nat,itink) do 1010 ix3=1,nt(ic2) ia3=bt(ic2,ix3) if(ity(ia3).eq.6.and.ia3.ne.ia)then itink(ia3)=53 call hh(ity,1,nt,ia3,bt,54,nat,itink) endif 1010 continue else itink(ic1)=49 itink(ic2)=51 call hh(ity,1,nt,ic2,bt,52,nat,itink) call hh(ity,1,nt,ic1,bt,50,nat,itink) do 1008 ix3=1,nt(ic1) ia3=bt(ic1,ix3) if(ity(ia3).eq.6.and.ia3.ne.ia)then itink(ia3)=53 call hh(ity,1,nt,ia3,bt,54,nat,itink) endif 1008 continue endif goto 14 endif endif endif if(nh.eq.2)then if(no.eq.1)then c serin call swallow(nat,us,iSER,ipSER,io1,ih1,ih2, 1 ia,ica,in,icc,ico) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,54,itink) itink(ih2)=62 itink(io1)=63 itink(io1)=63 call hh(ity,1,nt,io1,bt,64,nat,itink) goto 14 endif if(ns.eq.1)then c cystein call swallow(nat,us,iCYS,ipCYS,is1,ih1,ih2, 1 ia,ica,in,icc,ico) lcystine=.false. do 1013 ix3=1,nt(is1) 1013 if(ity(bt(is1,ix3)).eq.16)lcystine=.true. if(lcystine)then call inip(in,ica,icc,ihn,ico,ich,ia,ih1,86,itink) itink(ih2)=94 itink(is1)=95 else call inip(in,ica,icc,ihn,ico,ich,ia,ih1,76,itink) itink(ih2)=84 itink(is1)=85 call hh(ity,1,nt,is1,bt,86,nat,itink) endif goto 14 endif if(nc.eq.1)then nh1=0 no1=0 nn1=0 ns1=0 ih11=0 ih12=0 nc1=0 ic11=0 ic12=0 is11=0 in11=0 io11=0 io12=0 do 24 ix2=1,nt(ic1) ia2=bt(ic1,ix2) if(ity(ia2).eq.8)then no1=no1+1 if(no1.eq.1)io11=ia2 if(no1.eq.2)io12=ia2 endif if(ity(ia2).eq.7)then nn1=nn1+1 if(nn1.eq.1)in11=ia2 endif if(ity(ia2).eq.16)then ns1=ns1+1 if(ns1.eq.1)is11=ia2 endif if(ity(ia2).eq.1)then nh1=nh1+1 if(nh1.eq.1)ih11=ia2 if(nh1.eq.2)ih12=ia2 endif if(ity(ia2).eq.6.and.ia2.ne.ia)then nc1=nc1+1 if(nc1.eq.1)ic11=ia2 if(nc1.eq.2)ic12=ia2 endif 24 continue if(nh1.eq.2.and.ns1.eq.1)then c methionine call swallow(nat,us,iMET,ipMET,is11,ih11,ih12, 1 ia,ica,in,icc,ico) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,257,itink) itink(ih2)=265 itink(ic1)=266 itink(ih11)=267 itink(ih12)=267 itink(is11)=268 do 1015 ix3=1,nt(is11) ia3=bt(is11,ix3) if(ity(ia3).eq.6.and.ia3.ne.ic1)then itink(ia3)=269 call hh(ity,1,nt,ia3,bt,270,nat,itink) endif 1015 continue goto 14 endif if(nh1.eq.1.and.nc1.eq.2)then c leucine call swallow(nat,us,iLEU,ipLEU,ic11,ic12,ic1, 1 ia,ica,in,icc,ico) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,26,itink) itink(ih2)=34 itink(ic1)=35 itink(ih11)=36 itink(ic11)=37 call hh(ity,1,nt,ic11,bt,38,nat,itink) itink(ic12)=39 call hh(ity,1,nt,ic12,bt,40,nat,itink) goto 14 endif if(nt(ic1).eq.3.and.nc1.eq.2)then c investigate Phe and Tyr: do 25 ix3=1,nt(ic11) ia3=bt(ic11,ix3) if(ia3.ne.ia1.and.ity(ia3).eq.6.and.nt(ia3).eq.3)then do 26 ix4=1,nt(ia3) ia4=bt(ia3,ix4) if(ia4.ne.ic11.and.ity(ia4).eq.6.and.nt(ia4).eq.3)then do 27 ix5=1,nt(ia4) ia5=bt(ia4,ix5) if(ia5.ne.ia3.and.ity(ia5).eq.6.and.nt(ia5).eq.3)then do 28 ix6=1,nt(ia5) ia6=bt(ia5,ix6) if(ia6.ne.ia4.and.ity(ia6).eq.6.and.nt(ia6).eq.3)then do 29 ix7=1,nt(ia6) ia7=bt(ia6,ix7) if(ia7.eq.ic1)then no4=0 io4=0 do 30 ix8=1,nt(ia4) if(ity(bt(ia4,ix8)).eq.8)then no4=no4+1 if(no4.eq.1)io4=bt(ia4,ix8) endif 30 continue if(no4.eq.1)then c tyrosine call swallow(nat,us,iTYR,ipTYR,ic1,ic11,ia3, 1 ia4,ia5,ia6,ia,ica) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,121,itink) itink(ih2)=129 itink(ic1)=130 itink(ic11)=131 itink(ia6)=131 call hh(ity,1,nt,ic11,bt,132,nat,itink) call hh(ity,1,nt,ia6 ,bt,132,nat,itink) itink(ia3)=133 itink(ia5)=133 call hh(ity,1,nt,ia3 ,bt,134,nat,itink) call hh(ity,1,nt,ia5 ,bt,134,nat,itink) itink(ia4)=135 itink(io4)=136 call hh(ity,1,nt,io4 ,bt,137,nat,itink) goto 14 else c phenylalanine call swallow(nat,us,iPHE,ipPHE,ic1,ic11,ia3, 1 ia4,ia5,ia6,ia,ica) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,106,itink) itink(ih2)=114 itink(ic1)=115 itink(ic11)=116 itink(ia6)=116 call hh(ity,1,nt,ic11,bt,117,nat,itink) call hh(ity,1,nt,ia6 ,bt,117,nat,itink) itink(ia3)=118 itink(ia5)=118 call hh(ity,1,nt,ia3 ,bt,119,nat,itink) call hh(ity,1,nt,ia5 ,bt,119,nat,itink) itink(ia4)=120 call hh(ity,1,nt,ia4 ,bt,121,nat,itink) goto 14 endif endif 29 continue endif 28 continue endif 27 continue endif 26 continue endif 25 continue c investigate Trp: do 31 ix3=1,nt(ic11) ia3=bt(ic11,ix3) if(ia3.ne.ia1.and.ity(ia3).eq.7)then do 32 ix4=1,nt(ia3) ia4=bt(ia3,ix4) if(ia4.ne.ic11.and.ity(ia4).eq.6.and.nt(ia4).eq.3)then do 33 ix5=1,nt(ia4) ia5=bt(ia4,ix5) if(ity(ia5).eq.6)then do 34 ix6=1,nt(ia5) ia6=bt(ia5,ix6) if(ia6.ne.ia4.and.ity(ia6).eq.6)then do 35 ix7=1,nt(ia6) ia7=bt(ia6,ix7) if(ia7.ne.ia5.and.ity(ia7).eq.6)then do 36 ix8=1,nt(ia7) ia8=bt(ia7,ix8) if(ia8.ne.ia6.and.ity(ia8).eq.6)then do 37 ix9=1,nt(ia8) ia9=bt(ia8,ix9) if(ia9.ne.ia7.and.ity(ia9).eq.6.and.nt(ia9).eq.3. 1 and.ia9.ne.ia4)then do 38 ix10=1,nt(ia9) ia10=bt(ia9,ix10) if(ia10.eq.ic1)then c tryptophane call swallow(nat,us,iTRP,ipTRP,ic1,ic11,ia5, 1 ia6,ia7,ia8,ia3,ia) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,137, 1 itink) itink(ih2)=145 itink(ic1)=146 itink(ic11)=147 call hh(ity,1,nt,ic11,bt,148,nat,itink) itink(ia9)=149 itink(ia3)=150 call hh(ity,1,nt,ia3,bt,151,nat,itink) itink(ia4)=152 itink(ia8)=153 call hh(ity,1,nt,ia8,bt,154,nat,itink) itink(ia5)=155 call hh(ity,1,nt,ia5,bt,156,nat,itink) itink(ia7)=157 call hh(ity,1,nt,ia7,bt,158,nat,itink) itink(ia6)=159 call hh(ity,1,nt,ia6,bt,160,nat,itink) goto 14 endif 38 continue endif 37 continue endif 36 continue endif 35 continue endif 34 continue endif 33 continue endif 32 continue endif 31 continue endif if(nt(ic1).eq.3.and.nc1.eq.1)then c investigate His: do 39 ix3=1,nt(ic11) ia3=bt(ic11,ix3) if(ia3.ne.ia1.and.ity(ia3).eq.7)then do 40 ix4=1,nt(ia3) ia4=bt(ia3,ix4) if(ia4.ne.ic11.and.ity(ia4).eq.6)then do 65 ix5=1,nt(ia4) ia5=bt(ia4,ix5) if(ia5.ne.ia3.and.ity(ia5).eq.7)then do 42 ix6=1,nt(ia5) ia6=bt(ia5,ix6) if(ia6.eq.ic1)then c histidine call swallow(nat,us,iHIS,ipHIS,ic1,ic11,ia3, 1 ia4,ia5,ia,ica,icc) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,160, 1 itink) itink(ih2)=168 itink(ic1)=169 itink(ia5)=170 call hh(ity,1,nt,ia5,bt,171,nat,itink) itink(ic11)=172 call hh(ity,1,nt,ic11,bt,173,nat,itink) itink(ia4)=174 call hh(ity,1,nt,ia4,bt,175,nat,itink) itink(ia3)=176 call hh(ity,1,nt,ia3,bt,177,nat,itink) goto 14 endif 42 continue endif 65 continue endif 40 continue endif 39 continue endif if(nt(ic1).eq.3)then if(nc1.eq.0.and.no1.eq.1.and.nn1.eq.1)then c aspargine call swallow(nat,us,iASN,ipASN,ic1,io11,in11, 1 ia,ica,in,icc,ico) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,219, 1 itink) itink(ih2)=227 itink(ic1)=228 itink(io11)=229 itink(in11)=230 call hh(ity,1,nt,in11,bt,231,nat,itink) goto 14 endif if(nc1.eq.0.and.no1.eq.2.and.nn1.eq.0)then c aspartate call swallow(nat,us,iASP,ipASP,ic1,io11,io12, 1 ia,ica,in,icc,ico) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,209, 1 itink) itink(ih2)=217 itink(ic1)=218 itink(io11)=219 itink(io12)=219 goto 14 endif endif if(nt(ic1).eq.4.and.nh1.eq.2.and.nc1.eq.1)then nc2=0 nh2=0 nn2=0 no2=0 io21=0 in21=0 io22=0 ic21=0 do 43 ix3=1,nt(ic11) ia3=bt(ic11,ix3) if(ity(ia3).eq.7)then nn2=nn2+1 if(nn2.eq.1)in21=ia3 endif if(ity(ia3).eq.1)then nh2=nh2+1 endif if(ity(ia3).eq.8)then no2=no2+1 if(no2.eq.1)io21=ia3 if(no2.eq.2)io22=ia3 endif if(ia3.ne.ic1.and.ity(ia3).eq.6)then nc2=nc2+1 if(nc2.eq.1)ic21=ia3 endif 43 continue if(nt(ic11).eq.3)then if(nn2.eq.1.and.no2.eq.1.and.nt(io21).eq.1)then c glutamine call swallow(nat,us,iGLN,ipGLN,in21,io21,ic11, 1 ic1,ia,in,icc,ico) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,243, 1 itink) itink(ih2)=251 itink(ic1)=252 itink(ih11)=253 itink(ih12)=253 itink(ic11)=254 itink(io21)=255 itink(in21)=256 call hh(ity,1,nt,in21,bt,257,nat,itink) goto 14 endif if(nn2.eq.0.and.no2.eq.2.and.nc2.eq.0)then c glutamate call swallow(nat,us,iGLU,ipGLU,io21,io22,ic11, 1 ic1,ia,in,icc,ico) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,231, 1 itink) itink(ih2)=239 itink(ic1)=240 itink(ih11)=241 itink(ih12)=241 itink(ic11)=242 itink(io21)=243 itink(io22)=243 goto 14 endif endif if(nt(ic11).eq.4.and.nh2.eq.2)then if(nc2.eq.1)then c lysine call swallow(nat,us,iLYS,ipLYS,ic21,ih11,ih12, 1 ic1,ia,in,icc,ico) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,270,itink) itink(ih2)=278 itink(ic1)=279 call hh(ity,1,nt,ic1,bt,280,nat,itink) itink(ic11)=281 call hh(ity,1,nt,ic11,bt,282,nat,itink) itink(ic21)=283 call hh(ity,1,nt,ic21,bt,284,nat,itink) do 1004 ix4=1,nt(ic21) ia4=bt(ic21,ix4) if(ity(ia4).eq.7)then itink(ia4)=285 call hh(ity,1,nt,ia4,bt,286,nat,itink) endif 1004 continue goto 14 endif if(nc2.eq.0.and.nn2.eq.1)then if(in21.ne.in)then c arginine call swallow(nat,us,iARG,ipARG,in21,ih11,ih12, 1 ic1,ia,in,icc,ico) call inip(in,ica,icc,ihn,ico,ich,ia,ih1,286,itink) itink(ih2)=294 itink(ic1)=295 call hh(ity,1,nt,ic1,bt,296,nat,itink) itink(ic11)=297 call hh(ity,1,nt,ic11,bt,298,nat,itink) itink(in21)=299 call hh(ity,1,nt,in21,bt,300,nat,itink) do 1005 ix4=1,nt(in21) ia4=bt(in21,ix4) if(ity(ia4).eq.6.and.ia4.ne.ic11)then itink(ia4)=301 do 1006 ix5=1,nt(ia4) ia5=bt(ia4,ix5) if(ity(ia5).eq.7.and.ia5.ne.in21)then itink(ia5)=302 call hh(ity,1,nt,ia5,bt,303,nat,itink) endif 1006 continue endif 1005 continue goto 14 else c proline call swallow(nat,us,iPRO,ipPRO,in21,ih11,ih12, 1 ic1,ia,ih,icc,ico) itink(in )= 96 itink(ica)= 97 itink(icc)= 98 itink(ico)= 99 itink(ich)=100 itink(ia )=101 call hh(ity,1,nt,ia,bt,102,nat,itink) itink(ic1)=103 call hh(ity,1,nt,ic1,bt,104,nat,itink) itink(ic11)=105 call hh(ity,1,nt,ic11,bt,106,nat,itink) goto 14 endif endif endif endif endif endif endif endif 19 continue c unidentified AA residue call swallow(nat,us,ixx,ipxx,in,ica,icc, 1 ico,0,0,0,0) endif 18 continue endif 17 continue endif 16 continue endif 15 continue endif 14 continue c identify some particular molecules do 66 in=1,nat c CH3-CN: if(ity(in).eq.7.and.nt(in).eq.1)then ica=bt(in,1) if(ity(ica).eq.6.and.nt(ica).eq.2)then do 67 ixa=1,nt(ica) icc=bt(ica,ixa) if(ity(icc).eq.6.and.nt(icc).eq.4)then ich=0 do 68 ixc=1,nt(icc) ico=bt(icc,ixc) if(ity(ico).eq.1.and.nt(ico).eq.1)then ich=ich+1 if(ich.eq.1)ih1=ico if(ich.eq.2)ih2=ico if(ich.eq.3)ih3=ico endif 68 continue if(ich.eq.3)then call swallow(nat,us,iACN,ipACN,in,ica,icc, 1 ih1,ih2,ih3,in,in) endif endif 67 continue endif endif c H2O: if(ity(in).eq.8.and.nt(in).eq.2)then ih1=bt(in,1) ih2=bt(in,2) if(ity(ih1).eq.1.and.ity(ih2).eq.1) 1 call swallow(nat,us,iH2O,ipH2O,in,ih1,ih2,in,in,in,in,in) endif 66 continue if(iag.gt.0)then open(11,file='AMIDE.LST') write( 6,*)iag,' trans O = C(-C) - N(-C) - H amide groups:' write(11,*)iag,' trans O = C(-C) - N(-C) - H amide groups:' do 4 ia=1,iag write(11,6009)ia,(ipep(ia,ix),ix=1,8) 4 write(6,6009)ia,(ipep(ia,ix),ix=1,6) 6009 format(i4,4x,11i5) if(iac.eq.0)close(11) endif if(iac.gt.0)then open(11,file='AMIDE.LST') write( 6,*)iac,' cis O = C(-C) - N(-C) - H amide groups:' write(11,*)iac,' cis O = C(-C) - N(-C) - H amide groups:' do 71 ia=1,iac write(11,6009)ia,(ipec(ia,ix),ix=1,8) 71 write(6,6009)ia,(ipec(ia,ix),ix=1,6) close(11) endif if(iap.gt.0)then open(12,file='PROLINE.LST') write(6,*)iap,' proline O = C(-C) - N (amide) groups:' write(12,*)iap,' proline O = C(-C) - N (amide) groups:' do 11 ia=1,iap write(12,6009)ia,(ippp(ia,ix),ix=1,8) 11 write(6,6009)ia,(ippp(ia,ix),ix=1,3) close(12) endif if(iah.gt.0)then open(13,file='TERMINAL.LST') write(6,*)iah,' terminal O = C(-C) - NH2 amide groups:' write(13,*)iah,' terminal O = C(-C) - NH2 amide groups:' do 12 ia=1,iah write(13,6009)ia,(ipeh(ia,ix),ix=1,8) 12 write(6,6009)ia,(ipeh(ia,ix),ix=1,3) close(13) endif if(iax.gt.0)then open(14,file='UNKNOWN.LST') write(6,*)iax,' unknown O = C - N (amide) groups:' write(14,*)iax,' unknown O = C - N (amide) groups:' do 10 ia=1,iax write(14,6009)ia,(ipex(ia,ix),ix=1,8) 10 write(6,6009)ia,(ipex(ia,ix),ix=1,3) close(14) endif if(iGLY.gt.0)then open(14,file='GLY.LST') write(6,*)iGLY,' GLY residues' write(14,*)iGLY,' GLY residues' do 44 ia=1,iGLY write(14,6009)ia,(ipGLY(ia,ix),ix=1,8) 44 write(6,6009)ia,(ipGLY(ia,ix),ix=1,3) close(14) endif if(iALA.gt.0)then open(14,file='ALA.LST') write(6,*)iALA,' ALA residues' write(14,*)iALA,' ALA residues' do 45 ia=1,iALA write(14,6009)ia,(ipALA(ia,ix),ix=1,8) 45 write(6,6009)ia,(ipALA(ia,ix),ix=1,3) close(14) endif if(iVAL.gt.0)then open(14,file='VAL.LST') write(6,*)iVAL,' VAL residues' write(14,*)iVAL,' VAL residues' do 46 ia=1,iVAL write(14,6009)ia,(ipVAL(ia,ix),ix=1,8) 46 write(6,6009)ia,(ipVAL(ia,ix),ix=1,3) close(14) endif if(iLEU.gt.0)then open(14,file='LEU.LST') write(6,*)iLEU,' LEU residues' write(14,*)iLEU,' LEU residues' do 47 ia=1,iLEU write(14,6009)ia,(ipLEU(ia,ix),ix=1,8) 47 write(6,6009)ia,(ipLEU(ia,ix),ix=1,3) close(14) endif if(iILE.gt.0)then open(14,file='ILE.LST') write(6,*)iILE,' ILE residues' write(14,*)iILE,' ILE residues' do 48 ia=1,iILE write(14,6009)ia,(ipILE(ia,ix),ix=1,8) 48 write(6,6009)ia,(ipILE(ia,ix),ix=1,3) close(14) endif if(iMET.gt.0)then open(14,file='MET.LST') write(6,*)iMET,' MET residues' write(14,*)iMET,' MET residues' do 49 ia=1,iMET write(14,6009)ia,(ipMET(ia,ix),ix=1,8) 49 write(6,6009)ia,(ipMET(ia,ix),ix=1,3) close(14) endif if(iTRP.gt.0)then open(14,file='TRP.LST') write(6,*)iTRP,' TRP residues' write(14,*)iTRP,' TRP residues' do 50 ia=1,iTRP write(14,6009)ia,(ipTRP(ia,ix),ix=1,8) 50 write(6,6009)ia,(ipTRP(ia,ix),ix=1,3) close(14) endif if(iPHE.gt.0)then open(14,file='PHE.LST') write(6,*)iPHE,' PHE residues' write(14,*)iPHE,' PHE residues' do 51 ia=1,iPHE write(14,6009)ia,(ipPHE(ia,ix),ix=1,8) 51 write(6,6009)ia,(ipPHE(ia,ix),ix=1,3) close(14) endif if(iPRO.gt.0)then open(14,file='PRO.LST') write(6,*)iPRO,' PRO residues' write(14,*)iPRO,' PRO residues' do 52 ia=1,iPRO write(14,6009)ia,(ipPRO(ia,ix),ix=1,8) 52 write(6,6009)ia,(ipPRO(ia,ix),ix=1,3) close(14) endif if(iSER.gt.0)then open(14,file='SER.LST') write(6,*)iSER,' SER residues' write(14,*)iSER,' SER residues' do 53 ia=1,iSER write(14,6009)ia,(ipSER(ia,ix),ix=1,8) 53 write(6,6009)ia,(ipSER(ia,ix),ix=1,3) close(14) endif if(iTHR.gt.0)then open(14,file='THR.LST') write(6,*)iTHR,' THR residues' write(14,*)iTHR,' THR residues' do 54 ia=1,iTHR write(14,6009)ia,(ipTHR(ia,ix),ix=1,8) 54 write(6,6009)ia,(ipTHR(ia,ix),ix=1,3) close(14) endif if(iCYS.gt.0)then open(14,file='CYS.LST') write(6,*)iCYS,' CYS residues' write(14,*)iCYS,' CYS residues' do 55 ia=1,iCYS write(14,6009)ia,(ipCYS(ia,ix),ix=1,8) 55 write(6,6009)ia,(ipCYS(ia,ix),ix=1,3) close(14) endif if(iTYR.gt.0)then open(14,file='TYR.LST') write(6,*)iTYR,' TYR residues' write(14,*)iTYR,' TYR residues' do 56 ia=1,iTYR write(14,6009)ia,(ipTYR(ia,ix),ix=1,8) 56 write(6,6009)ia,(ipTYR(ia,ix),ix=1,3) close(14) endif if(iASN.gt.0)then open(14,file='ASN.LST') write(6,*)iASN,' ASN residues' write(14,*)iASN,' ASN residues' do 57 ia=1,iASN write(14,6009)ia,(ipASN(ia,ix),ix=1,8) 57 write(6,6009)ia,(ipASN(ia,ix),ix=1,3) close(14) endif if(iGLN.gt.0)then open(14,file='GLN.LST') write(6,*)iGLN,' GLN residues' write(14,*)iGLN,' GLN residues' do 58 ia=1,iGLN write(14,6009)ia,(ipGLN(ia,ix),ix=1,8) 58 write(6,6009)ia,(ipGLN(ia,ix),ix=1,3) close(14) endif if(iASP.gt.0)then open(14,file='ASP.LST') write(6,*)iASP,' ASP residues' write(14,*)iASP,' ASP residues' do 59 ia=1,iASP write(14,6009)ia,(ipASP(ia,ix),ix=1,8) 59 write(6,6009)ia,(ipASP(ia,ix),ix=1,3) close(14) endif if(iGLU.gt.0)then open(14,file='GLU.LST') write(6,*)iGLU,' GLU residues' write(14,*)iGLU,' GLU residues' do 60 ia=1,iGLU write(14,6009)ia,(ipGLU(ia,ix),ix=1,8) 60 write(6,6009)ia,(ipGLU(ia,ix),ix=1,3) close(14) endif if(iLYS.gt.0)then open(14,file='LYS.LST') write(6,*)iLYS,' LYS residues' write(14,*)iLYS,' LYS residues' do 61 ia=1,iLYS write(14,6009)ia,(ipLYS(ia,ix),ix=1,8) 61 write(6,6009)ia,(ipLYS(ia,ix),ix=1,3) close(14) endif if(iARG.gt.0)then open(14,file='ARG.LST') write(6,*)iARG,' ARG residues' write(14,*)iARG,' ARG residues' do 62 ia=1,iARG write(14,6009)ia,(ipARG(ia,ix),ix=1,8) 62 write(6,6009)ia,(ipARG(ia,ix),ix=1,3) close(14) endif if(iHIS.gt.0)then open(14,file='HIS.LST') write(6,*)iHIS,' HIS residues' write(14,*)iHIS,' HIS residues' do 63 ia=1,iHIS write(14,6009)ia,(ipHIS(ia,ix),ix=1,8) 63 write(6,6009)ia,(ipHIS(ia,ix),ix=1,3) close(14) endif if(ixx.gt.0)then open(14,file='XXX.LST') write(6,*)ixx,' uknown AA residues' write(14,*)ixx,'uknown AA residues' do 64 ia=1,ixx write(14,6009)ia,(ipxx(ia,ix),ix=1,8) 64 write(6,6009)ia,(ipxx(ia,ix),ix=1,3) close(14) endif if(ib.gt.0)write(6,*)ib,' bases:' if(id.gt.0)then open(15,file='ADENINE.LST') write( 6,*)id,' adenines:' write(15,*)id,' adenines:' do 5 ia=1,id write(15,6009)ia,(iad(ia,ix),ix=1,8) 5 write(6,6009)ia,(iad(ia,ix),ix=1,6) close(15) endif if(ith.gt.0)then open(16,file='THYMINE.LST') write(6,*)ith,' thymines:' write(16,*)ith,' thymines:' do 6 ia=1,ith write(16,6009)ia,(itym(ia,ix),ix=1,8) 6 write(6,6009)ia,(itym(ia,ix),ix=1,6) close(16) endif if(iy.gt.0)then open(17,file='CYTOSINE.LST') write(6,*)iy,' cytosines:' write(17,*)iy,' cytosines:' do 7 ia=1,iy write(17,6009)ia,(icy(ia,ix),ix=1,8) 7 write(6,6009)ia,(icy(ia,ix),ix=1,6) close(17) endif if(iq.gt.0)then open(18,file='GUANINE.LST') write(6,*)iq,' guanines:' write(18,*)iq,' guanines:' do 8 ia=1,iq write(18,6009)ia,(iqua(ia,ix),ix=1,8) 8 write(6,6009)ia,(iqua(ia,ix),ix=1,6) close(18) endif if(iACN.gt.0)then open(18,file='ACN.LST') write( 6,*)iACN,' ACN' write(18,*)iACN,' ACN' do 69 ia=1,iACN write(18,6009)ia,(ipACN(ia,ix),ix=1,6) 69 write( 6,6009)ia,(ipACN(ia,ix),ix=1,6) close(18) endif if(iH2O.gt.0)then open(18,file='H2O.LST') write( 6,*)iH2O,' H2O' write(18,*)iH2O,' H2O' do 70 ia=1,iH2O write(18,6009)ia,(ipH2O(ia,ix),ix=1,3) 70 write( 6,6009)ia,(ipH2O(ia,ix),ix=1,3) close(18) endif if(ipo.gt.0)then open(18,file='SPO.LST') write( 6,*)ipo,' SPO' write(18,*)ipo,' SPO' do 83 ia=1,ipo write(18,6009)ia,(ipp(ia,ix),ix=1,11) 83 write( 6,6009)ia,(ipp(ia,ix),ix=1,11) close(18) endif call wrtinker(nat,r,itink,bt,nt,tt) call readopt(LO,LF,DL,DW,lwrt,epsin,epsout,lhb,lala,ldna,LSS, 1rdist,lmin,lper,px,py,pz) if(LO.ne.0)then if(ldna)then call dnpieces(ipo,ipp,nat,LO,LF,DL,nt,bt,lwrt,ity,r, 1epsin,epsout,DW,lhb,rdist,lmin,lper,px,py,pz) else call dopieces(iag,ipep,nat,LO,LF,DL,nt,bt,lwrt,ity,r,ipeh, 1ippp,iah,iap,iASN,ipASN,iGLN,ipGLN,iac,ipec,epsin,epsout,DW, 1lhb,lala,LSS,rdist,lmin,lper,px,py,pz) endif endif end subroutine dnpieces(iag,ipep,nat,LO,LF,DL,nt,bt,lwrt,ity,r, 1epsin,epsout,DW,lhb,rdist,lmin,lper,px,py,pz) c make fragments for CCT c 1 nucleci acids c find terminal phosphate c loop over SP residues implicit none integer*4 ia,iag,nat,ipep(nat,11),ntree,ity(*),io10,io11, 1ifr,LO,LF,ifa,igc,ift,ix,infa,ic,nt(*),bt(nat,7),i, 1iagg,ifrs,afrs,ib,iro,icx,nme,nextra,istart,iaa, 1fri,fra,ifri,ifra,nh1,nh2 real*8 DL,xh1(3),xh2(3),r(*),cm(3),epsin,epsout,DW,rdist(*), 1px,py,pz integer*4,allocatable::iant(:),tree(:),iaff(:),nati(:), 1ipt(:),iind(:),iz(:),iextra(:),indextra(:), 1ngleft(:),ngright(:),iact(:),nts(:),bts(:,:) real*8,allocatable::xf(:),xextra(:) logical lwrt,mcap,lhb,lmin,lper allocate(iant(nat),tree(nat),iact(nat),iaff(nat),nati(nat), 1ipt(nat),xf(3*nat),iind(nat),iz(nat),xextra(nat),nts(nat), 1iextra(nat),indextra(nat),ngleft(nat),ngright(nat),bts(nat,7)) c c iagg - number of all recognized amide groups: c ipt - type of amide group c ipt: c number of ordinary amide groups: iag 1 c number of terminal amide groups: iah 2 c number of proline amide groups: iap 3 c number of strange amide groups: iax 4 c c pre calculate center of the whole molecule: call gcenter(r,cm,nat) c c iag ... number of SP residues c SP group types, group on left and right: if(lwrt)write(6,6001) 6001 format(' SP group type group on L-end group on R-end ') do 101 ia=1,iag ngleft(ia)=0 ngright(ia)=0 do 102 iaa=1,iag if(iaa.ne.ia)then if(ipep(ia,10).eq.ipep(iaa,11))ngright(ia)=iaa if(ipep(ia,11).eq.ipep(iaa,10))ngleft(ia)=iaa endif 102 continue if(ngright(ia).eq.0.and.ngleft(ia).ne.0)then ipt(ia)=0 iant(ia)=0 else ipt(ia)=1 iant(ia)=1 endif 101 if(lwrt)write(6,6002)ia,ipt(ia),ngleft(ia),ngright(ia) 6002 format(4i12) c number of atoms bound to left and right: if(lwrt)write(6,6003) 6003 format(' SP group type L-end R-end (to SP gr. #)') c add O-P O O -O C H H C C O c 11 1 2 3 4 5 6 7 8 9 10 c "left" "right" do 1 ia=1,iag io10=ipep(ia,10) io11=ipep(ia,11) iant(ia)=0 iact(ia)=0 iaff(ia)=0 do 107 ib=1,iag if(ib.ne.ia)then if(io11.eq.ipep(ib,10))iant(ia)=io11 if(io10.eq.ipep(ib,11))then iact(ia)=io10 iaff(ia)=ib endif endif 107 continue 1 if(lwrt)write(6,6303)ia,ipt(ia),iant(ia),iact(ia),iaff(ia) 6303 format(4i12,'(',i4,')') c ifr ... number of fragments ifr=0 c ifrs .. number of saved fragments ifrs=0 afrs=0 fri=0 fra=0 ifri=0 ifra=0 iagg=iag nh1=0 nh2=0 do 2 ia=1,iagg if(iant(ia).eq.0)then c N-terminal is free, initiate chain and fragmentation: c c initiate fragment ifr+1: c istart,ia: initial AK: c ift number of atoms in this fragment c ifa number of SP groups in the fragment c nme indicate methyl added c nextra extra atoms c mcap cap N-end by Me call inifr(ifr,istart,ia,ift,ifa,nme,nextra,lwrt,mcap,iind, 1 nat) c igc,ia current group to add: igc=ia 3333 ifa=ifa+1 if(lwrt)write(6,*)'added SP number ',igc,':' c nati atom list in the fragment: c O C c | | c add O-P O O -O C H H - C C - O - c 11 1 2 3 4 5 6 7 8 9 10 c "left" "right" do 3 ix=1,11 c if(ngright(igc).ne.0.and.ngleft(igc).ne.0.and.ix.eq.11)then c if it still continues, do not take ix=10 from here if(ngright(igc).ne.0.and.ix.eq.10. 1 and.ifa.lt.LF)then if(lwrt)write(6,*)ipep(igc,ix),' O skipped' else call attofr(ift,nati,ipep(igc,ix),'SP',lwrt) endif 3 continue if(ngleft(igc).eq.0)then c left terminal, add whatever is hanging on O left call createtree(ipep(igc,1),ipep(igc,11),ipep(igc,5), 1 tree,ntree,nt,bt,nat,ity,nextra,xextra,iextra,indextra,r,lwrt, 2 rdist) do 4 ix=1,ntree 4 call attofr(ift,nati,tree(ix),'L-terminal',lwrt) else if(ifa.eq.1)then c first group of a continuation fragment c temporary bond table call asbt(nat,nts,nt,bts,bt) c break bond ia5 (CH2)- ia4' (O) call brkb(ipep(ngleft(igc),5),ipep(ngleft(igc),4),nts,nat,bts) c left residue call createtree(ipep(igc,1),ipep(igc,11),ipep(igc,11),tree, 1 ntree,nts,bts,nat,ity,nextra,xextra,iextra,indextra,r,lwrt, 2 rdist) do 5 ix=1,ntree 5 call attofr(ift,nati,tree(ix),'L-residue',lwrt) c cap with hydrogen call hethyl(ipep(ngleft(igc),5),ipep(ngleft(igc),4),r,xh1) nh1=nh1+1 endif endif if(ngright(igc).eq.0)then c right terminal, add whatever is hanging on O right call createtree(ipep(igc,4),ipep(igc,5),ipep(igc,5), 1 tree,ntree,nt,bt,nat,ity,nextra,xextra,iextra,indextra,r,lwrt, 2 rdist) c delete atoms already included in SP: call purify(tree,ntree,ipep,nat,igc) c add rest to the fragment: do 41 ix=1,ntree 41 call attofr(ift,nati,tree(ix),'R-terminal',lwrt) else c add the sugar-base rest - hanging on ia8 c temporary bondtable call asbt(nat,nts,nt,bts,bt) c break bond C(i9)-C do 6 ix=1,nts(ipep(igc,9)) icx=bts(ipep(igc,9),ix) if(ity(icx).eq.6.and.icx.ne.ipep(igc,8))then call brkb(ipep(igc,9),icx,nts,nat,bts) goto 8 endif 6 continue c add hydrogen on C(9) 8 do 9 ix=1,nts(ipep(igc,9)) icx=bts(ipep(igc,9),ix) 9 if(ity(icx).eq.1)call attofr(ift,nati,icx,'H(C9)',lwrt) c add hydrogen on C(8) do 10 ix=1,nts(ipep(igc,8)) icx=bts(ipep(igc,8),ix) 10 if(ity(icx).eq.1)call attofr(ift,nati,icx,'H(C8)',lwrt) c find sugar ring o iro=0 do 11 ix=1,nts(ipep(igc,8)) icx=bts(ipep(igc,8),ix) 11 if(ity(icx).eq.8)iro=icx call attofr(ift,nati,iro,'R-residue - sugar ring O',lwrt) c add whatever is hanging on C8-O: if(iro.ne.0)call createtree(ipep(igc,8),iro,ipep(igc,8), 1 tree,ntree,nts,bts,nat,ity,nextra,xextra,iextra,indextra,r,lwrt, 2 rdist) do 42 ix=1,ntree 42 call attofr(ift,nati,tree(ix),'R-residue',lwrt) if(ifa.lt.LF)then c the fragment is still short, try to add c following amide group c number of the next SP group: infa=ngright(igc) if(infa.eq.0)then write(6,*)'this fragment cannot be continued' goto 2 else if(lwrt)write(6,*)'continuing with group # ',infa endif c move to next SP group: igc=infa goto 3333 else c fragment is already long enough, terminate if(lwrt)write(6,*)'fragment is long enough, terminating',infa do 14 i=1,nat if(ity(i).eq.15)then do 15 ix=1,nt(i) if(bt(i,ix).eq.ipep(igc,10))then call hethyl(ipep(igc,10),i,r,xh2) nh2=nh2+1 endif 15 continue endif 14 continue goto 222 endif c ifa0 endif c iant(igc)=0 2 continue write(6,6005)ifrs,afrs/ifrs,ifri,fri,ifra,fra 6005 format(/,/,i10,' fragments saved, average size: ',i10,' atoms',/, 110x,' smallest fragment:',i5,' (',i5,' atoms)',/, 110x,' biggest fragment:',i5,' (',i5,' atoms)') if(DL.ne.0.0d0)then call contacts(ifrs,iind,nat,DL,r,lwrt,nt,bt,ity, 1 fra,fri,ifra,ifri,afrs, 1 nextra,xextra,iextra,indextra,xf,iz,cm,epsin,epsout,DW,lhb, 1 rdist,lmin,lper,px,py,pz) write(6,*)' final statistics:' write(6,6005)ifrs,afrs/ifrs,ifri,fri,ifra,fra endif return end subroutine dopieces(iag,ipep,nat,LO,LF,DL,nt,bt,lwrt,ity,r, 1ipeh,ippp,iah,iap,iASN,ipASN,iGLN,ipGLN,iac,ipec,epsin,epsout,DW, 1lhb,lala,LSS,rdist,lmin,lper,px,py,pz) c make fragments for CCT c 1 peptide c find terminal aminogroup c loop over amide groups implicit none integer*4 ia,iag,nat,ipep(nat,8),ica,icn,ntree,ib,ity(*), 1ifr,LO,LF,ifa,igc,ift,ix,infa,ih,ic,nt(*),bt(nat,7),ia1,i, 1iah,iap,ipeh(nat,8),ippp(nat,8),iagg,iASN,iGLN,ih2,ifrs,afrs, 1ipASN(nat,8),ipGLN(nat,8),ia6,ia7,in,nme,nextra,istart, 1fri,fra,ifri,ifra,iac,ipec(nat,8),nats,ipro,iy,ii,izz,jj,kk,iw,iu real*8 DL,xc(3),xh1(3),xh2(3),xh3(3),r(*),cm(3),epsin,epsout,DW, 1rdist(*),px,py,pz integer*4,allocatable::iact(:),iant(:),tree(:),iaff(:),nati(:), 1itpp(:,:),ipt(:),iind(:),iz(:),iextra(:),indextra(:),nt_s(:), 1bt_s(:,:),ity_s(:),i_s(:),u_s(:) real*8,allocatable::xf(:),xextra(:),r_s(:) logical lwrt,mcap,lhb,lala,LSS,lmin,lper allocate(iact(nat),iant(nat),tree(nat),iaff(nat),nati(nat), 1itpp(nat,8),ipt(nat),xf(3*nat),iind(nat),iz(nat),xextra(nat), 1iextra(nat),indextra(nat)) c c iagg - number of all recognized amide groups: c ipt - type of amide group c ipt: c number of ordinary amide groups: iag 1 c number of terminal amide groups: iah 2 c number of proline amide groups: iap 3 c number of strange amide groups: iax 4 c number of cis amide groups: iac c c pre calculate center of the whole molecule: call gcenter(r,cm,nat) c c if all-alanine geometry requested, make a "shadow" copy of geometry: if(lala)then nats=nat allocate(r_s(3*nat*2),nt_s(nat*2),ity_s(nat*2),bt_s(nat*2,7), 1 i_s(nat*2),u_s(2*nat)) do 113 i=1,3*nat 113 r_s(i)=r(i) do 114 ia=1,nat i_s(ia)=ia u_s(ia)=1 ity_s(ia)=ity(ia) nt_s(ia)=nt(ia) do 114 ix=1,7 114 bt_s(ia,ix)=bt(ia,ix) write(6,*)'shadow copy of geometry created' endif c c put all amide groups together (skip strange): iagg=0 do 101 ia=1,iag iagg=iagg+1 do 102 ix=1,8 102 itpp(iagg,ix)=ipep(ia,ix) 101 ipt(iagg)=1 do 111 ia=1,iac iagg=iagg+1 do 112 ix=1,8 112 itpp(iagg,ix)=ipec(ia,ix) 111 ipt(iagg)=1 do 103 ia=1,iah c exclude side chains of GLN and ASN: do 109 ib=1,iASN 109 if(ipeh(ia,2).eq.ipASN(ib,1))goto 103 do 108 ib=1,iGLN 108 if(ipeh(ia,2).eq.ipGLN(ib,3))goto 103 c double check for GLN,ASN (now also including terminal): ia6=ipep(ia,6) in=0 do 110 ix=1,nt(ia6) ia7=bt(ia6,ix) 110 if(ia7.eq.7)in=1 if(in.eq.0)goto 103 iagg=iagg+1 do 104 ix=1,8 write(6,*)'term',ipeh(ia,ix) 104 itpp(iagg,ix)=ipeh(ia,ix) ipt(iagg)=2 103 continue do 105 ia=1,iap iagg=iagg+1 do 106 ix=1,8 106 itpp(iagg,ix)=ippp(ia,ix) 105 ipt(iagg)=3 c find if amide groups continues if(lwrt)write(6,6001) 6001 format(' aminogroup type N-end C-end (to am.gr. #)') do 1 ia=1,iagg c c-alpha and C on nitrogen: ica=itpp(ia,6) icn=itpp(ia,5) c c C(5) - N(3)H(4) - [c(2)=O(1)] - c(6) - c icn ica c (iant) (iact) c continuation on N and C ends: c iant(ia)=0 iact(ia)=0 iaff(ia)=0 do 107 ib=1,iagg if(ib.ne.ia)then if(icn.eq.itpp(ib,6))iant(ia)=icn if(ica.eq.itpp(ib,5))then iact(ia)=ica iaff(ia)=ib endif endif 107 continue 1 if(lwrt)write(6,6002)ia,ipt(ia),iant(ia),iact(ia),iaff(ia) 6002 format(4i12,'(',i4,')') c ifr ... number of fragments ifr=0 c ifrs .. number of saved fragments ifrs=0 afrs=0 fri=0 fra=0 ifri=0 ifra=0 do 2 ia=1,iagg if(iant(ia).eq.0)then c N-terminal is free, initiate chain and fragmentation: c c initiate fragment ifr+1: c istart,ia: initial AK: c ift number of atoms in this fragment c ifa number of amide groups in the fragment c nme indicate methyl added c nextra extra atoms c mcap cap N-end by Me call inifr(ifr,istart,ia,ift,ifa,nme,nextra,lwrt,mcap,iind, 1 nat) c igc,ia current amide group to add: igc=ia 3333 ifa=ifa+1 if(lwrt)write(6,*)'added amide number ',igc,':' c nati atom list in the fragment: c add C-(N-H)-C=O-C c 5 3 4 2 1 6 do 3 ix=1,6 if(ix.eq.4.and. 1 ity(itpp(igc,4)).eq.6.and.iant(igc).ne.0.and.mcap)then c for terminal proline, change C4 to H: call xhchange(itpp(igc,3),itpp(igc,4),r,xh1) call incrextra(iextra,xextra,nextra,xh1,1,indextra,0) if(lwrt)write(6,*)' C on N replaced by H' else if(ix.eq.5.and.iant(igc).ne.0.and.mcap)then if(lwrt)write(6,*)' C on N will be replaced by Me' else if(ifa.gt.1.and.ix.eq.5)then write(6,*)itpp(igc,ix),' alpha skipped' else c C-delta of proline, skipped if added as a side chain c from preceeding amide group: if(ix.eq.4.and.ity(itpp(igc,4)).eq.6.and.ifa.gt.1)then goto 3 else call attofr(ift,nati,itpp(igc,ix),'amide',lwrt) endif endif endif endif 3 continue if(iant(igc).eq.0)then c for N-terminal add whatever is hanging on N if(ipt(igc).eq.3)then c proline at the end: call createtreep(itpp(igc,3),itpp(igc,5),itpp(igc,5), 1 tree,ntree,nt,bt,nat,ity,nextra,xextra,iextra,indextra,r,lwrt, 2 rdist) else call createtree(itpp(igc,3),itpp(igc,5),itpp(igc,5), 1 tree,ntree,nt,bt,nat,ity,nextra,xextra,iextra,indextra,r,lwrt, 2 rdist) endif do 4 ix=1,ntree 4 call attofr(ift,nati,tree(ix),'N-terminal',lwrt) else if(mcap)then c cap N-terminal by methyl: call methyl(itpp(igc,4),itpp(igc,3),itpp(igc,5), 1 nt,bt,nat,r,xc,xh1,xh2,xh3,2,rdist) call incrextra(iextra,xextra,nextra,xc ,6,indextra,0) call incrextra(iextra,xextra,nextra,xh1,1,indextra,0) call incrextra(iextra,xextra,nextra,xh2,1,indextra,0) call incrextra(iextra,xextra,nextra,xh3,1,indextra,0) if(lwrt)write(6,*)'4 atoms as methyl on N-terminus' mcap=.false. endif endif if(iact(igc).eq.0)then c add whatever is hanging on C and terminate fragment building call createtree(itpp(igc,2),itpp(igc,6),itpp(igc,3), 1 tree,ntree,nt,bt,nat,ity,nextra,xextra,iextra,indextra,r,lwrt, 2 rdist) do 5 ix=1,ntree 5 call attofr(ift,nati,tree(ix),'C-terminal',lwrt) goto 222 else if(ifa.lt.LF)then c the fragment is still short, try to add side chain and c following amide group c number of the following aminoacid: infa=iaff(igc) if(infa.eq.0)then write(6,*)'this fragment cannot be continued' goto 2 endif c identify H_alpha and side chain initiation(or another H_alpha) ih=0 ih2=0 ic=0 in=0 do 6 ix=1,nt(itpp(igc,6)) ia1=bt(itpp(igc,6),ix) if(ia1.ne.itpp(igc,2))then if(ity(ia1).eq.6)ic=ia1 if(ity(ia1).eq.7)in=ia1 if(ity(ia1).eq.1)then if(ih.eq.0)then ih=ia1 else ih2=ia1 endif endif endif 6 continue call attofr(ift,nati,ih ,'H_alpha',lwrt) call attofr(ift,nati,ih2,'H2_alpha',lwrt) call attofr(ift,nati,ic,'C_beta',lwrt) if(ic.ne.0)then c add also whatever is hanging on C call createtree(itpp(igc,6),ic,in,tree,ntree,nt,bt,nat,ity, 2 nextra,xextra,iextra,indextra,r,lwrt,rdist) do 7 ix=1,ntree 7 call attofr(ift,nati,tree(ix),'side chain',lwrt) endif c c replace side chain by methyl in the shadow geometry: c divide this if to ensure that u_s is allocated if(lala)then if(ic.ne.0.and.u_s(ic).eq.1)then c c marked already used C_beta as used atom: u_s(ic)=0 c if already ala, do not do anything: ix=0 do 118 i=1,nt(ic) 118 if(ity(bt(ic,i)).eq.1)ix=ix+1 ipro=0 c if prolin on ic, do not do anything: do 122 ix=1,nt(ic) iy=bt(ic,ix) if(iy.ne.itpp(igc,6).and.ity(iy).eq.6)then do 123 ii=1,nt(iy) izz=bt(iy,ii) if(izz.ne.ic.and.ity(izz).eq.6)then do 124 jj=1,nt(izz) iu=bt(izz,jj) if(ity(iu).eq.7.and.iu.ne.iy)then do 125 kk=1,nt(iu) iw=bt(iu,kk) 125 if(iw.eq.itpp(igc,6))ipro=1 endif 124 continue endif 123 continue endif 122 continue if(ipro.eq.1)then write(6,*)' proline left unchanged' endif if(ix.ne.3.and.ipro.eq.0)then do 115 ix=1,ntree if(lwrt)write(6,*)tree(ix),' deleted from shadow geometry' call del_shadow(nat,nats,tree(ix),i_s,r_s,nt_s,bt_s,ity_s) 115 continue call del_shadow(nat,nats,ic,i_s,r_s,nt_s,bt_s,ity_s) if(lwrt)write(6,*)ic,' deleted from shadow geometry' call methyl(itpp(igc,2), 1 itpp(igc,6),ic,nt,bt,nat,r,xc,xh1,xh2,xh3,1,rdist) c find to which shadow atom is the methyl carbon bonded: do 116 i=1,nats 116 if(i_s(i).eq.itpp(igc,6))goto 117 goto 1171 117 write(6,*)nats call add_shadow(nat,nats,i,xc ,6,i_s,r_s,nt_s,bt_s,ity_s) if(lwrt)write(6,*)'c on ',i,' added to shadow geometry' i=nats call add_shadow(nat,nats,i,xh1,1,i_s,r_s,nt_s,bt_s,ity_s) if(lwrt)write(6,*)'h',' added to shadow geometry' call add_shadow(nat,nats,i,xh2,1,i_s,r_s,nt_s,bt_s,ity_s) if(lwrt)write(6,*)'h',' added to shadow geometry' call add_shadow(nat,nats,i,xh3,1,i_s,r_s,nt_s,bt_s,ity_s) if(lwrt)write(6,*)'h',' added to shadow geometry' 1171 write(6,*)'ca for methyl not found' if(lwrt)write(6,*)nats,' shadow atoms' endif c open(9,file='SHADOW.X') c write(9,*)' alanine-like peptide' c write(9,*)nats c do 121 i=1,nats c21 write(9,901)ity_s(i),(r_s(j+3*(i-1)),j=1,3), c 1 (bt_s(i,j),j=1,7),0.0d0 c close(9) c write(6,*)'SHADOW.X written, ',nats,' atoms' endif endif c move to next amide group: igc=infa goto 3333 else c fragment is already long enough, terminate call methyl(itpp(igc,1),itpp(igc,2),itpp(igc,6), 1 nt,bt,nat,r,xc,xh1,xh2,xh3,1,rdist) nme=1 goto 222 endif c ifa0 endif c iant(igc)=0 2 continue write(6,6005)ifrs,afrs/ifrs,ifri,fri,ifra,fra 6005 format(/,/,i10,' fragments saved, average size: ',i10,' atoms',/, 110x,' smallest fragment:',i5,' (',i5,' atoms)',/, 110x,' biggest fragment:',i5,' (',i5,' atoms)') if(LSS)then call ss(ifrs,iind,nat,r,lwrt,nt,bt,ity,fra,fri,ifra,ifri,afrs, 1 nextra,xextra,iextra,indextra,xf,iz,cm,epsin,epsout,DW,lhb, 2 rdist,lmin,lper,px,py,pz) write(6,*)' statistics after SS:' write(6,6005)ifrs,afrs/ifrs,ifri,fri,ifra,fra endif if(DL.ne.0.0d0)then call contacts(ifrs,iind,nat,DL,r,lwrt,nt,bt,ity,fra,fri,ifra, 1 ifri,afrs,nextra,xextra,iextra,indextra,xf,iz,cm,epsin,epsout, 2 DW,lhb,rdist,lmin,lper,px,py,pz) write(6,*)' final statistics:' write(6,6005)ifrs,afrs/ifrs,ifri,fri,ifra,fra endif if(lala.and.nats.gt.0)then open(9,file='SHADOW.X') write(9,*)' alanine-like peptide' write(9,*)nats do 120 i=1,nats 120 write(9,901)ity_s(i),(r_s(ix+3*(i-1)),ix=1,3), 1 (bt_s(i,ix),ix=1,7),0.0d0 901 format(i4,3f12.6,7i7,f4.1) close(9) write(6,*)'SHADOW.X written, ',nats,' atoms' endif return end subroutine epsfr(ifr,ift,xf,nat,r,cm,epsin,epsout) c estimate relative distance of the fragment from the center, c to get approximate hydration implicit none integer*4 ifr,ift,istart,iend,nat real*8 xf(*),r(*),cm(3),cf(3),dsurf,s1,s2,epsin,epsout,eps character*10 s10 c get fragment center: call gcenter(xf,cf,ift) c distance of fragment to the surface: s1=dsurf(r,nat,cf) c distance of mass center to the surface: s2=dsurf(r,nat,cm) if(s2.eq.0)then eps=epsout else eps=(epsin-epsout)*(s1-s2)/s2+epsin endif write(s10,10)ifr 10 format(i10) do 1 istart=1,len(s10) 1 if(s10(istart:istart).ne.' ')goto 2 2 do 3 iend=len(s10),1,-1 3 if(s10(iend:iend).ne.' ')goto 4 4 open(10,file=s10(istart:iend)//'.fr.eps') write(10,100)eps,ifr,s1,s2 100 format(f6.2,' = relative permitivity of fragment ',i4,/, 1' distance from surface:', f10.2,' A (center: ',f10.2,' A)') close(10) return end function dsurf(r,nat,c) c distance of vector c from the surface implicit none integer*4 nat,i6,n6,ix,ir,ia,irt parameter (n6=6) real*8 r(*),c(*),d(n6,3),dr,sp,rd,dsurf,x1,x2,x3,drt do 1 ix=1,3 do 1 i6=1,n6 1 d(i6,ix)=0.0d0 d(1,1)= 1.0d0 d(2,1)=-1.0d0 d(3,2)= 1.0d0 d(4,2)=-1.0d0 d(5,3)= 1.0d0 d(6,3)=-1.0d0 irt=0 drt=0.0d0 c investigate 6 directions: do 2 i6=1,n6 c find which atom in this direction is most remote from the center: ir=0 dr=0.0d0 do 3 ia=1,nat x1=r(1+(ia-1)*3)-c(1) x2=r(2+(ia-1)*3)-c(2) x3=r(3+(ia-1)*3)-c(3) sp=x1*d(i6,1)+x2*d(i6,2)+x3*d(i6,3) if(sp.gt.0.0d0)then rd=dsqrt(x1*x1+x2*x2+x3*x3) if(rd.gt.0.0d0)then c alpha < 45 deg ... cos alpha > sqrt(2): if(sp/rd.gt.0.70710678d0)then if(rd.gt.dr)then ir=ia dr=rd endif endif endif endif 3 continue if(irt.eq.0.or.dr.lt.drt)then drt=dr irt=ir endif 2 continue if(ir.eq.0)then dsurf=0.0d0 else dsurf=dr endif return end subroutine hydfr(ifr,ift,xf,iind,iz,nat,r,DW,ity,bt,nt,lhb,lper, 1px,py,pz) c hydrate fragment ifr with close water molecules implicit none integer*4 ifr,iind(*),ift,ia,iz(*),nat,ity(*),bt(nat,7),nt(*), 1i1,i2,io,iw,i,ic real*8 xf(*),DW,d2,r(*),x,y,z,xo,yo,zo,x1,y1,z1,x2,y2,z2,px,py,pz logical lper,lhb,lf if(DW.eq.0.0d0)return d2=DW**2 iw=0 do 5 ia=1,ift x=xf(1+3*(ia-1)) y=xf(2+3*(ia-1)) z=xf(3+3*(ia-1)) if(lhb)then c find if this atom can make hydrogen bonds: if(iz(ia).eq.7.or.iz(ia).eq.8.or.iz(ia).eq.9.or. 1 iz(ia).eq.15.or.iz(ia).eq.16.or.iz(ia).eq.17.or. 1 iz(ia).eq.35.or.iz(ia).eq.53)goto 1 if(iz(ia).eq.1)then do 3 io=1,nat 3 if(iind(io).eq.ia)goto 2 2 if(nt(io).eq.1)then io=bt(io,1) if(iz(io).eq.7.or.iz(io).eq.8.or.iz(io).eq.9.or. 1 iz(io).eq.15.or.iz(io).eq.16.or.iz(io).eq.17.or. 1 iz(io).eq.35.or.iz(io).eq.53)goto 1 endif endif goto 5 endif 1 do 51 io=1,nat if(ity(io).eq.8.and.nt(io).eq.2)then i1=bt(io,1) i2=bt(io,2) if(ity(i1).eq.1.and.ity(i2).eq.1)then xo=r(1+3*(io-1)) yo=r(2+3*(io-1)) zo=r(3+3*(io-1)) x1=r(1+3*(i1-1)) y1=r(2+3*(i1-1)) z1=r(3+3*(i1-1)) x2=r(1+3*(i2-1)) y2=r(2+3*(i2-1)) z2=r(3+3*(i2-1)) if(lf(x,y,z,xo,yo,zo,x1,y1,z1,x2,y2,z2,lper,px,py,pz,d2))then c c check duplicities ic=0 do 6 i=1,iw 6 if((xf(1+3*(ift+(i-1)*3+1-1))-xo)**2+ 1 (xf(2+3*(ift+(i-1)*3+1-1))-yo)**2+ 2 (xf(3+3*(ift+(i-1)*3+1-1))-zo)**2.lt.1.0d-10)ic=ic+1 if(ic.eq.0)then xf(1+3*(ift+iw*3+1-1))=xo xf(2+3*(ift+iw*3+1-1))=yo xf(3+3*(ift+iw*3+1-1))=zo xf(1+3*(ift+iw*3+2-1))=x1 xf(2+3*(ift+iw*3+2-1))=y1 xf(3+3*(ift+iw*3+2-1))=z1 xf(1+3*(ift+iw*3+3-1))=x2 xf(2+3*(ift+iw*3+3-1))=y2 xf(3+3*(ift+iw*3+3-1))=z2 iz(ift+iw*3+1)=ity(io) iz(ift+iw*3+2)=ity(i1) iz(ift+iw*3+3)=ity(i2) iind(io)=ift+iw*3+1 iind(i1)=ift+iw*3+2 iind(i2)=ift+iw*3+3 iw=iw+1 endif endif endif endif 51 continue 5 continue c write(6,100)iw,ifr 100 format(i6,' water molecules added to fragment ',i4) ift=ift+3*iw return end function lf(x,y,z,xo,yo,zo,x1,y1,z1,x2,y2,z2,l,px,py,pz,d) implicit none logical l,lf integer*4 ix,iy,iz,nc real*8 x,y,z,xo,yo,zo,x1,y1,z1,x2,y2,z2,px,py,pz,d,xt,yt,zt, 1dx,dy,dz if(l)then nc=1 else nc=0 endif do 1 ix = -nc,nc dx=dble(ix)*px xt=x+dx do 1 iy = -nc,nc dy=dble(iy)*py yt=y+dy do 1 iz = -nc,nc dz=dble(iz)*pz zt=z+dz if((xo-xt)**2+(yo-yt)**2+(zo-zt)**2.lt.d.and. 1 (x1-xt)**2+(y1-yt)**2+(z1-zt)**2.lt.d.and. 1 (x2-xt)**2+(y2-yt)**2+(z2-zt)**2.lt.d)then lf=.true. xo=xo-dx yo=yo-dy zo=zo-dz x1=x1-dx y1=y1-dy z1=z1-dz x2=x2-dx y2=y2-dy z2=z2-dz return endif 1 continue lf=.false. return end subroutine savefr(ifr,ift,xf,iind,iz,nat,lmin) implicit none integer*4 ifr,iind(*),ift,istart,iend,ia,ix,iz(*),nat,ns,nc1 logical lmin real*8 xf(*) character*10 s10 write(s10,10)ifr 10 format(i10) do 1 istart=1,len(s10) 1 if(s10(istart:istart).ne.' ')goto 2 2 do 3 iend=len(s10),1,-1 3 if(s10(iend:iend).ne.' ')goto 4 4 open(10,file=s10(istart:iend)//'.fr.x') write(10,*)' fragment ',ifr write(10,*)ift do 5 ia=1,ift 5 write(10,100)iz(ia),(xf(ix+3*(ia-1)),ix=1,3) 100 format(i2,3f12.6,' 0 0 0 0 0 0 0 0.0') close(10) open(10,file=s10(istart:iend)//'.ov') if(lmin)then c minimalistic format: ns=0 nc1=0 do 6 ia=1,nat 6 if(iind(ia).ne.0)ns=ns+1 call wn(10,ns) write(10,602) 602 format(' ',$) do 7 ia=1,nat if(iind(ia).ne.0)then call wn(10,ia) write(10,602) call wn(10,iind(ia)) write(10,602) write(10,602) nc1=nc1+1 if(mod(nc1,20).eq.0)write(10,*) endif 7 continue if(mod(nc1,20).ne.0)write(10,*) else write(10,101)(0,ia=1,nat) write(10,101)(iind(ia),ia=1,nat) 101 format(20i4) endif close(10) return end subroutine wn(io,i) c write integer number only with necessary number of digits implicit none integer*4 io,i,j,is character*20 s20 write(s20,90)i 90 format(i20) do 1 is=1,len(s20) 1 if(s20(is:is).ne.' ')goto 2 2 do 3 j=is,len(s20) 3 write(io,91)s20(j:j) 91 format(a1,$) return end subroutine readfr(ifr,iind,nat) implicit none integer*4 ifr,iind(*),istart,iend,ia,nat character*10 s10 write(s10,10)ifr 10 format(i10) do 1 istart=1,len(s10) 1 if(s10(istart:istart).ne.' ')goto 2 2 do 3 iend=len(s10),1,-1 3 if(s10(iend:iend).ne.' ')goto 4 4 open(10,file=s10(istart:iend)//'.ov') read(10,101)(iind(ia),ia=1,nat) read(10,101)(iind(ia),ia=1,nat) 101 format(20i4) close(10) return end subroutine createtree(i1,i2,i3,tree,ntree,nt,bt,nat,ity, 1nextra,xextra,iextra,indextra,r,lwrt,rdist) c find atoms hanging on the i1-i2 bond, on i2: c except of i3 implicit none integer*4 i1,i2,ntree,tree(*),ix,nt(*),ia,bt(nat,7),ib,iaa,nat, 1i3,ity(*),ns,i,nextra,iextra(*),indextra(*) logical lwrt integer*4,allocatable::s1(:),s2(:) real*8 xc(3),xh1(3),xh2(3),xh3(3),xextra(*),r(*),rdist(*) allocate(s1(nat),s2(nat)) c number of atoms in the tree: ntree=0 c number of S-S bridges: ns=0 c atoms hanging on i2: do 1 ix=1,nt(i2) ia=bt(i2,ix) if(ia.ne.i1)then ntree=ntree+1 tree(ntree)=ia endif 1 continue c atoms hanging on ntree atoms: 222 do 2 ia=1,ntree do 3 ix=1,nt(tree(ia)) ib=bt(tree(ia),ix) if(ib.ne.i2.and.ib.ne.i3)then if(ity(tree(ia)).eq.16.and.ity(ib).eq.16)then c detect S-S bridge: ns=ns+1 s1(ns)=tree(ia) s2(ns)=ib else do 4 iaa=1,ntree 4 if(ib.eq.tree(iaa))goto 3 c add atom ib ntree=ntree+1 tree(ntree)=ib goto 222 endif endif 3 continue 2 continue do 5 ix=1,ns c for each S-S bridge add second sulphur: ntree=ntree+1 tree(ntree)=s2(ix) c try to add CH3: do 5 i=1,nt(s2(ix)) ia=bt(s2(ix),i) if(ia.ne.s1(ix))then call methyl(s1(ix),s2(ix),ia,nt,bt,nat,r,xc,xh1,xh2,xh3,3,rdist) call incrextra(iextra,xextra,nextra,xc ,6,indextra,ia) call incrextra(iextra,xextra,nextra,xh1,1,indextra, 0) call incrextra(iextra,xextra,nextra,xh2,1,indextra, 0) call incrextra(iextra,xextra,nextra,xh3,1,indextra, 0) if(lwrt)write(6,*)' 4 extra atoms on S-S bridge number ',ix endif 5 continue return end subroutine methyl(io,i1,i2,nt,bt,nat,r,xc,xh1,xh2,xh3,ir, 1rdist) c add methyl to the i1-i2 bond, instead of i2 implicit none integer*4 io,nat,i1,i2,ix,nt(*),ia,bt(nat,7),ic,ir real*8 v12(3),rcc,rch,xc(3),xh1(3),xh2(3),xh3(3),t(3),m(3),cv(3), 1a(3),r(*),v23(3),vco(3),y,sp,cb,rdist(*) rcc=rdist(ir) rch=rdist(4) do 1 ix=1,3 1 v12(ix)=r(3*(i2 -1)+ix)-r(3*(i1 -1)+ix) call normv(v12) do 2 ix=1,3 2 xc(ix)=r(3*(i1 -1)+ix)+rcc*v12(ix) c if there is a continuation, try to folow by the first hydrogen ic=0 do 4 ix=1,nt(i2) ia=bt(i2,ix) if(ia.ne.i1)then ic=ia goto 333 endif 4 continue 333 if(ic.ne.0)then do 3 ix=1,3 3 v23(ix)=r(3*(ic-1)+ix)-r(3*(i2 -1)+ix) call normv(v23) do 5 ix=1,3 5 xh1(ix)=xc(ix)+rcc*v23(ix) do 18 ix=1,3 18 cv(ix)=xh1(ix)-xc(ix) call normv(cv) else c get CO direction do 6 ix=1,3 6 vco(ix)=r(3*(io -1)+ix)-r(3*(i1 -1)+ix) call normv(vco) c get a vector cv in CH direction as -vco+y*v12,cv.v12=cos(beta) cb=cos((180.0d0-109.0d0)/180.0d0*4.0d0*atan(1.0d0)) sp=vco(1)*v12(1)+vco(2)*v12(2)+vco(3)*v12(3) y=sp*(1.0d0-cb)+dsqrt(2.0d0*cb*(1.0d0-sp**2)+sp**2*cb**2) do 7 ix=1,3 7 cv(ix)=-vco(ix)+y*v12(ix) call normv(cv) do 8 ix=1,3 8 xh1(ix)=xc(ix)+rcc*cv(ix) endif c get the other cube points do 9 ix=1,3 9 m(ix)=(-v12(ix)+cv(ix))/2.0d0*rcc+xc(ix) t(1)=(cv(2)*v12(3)-cv(3)*v12(2))*rcc t(2)=(cv(3)*v12(1)-cv(1)*v12(3))*rcc t(3)=(cv(1)*v12(2)-cv(2)*v12(1))*rcc do 10 ix=1,3 10 a(ix)=(xc(ix)-m(ix))*2.0d0 do 11 ix=1,3 xh2(ix)=m(ix)+t(ix)+a(ix) 11 xh3(ix)=m(ix)-t(ix)+a(ix) c scale the CH distances: do 16 ix=1,3 16 t(ix)=xh1(ix)-xc(ix) call normv(t) do 17 ix=1,3 17 xh1(ix)=xc(ix)+rch*t(ix) do 12 ix=1,3 12 t(ix)=xh2(ix)-xc(ix) call normv(t) do 13 ix=1,3 13 xh2(ix)=xc(ix)+rch*t(ix) do 14 ix=1,3 14 t(ix)=xh3(ix)-xc(ix) call normv(t) do 15 ix=1,3 15 xh3(ix)=xc(ix)+rch*t(ix) return end subroutine hethyl(i1,i2,r,x) c replace i2 by hydrogen implicit none integer*4 i1,i2,ix real*8 v12(3),rch,x(3),r(*) rch=1.05d0 do 1 ix=1,3 1 v12(ix)=r(3*(i2 -1)+ix)-r(3*(i1 -1)+ix) call normv(v12) do 2 ix=1,3 2 x(ix)=r(3*(i1 -1)+ix)+rch*v12(ix) return end subroutine attofr(ifr,nati,ia,s,lwrt) implicit none integer*4 ifr,nati(*),ia,i character*(*) s logical lwrt if(ia.ne.0)then ifr=ifr+1 nati(ifr)=ia if(lwrt)write(6,600)ia,ifr,(s(i:i),i=1,len(s)) 600 format(i5,' added as number ',i4,' ',80a1) endif return end subroutine swallow(n,u,i,j,i1,i2,i3,i4,i5,i6,i7,i8) implicit none integer n,i,j(n,8),i1,i2,i3,i4,i5,i6,i7,i8,u(*),ii i=i+1 j(i,1)=i1 j(i,2)=i2 j(i,3)=i3 j(i,4)=i4 j(i,5)=i5 j(i,6)=i6 j(i,7)=i7 j(i,8)=i8 do 1 ii=1,8 1 if(j(i,ii).gt.0)u(j(i,ii))=0 return end subroutine swallow11(n,u,i,j,i1,i2,i3,i4,i5,i6,i7,i8, 1i9,i10,i11) implicit none integer n,i,j(n,11),i1,i2,i3,i4,i5,i6,i7,i8,u(*),ii, 1i9,i10,i11 i=i+1 j(i,1 )= i1 j(i,2 )= i2 j(i,3 )= i3 j(i,4 )= i4 j(i,5 )= i5 j(i,6 )= i6 j(i,7 )= i7 j(i,8 )= i8 j(i,9 )= i9 j(i,10)=i10 j(i,11)=i11 do 1 ii=1,11 1 u(j(i,ii))=0 return end subroutine wrtinker(nat,r,itink,b,n,tt) implicit none integer*4 nat,i,j,itink(*),b(nat,7),n(*),k real*8 r(*) character*3 s3 character*45 tt(*) open(80,file='TINKER.XYZ') write(80,*)nat,' tinker file' do 1 i=1,nat k=itink(i) if(k.eq.0)then s3='XXX' else s3=tt(k)(8:10) endif 1 write(80,800)i,s3,(r(3*(i-1)+j),j=1,3),k,(b(i,j),j=1,n(i)) 800 format(i6,2x,a3,3f12.6,8i6) close(80) write(6,*)' TINKER.XYZ' return end subroutine assigntinkertypes(tt) implicit none character*45 tt(*) c 123456789012345678901234567890123456789012345 tt( 1)=' 14 N "Glycine N" 7' tt( 2)=' 1 CT "Glycine CA" 6' tt( 3)=' 2 C "Glycine C" 6' tt( 4)=' 29 H "Glycine HN" 1' tt( 5)=' 24 O "Glycine O" 8' tt( 6)=' 35 H1 "Glycine HA" 1' tt( 7)=' 14 N "Alanine N" 7' tt( 8)=' 1 CT "Alanine CA" 6' tt( 9)=' 2 C "Alanine C" 6' tt( 10)=' 29 H "Alanine HN" 1' tt( 11)=' 24 O "Alanine O" 8' tt( 12)=' 35 H1 "Alanine HA" 1' tt( 13)=' 1 CT "Alanine CB" 6' tt( 14)=' 34 HC "Alanine HB" 1' tt( 15)=' 14 N "Valine N" 7' tt( 16)=' 1 CT "Valine CA" 6' tt( 17)=' 2 C "Valine C" 6' tt( 18)=' 29 H "Valine HN" 1' tt( 19)=' 24 O "Valine O" 8' tt( 20)=' 35 H1 "Valine HA" 1' tt( 21)=' 1 CT "Valine CB" 6' tt( 22)=' 34 HC "Valine HB" 1' tt( 23)=' 1 CT "Valine CG1" 6' tt( 24)=' 34 HC "Valine HG1" 1' tt( 25)=' 1 CT "Valine CG2" 6' tt( 26)=' 34 HC "Valine HG2" 1' tt( 27)=' 14 N "Leucine N" 7' tt( 28)=' 1 CT "Leucine CA" 6' tt( 29)=' 2 C "Leucine C" 6' tt( 30)=' 29 H "Leucine HN" 1' tt( 31)=' 24 O "Leucine O" 8' tt( 32)=' 35 H1 "Leucine HA" 1' tt( 33)=' 1 CT "Leucine CB" 6' tt( 34)=' 34 HC "Leucine HB" 1' tt( 35)=' 1 CT "Leucine CG" 6' tt( 36)=' 34 HC "Leucine HG" 1' tt( 37)=' 1 CT "Leucine CD1" 6' tt( 38)=' 34 HC "Leucine HD1" 1' tt( 39)=' 1 CT "Leucine CD2" 6' tt( 40)=' 34 HC "Leucine HD2" 1' tt( 41)=' 14 N "Isoleucine N" 7' tt( 42)=' 1 CT "Isoleucine CA" 6' tt( 43)=' 2 C "Isoleucine C" 6' tt( 44)=' 29 H "Isoleucine HN" 1' tt( 45)=' 24 O "Isoleucine O" 8' tt( 46)=' 35 H1 "Isoleucine HA" 1' tt( 47)=' 1 CT "Isoleucine CB" 6' tt( 48)=' 34 HC "Isoleucine HB" 1' tt( 49)=' 1 CT "Isoleucine CG1" 6' tt( 50)=' 34 HC "Isoleucine HG1" 1' tt( 51)=' 1 CT "Isoleucine CG2" 6' tt( 52)=' 34 HC "Isoleucine HG2" 1' tt( 53)=' 1 CT "Isoleucine CD" 6' tt( 54)=' 34 HC "Isoleucine HD" 1' tt( 55)=' 14 N "Serine N" 7' tt( 56)=' 1 CT "Serine CA" 6' tt( 57)=' 2 C "Serine C" 6' tt( 58)=' 29 H "Serine HN" 1' tt( 59)=' 24 O "Serine O" 8' tt( 60)=' 35 H1 "Serine HA" 1' tt( 61)=' 1 CT "Serine CB" 6' tt( 62)=' 35 H1 "Serine HB" 1' tt( 63)=' 22 OH "Serine OG" 8' tt( 64)=' 31 HO "Serine HG" 1' tt( 65)=' 14 N "Threonine N" 7' tt( 66)=' 1 CT "Threonine CA" 6' tt( 67)=' 2 C "Threonine C" 6' tt( 68)=' 29 H "Threonine HN" 1' tt( 69)=' 24 O "Threonine O" 8' tt( 70)=' 35 H1 "Threonine HA" 1' tt( 71)=' 1 CT "Threonine CB" 6' tt( 72)=' 35 H1 "Threonine HB" 1' tt( 73)=' 22 OH "Threonine OG1" 8' tt( 74)=' 31 HO "Threonine HG1" 1' tt( 75)=' 1 CT "Threonine CG2" 6' tt( 76)=' 34 HC "Threonine HG2" 1' tt( 77)=' 14 N "Cysteine (-SH) N" 7' tt( 78)=' 1 CT "Cysteine (-SH) CA" 6' tt( 79)=' 2 C "Cysteine (-SH) C" 6' tt( 80)=' 29 H "Cysteine (-SH) HN" 1' tt( 81)=' 24 O "Cysteine (-SH) O" 8' tt( 82)=' 35 H1 "Cysteine (-SH) HA" 1' tt( 83)=' 1 CT "Cysteine (-SH) CB" 6' tt( 84)=' 35 H1 "Cysteine (-SH) HB" 1' tt( 85)=' 27 SH "Cysteine (-SH) SG" 16' tt( 86)=' 32 HS "Cysteine (-SH) HG" 1' tt( 87)=' 14 N "Cystine (-SS-) N" 7' tt( 88)=' 1 CT "Cystine (-SS-) CA" 6' tt( 89)=' 2 C "Cystine (-SS-) C" 6' tt( 90)=' 29 H "Cystine (-SS-) HN" 1' tt( 91)=' 24 O "Cystine (-SS-) O" 8' tt( 92)=' 35 H1 "Cystine (-SS-) HA" 1' tt( 93)=' 1 CT "Cystine (-SS-) CB" 6' tt( 94)=' 35 H1 "Cystine (-SS-) HB" 1' tt( 95)=' 26 S "Cystine (-SS-) SG" 16' tt( 96)=' 14 N "Proline N" 7' tt( 97)=' 1 CT "Proline CA" 6' tt( 98)=' 2 C "Proline C" 6' tt( 99)=' 24 O "Proline O" 8' tt(100)=' 35 H1 "Proline HA" 1' tt(101)=' 1 CT "Proline CB" 6' tt(102)=' 34 HC "Proline HB" 1' tt(103)=' 1 CT "Proline CG" 6' tt(104)=' 34 HC "Proline HG" 1' tt(105)=' 1 CT "Proline CD" 6' tt(106)=' 35 H1 "Proline HD" 1' tt(107)=' 14 N "Phenylalanine N" 7' tt(108)=' 1 CT "Phenylalanine CA" 6' tt(109)=' 2 C "Phenylalanine C" 6' tt(110)=' 29 H "Phenylalanine HN" 1' tt(111)=' 24 O "Phenylalanine O" 8' tt(112)=' 35 H1 "Phenylalanine HA" 1' tt(113)=' 1 CT "Phenylalanine CB" 6' tt(114)=' 34 HC "Phenylalanine HB" 1' tt(115)=' 3 CA "Phenylalanine CG" 6' tt(116)=' 3 CA "Phenylalanine CD" 6' tt(117)=' 33 HA "Phenylalanine HD" 1' tt(118)=' 3 CA "Phenylalanine CE" 6' tt(119)=' 33 HA "Phenylalanine HE" 1' tt(120)=' 3 CA "Phenylalanine CZ" 6' tt(121)=' 33 HA "Phenylalanine HZ" 1' tt(122)=' 14 N "Tyrosine N" 7' tt(123)=' 1 CT "Tyrosine CA" 6' tt(124)=' 2 C "Tyrosine C" 6' tt(125)=' 29 H "Tyrosine HN" 1' tt(126)=' 24 O "Tyrosine O" 8' tt(127)=' 35 H1 "Tyrosine HA" 1' tt(128)=' 1 CT "Tyrosine CB" 6' tt(129)=' 34 HC "Tyrosine HB" 1' tt(130)=' 3 CA "Tyrosine CG" 6' tt(131)=' 3 CA "Tyrosine CD" 6' tt(132)=' 33 HA "Tyrosine HD" 1' tt(133)=' 3 CA "Tyrosine CE" 6' tt(134)=' 33 HA "Tyrosine HE" 1' tt(135)=' 3 CA "Tyrosine CZ" 6' tt(136)=' 22 OH "Tyrosine OH" 8' tt(137)=' 31 HO "Tyrosine HH" 1' tt(138)=' 14 N "Tryptophan N" 7' tt(139)=' 1 CT "Tryptophan CA" 6' tt(140)=' 2 C "Tryptophan C" 6' tt(141)=' 29 H "Tryptophan HN" 1' tt(142)=' 24 O "Tryptophan O" 8' tt(143)=' 35 H1 "Tryptophan HA" 1' tt(144)=' 1 CT "Tryptophan CB" 6' tt(145)=' 34 HC "Tryptophan HB" 1' tt(146)=' 10 C* "Tryptophan CG" 6' tt(147)=' 7 CW "Tryptophan CD1" 6' tt(148)=' 39 H4 "Tryptophan HD1" 1' tt(149)=' 9 CB "Tryptophan CD2" 6' tt(150)=' 15 NA "Tryptophan NE1" 7' tt(151)=' 29 H "Tryptophan HE1" 1' tt(152)=' 11 CN "Tryptophan CE2" 6' tt(153)=' 3 CA "Tryptophan CE3" 6' tt(154)=' 33 HA "Tryptophan HE3" 1' tt(155)=' 3 CA "Tryptophan CZ2" 6' tt(156)=' 33 HA "Tryptophan HZ2" 1' tt(157)=' 3 CA "Tryptophan CZ3" 6' tt(158)=' 33 HA "Tryptophan HZ3" 1' tt(159)=' 3 CA "Tryptophan CH2" 6' tt(160)=' 33 HA "Tryptophan HH2" 1' tt(161)=' 14 N "Histidine (+) N" 7' tt(162)=' 1 CT "Histidine (+) CA" 6' tt(163)=' 2 C "Histidine (+) C" 6' tt(164)=' 29 H "Histidine (+) HN" 1' tt(165)=' 24 O "Histidine (+) O" 8' tt(166)=' 35 H1 "Histidine (+) HA" 1' tt(167)=' 1 CT "Histidine (+) CB" 6' tt(168)=' 34 HC "Histidine (+) HB" 1' tt(169)=' 5 CC "Histidine (+) CG" 6' tt(170)=' 15 NA "Histidine (+) ND1" 7' tt(171)=' 29 H "Histidine (+) HD1" 1' tt(172)=' 7 CW "Histidine (+) CD2" 6' tt(173)=' 39 H4 "Histidine (+) HD2" 1' tt(174)=' 8 CR "Histidine (+) CE1" 6' tt(175)=' 40 H5 "Histidine (+) HE1" 1' tt(176)=' 15 NA "Histidine (+) NE2" 7' tt(177)=' 29 H "Histidine (+) HE2" 1' tt(178)=' 14 N "Histidine (HD) N" 7' tt(179)=' 1 CT "Histidine (HD) CA" 6' tt(180)=' 2 C "Histidine (HD) C" 6' tt(181)=' 29 H "Histidine (HD) HN" 1' tt(182)=' 24 O "Histidine (HD) O" 8' tt(183)=' 35 H1 "Histidine (HD) HA" 1' tt(184)=' 1 CT "Histidine (HD) CB" 6' tt(185)=' 34 HC "Histidine (HD) HB" 1' tt(186)=' 5 CC "Histidine (HD) CG" 6' tt(187)=' 15 NA "Histidine (HD) ND1" 7' tt(188)=' 29 H "Histidine (HD) HD1" 1' tt(189)=' 6 CV "Histidine (HD) CD2" 6' tt(190)=' 39 H4 "Histidine (HD) HD2" 1' tt(191)=' 8 CR "Histidine (HD) CE1" 6' tt(192)=' 40 H5 "Histidine (HD) HE1" 1' tt(193)=' 16 NB "Histidine (HD) NE2" 7' tt(194)=' 14 N "Histidine (HE) N" 7' tt(195)=' 1 CT "Histidine (HE) CA" 6' tt(196)=' 2 C "Histidine (HE) C" 6' tt(197)=' 29 H "Histidine (HE) HN" 1' tt(198)=' 24 O "Histidine (HE) O" 8' tt(199)=' 35 H1 "Histidine (HE) HA" 1' tt(200)=' 1 CT "Histidine (HE) CB" 6' tt(201)=' 34 HC "Histidine (HE) HB" 1' tt(202)=' 5 CC "Histidine (HE) CG" 6' tt(203)=' 16 NB "Histidine (HE) ND1" 7' tt(204)=' 7 CW "Histidine (HE) CD2" 6' tt(205)=' 39 H4 "Histidine (HE) HD2" 1' tt(206)=' 8 CR "Histidine (HE) CE1" 6' tt(207)=' 40 H5 "Histidine (HE) HE1" 1' tt(208)=' 15 NA "Histidine (HE) NE2" 7' tt(209)=' 29 H "Histidine (HE) HE2" 1' tt(210)=' 14 N "Aspartic Acid N" 7' tt(211)=' 1 CT "Aspartic Acid CA" 6' tt(212)=' 2 C "Aspartic Acid C" 6' tt(213)=' 29 H "Aspartic Acid HN" 1' tt(214)=' 24 O "Aspartic Acid O" 8' tt(215)=' 35 H1 "Aspartic Acid HA" 1' tt(216)=' 1 CT "Aspartic Acid CB" 6' tt(217)=' 34 HC "Aspartic Acid HB" 1' tt(218)=' 2 C "Aspartic Acid CG" 6' tt(219)=' 25 O2 "Aspartic Acid OD" 8' tt(220)=' 14 N "Asparagine N" 7' tt(221)=' 1 CT "Asparagine CA" 6' tt(222)=' 2 C "Asparagine C" 6' tt(223)=' 29 H "Asparagine HN" 1' tt(224)=' 24 O "Asparagine O" 8' tt(225)=' 35 H1 "Asparagine HA" 1' tt(226)=' 1 CT "Asparagine CB" 6' tt(227)=' 34 HC "Asparagine HB" 1' tt(228)=' 2 C "Asparagine CG" 6' tt(229)=' 24 O "Asparagine OD1" 8' tt(230)=' 14 N "Asparagine ND2" 7' tt(231)=' 29 H "Asparagine HD2" 1' tt(232)=' 14 N "Glutamic Acid N" 7' tt(233)=' 1 CT "Glutamic Acid CA" 6' tt(234)=' 2 C "Glutamic Acid C" 6' tt(235)=' 29 H "Glutamic Acid HN" 1' tt(236)=' 24 O "Glutamic Acid O" 8' tt(237)=' 35 H1 "Glutamic Acid HA" 1' tt(238)=' 1 CT "Glutamic Acid CB" 6' tt(239)=' 34 HC "Glutamic Acid HB" 1' tt(240)=' 1 CT "Glutamic Acid CG" 6' tt(241)=' 34 HC "Glutamic Acid HG" 1' tt(242)=' 2 C "Glutamic Acid CD" 6' tt(243)=' 25 O2 "Glutamic Acid OE" 8' tt(244)=' 14 N "Glutamine N" 7' tt(245)=' 1 CT "Glutamine CA" 6' tt(246)=' 2 C "Glutamine C" 6' tt(247)=' 29 H "Glutamine HN" 1' tt(248)=' 24 O "Glutamine O" 8' tt(249)=' 35 H1 "Glutamine HA" 1' tt(250)=' 1 CT "Glutamine CB" 6' tt(251)=' 34 HC "Glutamine HB" 1' tt(252)=' 1 CT "Glutamine CG" 6' tt(253)=' 34 HC "Glutamine HG" 1' tt(254)=' 2 C "Glutamine CD" 6' tt(255)=' 24 O "Glutamine OE1" 8' tt(256)=' 14 N "Glutamine NE2" 7' tt(257)=' 29 H "Glutamine HE2" 1' tt(258)=' 14 N "Methionine N" 7' tt(259)=' 1 CT "Methionine CA" 6' tt(260)=' 2 C "Methionine C" 6' tt(261)=' 29 H "Methionine HN" 1' tt(262)=' 24 O "Methionine O" 8' tt(263)=' 35 H1 "Methionine HA" 1' tt(264)=' 1 CT "Methionine CB" 6' tt(265)=' 34 HC "Methionine HB" 1' tt(266)=' 1 CT "Methionine CG" 6' tt(267)=' 35 H1 "Methionine HG" 1' tt(268)=' 26 S "Methionine SD" 16' tt(269)=' 1 CT "Methionine CE" 6' tt(270)=' 35 H1 "Methionine HE" 1' tt(271)=' 14 N "Lysine N" 7' tt(272)=' 1 CT "Lysine CA" 6' tt(273)=' 2 C "Lysine C" 6' tt(274)=' 29 H "Lysine HN" 1' tt(275)=' 24 O "Lysine O" 8' tt(276)=' 35 H1 "Lysine HA" 1' tt(277)=' 1 CT "Lysine CB" 6' tt(278)=' 34 HC "Lysine HB" 1' tt(279)=' 1 CT "Lysine CG" 6' tt(280)=' 34 HC "Lysine HG" 1' tt(281)=' 1 CT "Lysine CD" 6' tt(282)=' 34 HC "Lysine HD" 1' tt(283)=' 1 CT "Lysine CE" 6' tt(284)=' 38 HP "Lysine HE" 1' tt(285)=' 20 N3 "Lysine NZ" 7' tt(286)=' 29 H "Lysine HZ" 1' tt(287)=' 14 N "Arginine N" 7' tt(288)=' 1 CT "Arginine CA" 6' tt(289)=' 2 C "Arginine C" 6' tt(290)=' 29 H "Arginine HN" 1' tt(291)=' 24 O "Arginine O" 8' tt(292)=' 35 H1 "Arginine HA" 1' tt(293)=' 1 CT "Arginine CB" 6' tt(294)=' 34 HC "Arginine HB" 1' tt(295)=' 1 CT "Arginine CG" 6' tt(296)=' 34 HC "Arginine HG" 1' tt(297)=' 1 CT "Arginine CD" 6' tt(298)=' 35 H1 "Arginine HD" 1' tt(299)=' 19 N2 "Arginine NE" 7' tt(300)=' 29 H "Arginine HE" 1' tt(301)=' 3 CA "Arginine CZ" 6' tt(302)=' 19 N2 "Arginine NH" 7' tt(303)=' 29 H "Arginine HH" 1' tt(304)=' 14 N "Ornithine N" 7' tt(305)=' 1 CT "Ornithine CA" 6' tt(306)=' 2 C "Ornithine C" 6' tt(307)=' 29 H "Ornithine HN" 1' tt(308)=' 24 O "Ornithine O" 8' tt(309)=' 35 H1 "Ornithine HA" 1' tt(310)=' 1 CT "Ornithine CB" 6' tt(311)=' 34 HC "Ornithine HB" 1' tt(312)=' 1 CT "Ornithine CG" 6' tt(313)=' 34 HC "Ornithine HG" 1' tt(314)=' 1 CT "Ornithine CD" 6' tt(315)=' 38 HP "Ornithine HD" 1' tt(316)=' 20 N3 "Ornithine NE" 7' tt(317)=' 29 H "Ornithine HE" 1' tt(318)=' 14 N "MethylAlanine N" 7' tt(319)=' 1 CT "MethylAlanine CA" 6' tt(320)=' 2 C "MethylAlanine C" 6' tt(321)=' 29 H "MethylAlanine HN" 1' tt(322)=' 24 O "MethylAlanine O" 8' tt(323)=' 1 CT "MethylAlanine CB" 6' tt(324)=' 34 HC "MethylAlanine HB" 1' tt(325)=' 14 N "Pyroglutamate N" 7' tt(326)=' 1 CT "Pyroglutamate CA" 6' tt(327)=' 2 C "Pyroglutamate C" 6' tt(328)=' 29 H "Pyroglutamate HN" 1' tt(329)=' 24 O "Pyroglutamate O" 8' tt(330)=' 35 H1 "Pyroglutamate HA" 1' tt(331)=' 1 CT "Pyroglutamate CB" 6' tt(332)=' 34 HC "Pyroglutamate HB" 1' tt(333)=' 1 CT "Pyroglutamate CG" 6' tt(334)=' 34 HC "Pyroglutamate HG" 1' tt(335)=' 2 C "Pyroglutamate CD" 6' tt(336)=' 24 O "Pyroglutamate OE" 8' tt(337)=' 2 C "Formyl C" 6' tt(338)=' 0 H "Formyl H" 1' tt(339)=' 24 O "Formyl O" 8' tt(340)=' 1 CT "Acetyl CA" 6' tt(341)=' 34 HC "Acetyl HA" 1' tt(342)=' 2 C "Acetyl C" 6' tt(343)=' 24 O "Acetyl O" 8' tt(344)=' 14 N "C-Term Amide N" 7' tt(345)=' 29 H "C-Term Amide HN" 1' tt(346)=' 14 N "N-MeAmide N" 7' tt(347)=' 29 H "N-MeAmide HN" 1' tt(348)=' 1 CT "N-MeAmide C" 6' tt(349)=' 35 H1 "N-MeAmide HC" 1' tt(350)=' 20 N3 "N-Term GLY N" 7' tt(351)=' 1 CT "N-Term GLY CA" 6' tt(352)=' 2 C "N-Term GLY C" 6' tt(353)=' 29 H "N-Term GLY HN" 1' tt(354)=' 24 O "N-Term GLY O" 8' tt(355)=' 35 H1 "N-Term GLY HA" 1' tt(356)=' 20 N3 "N-Term ALA N" 7' tt(357)=' 1 CT "N-Term ALA CA" 6' tt(358)=' 2 C "N-Term ALA C" 6' tt(359)=' 29 H "N-Term ALA HN" 1' tt(360)=' 24 O "N-Term ALA O" 8' tt(361)=' 35 H1 "N-Term ALA HA" 1' tt(362)=' 20 N3 "N-Term VAL N" 7' tt(363)=' 1 CT "N-Term VAL CA" 6' tt(364)=' 2 C "N-Term VAL C" 6' tt(365)=' 29 H "N-Term VAL HN" 1' tt(366)=' 24 O "N-Term VAL O" 8' tt(367)=' 35 H1 "N-Term VAL HA" 1' tt(368)=' 20 N3 "N-Term LEU N" 7' tt(369)=' 1 CT "N-Term LEU CA" 6' tt(370)=' 2 C "N-Term LEU C" 6' tt(371)=' 29 H "N-Term LEU HN" 1' tt(372)=' 24 O "N-Term LEU O" 8' tt(373)=' 35 H1 "N-Term LEU HA" 1' tt(374)=' 20 N3 "N-Term ILE N" 7' tt(375)=' 1 CT "N-Term ILE CA" 6' tt(376)=' 2 C "N-Term ILE C" 6' tt(377)=' 29 H "N-Term ILE HN" 1' tt(378)=' 24 O "N-Term ILE O" 8' tt(379)=' 35 H1 "N-Term ILE HA" 1' tt(380)=' 20 N3 "N-Term SER N" 7' tt(381)=' 1 CT "N-Term SER CA" 6' tt(382)=' 2 C "N-Term SER C" 6' tt(383)=' 29 H "N-Term SER HN" 1' tt(384)=' 24 O "N-Term SER O" 8' tt(385)=' 35 H1 "N-Term SER HA" 1' tt(386)=' 20 N3 "N-Term THR N" 7' tt(387)=' 1 CT "N-Term THR CA" 6' tt(388)=' 2 C "N-Term THR C" 6' tt(389)=' 29 H "N-Term THR HN" 1' tt(390)=' 24 O "N-Term THR O" 8' tt(391)=' 35 H1 "N-Term THR HA" 1' tt(392)=' 20 N3 "N-Term CYS (-SH) N" 7' tt(393)=' 1 CT "N-Term CYS (-SH) CA" 6' tt(394)=' 2 C "N-Term CYS (-SH) C" 6' tt(395)=' 29 H "N-Term CYS (-SH) HN" 1' tt(396)=' 24 O "N-Term CYS (-SH) O" 8' tt(397)=' 35 H1 "N-Term CYS (-SH) HA" 1' tt(398)=' 20 N3 "N-Term CYS (-SS-) N" 7' tt(399)=' 1 CT "N-Term CYS (-SS-) CA" 6' tt(400)=' 2 C "N-Term CYS (-SS-) C" 6' tt(401)=' 29 H "N-Term CYS (-SS-) HN" 1' tt(402)=' 24 O "N-Term CYS (-SS-) O" 8' tt(403)=' 35 H1 "N-Term CYS (-SS-) HA" 1' tt(404)=' 20 N3 "N-Term PRO N" 7' tt(405)=' 1 CT "N-Term PRO CA" 6' tt(406)=' 2 C "N-Term PRO C" 6' tt(407)=' 29 H "N-Term PRO HN" 1' tt(408)=' 24 O "N-Term PRO O" 8' tt(409)=' 35 H1 "N-Term PRO HA" 1' tt(410)=' 1 CT "N-Term PRO CD" 6' tt(411)=' 38 HP "N-Term PRO HD" 1' tt(412)=' 20 N3 "N-Term PHE N" 7' tt(413)=' 1 CT "N-Term PHE CA" 6' tt(414)=' 2 C "N-Term PHE C" 6' tt(415)=' 29 H "N-Term PHE HN" 1' tt(416)=' 24 O "N-Term PHE O" 8' tt(417)=' 35 H1 "N-Term PHE HA" 1' tt(418)=' 20 N3 "N-Term TYR N" 7' tt(419)=' 1 CT "N-Term TYR CA" 6' tt(420)=' 2 C "N-Term TYR C" 6' tt(421)=' 29 H "N-Term TYR HN" 1' tt(422)=' 24 O "N-Term TYR O" 8' tt(423)=' 35 H1 "N-Term TYR HA" 1' tt(424)=' 20 N3 "N-Term TRP N" 7' tt(425)=' 1 CT "N-Term TRP CA" 6' tt(426)=' 2 C "N-Term TRP C" 6' tt(427)=' 29 H "N-Term TRP HN" 1' tt(428)=' 24 O "N-Term TRP O" 8' tt(429)=' 35 H1 "N-Term TRP HA" 1' tt(430)=' 20 N3 "N-Term HIS (+) N" 7' tt(431)=' 1 CT "N-Term HIS (+) CA" 6' tt(432)=' 2 C "N-Term HIS (+) C" 6' tt(433)=' 29 H "N-Term HIS (+) HN" 1' tt(434)=' 24 O "N-Term HIS (+) O" 8' tt(435)=' 35 H1 "N-Term HIS (+) HA" 1' tt(436)=' 20 N3 "N-Term HIS (HD) N" 7' tt(437)=' 1 CT "N-Term HIS (HD) CA" 6' tt(438)=' 2 C "N-Term HIS (HD) C" 6' tt(439)=' 29 H "N-Term HIS (HD) HN" 1' tt(440)=' 24 O "N-Term HIS (HD) O" 8' tt(441)=' 35 H1 "N-Term HIS (HD) HA" 1' tt(442)=' 20 N3 "N-Term HIS (HE) N" 7' tt(443)=' 1 CT "N-Term HIS (HE) CA" 6' tt(444)=' 2 C "N-Term HIS (HE) C" 6' tt(445)=' 29 H "N-Term HIS (HE) HN" 1' tt(446)=' 24 O "N-Term HIS (HE) O" 8' tt(447)=' 35 H1 "N-Term HIS (HE) HA" 1' tt(448)=' 20 N3 "N-Term ASP N" 7' tt(449)=' 1 CT "N-Term ASP CA" 6' tt(450)=' 2 C "N-Term ASP C" 6' tt(451)=' 29 H "N-Term ASP HN" 1' tt(452)=' 24 O "N-Term ASP O" 8' tt(453)=' 35 H1 "N-Term ASP HA" 1' tt(454)=' 20 N3 "N-Term ASN N" 7' tt(455)=' 1 CT "N-Term ASN CA" 6' tt(456)=' 2 C "N-Term ASN C" 6' tt(457)=' 29 H "N-Term ASN HN" 1' tt(458)=' 24 O "N-Term ASN O" 8' tt(459)=' 35 H1 "N-Term ASN HA" 1' tt(460)=' 20 N3 "N-Term GLU N" 7' tt(461)=' 1 CT "N-Term GLU CA" 6' tt(462)=' 2 C "N-Term GLU C" 6' tt(463)=' 29 H "N-Term GLU HN" 1' tt(464)=' 24 O "N-Term GLU O" 8' tt(465)=' 35 H1 "N-Term GLU HA" 1' tt(466)=' 20 N3 "N-Term GLN N" 7' tt(467)=' 1 CT "N-Term GLN CA" 6' tt(468)=' 2 C "N-Term GLN C" 6' tt(469)=' 29 H "N-Term GLN HN" 1' tt(470)=' 24 O "N-Term GLN O" 8' tt(471)=' 35 H1 "N-Term GLN HA" 1' tt(472)=' 20 N3 "N-Term MET N" 7' tt(473)=' 1 CT "N-Term MET CA" 6' tt(474)=' 2 C "N-Term MET C" 6' tt(475)=' 29 H "N-Term MET HN" 1' tt(476)=' 24 O "N-Term MET O" 8' tt(477)=' 35 H1 "N-Term MET HA" 1' tt(478)=' 20 N3 "N-Term LYS N" 7' tt(479)=' 1 CT "N-Term LYS CA" 6' tt(480)=' 2 C "N-Term LYS C" 6' tt(481)=' 29 H "N-Term LYS HN" 1' tt(482)=' 24 O "N-Term LYS O" 8' tt(483)=' 35 H1 "N-Term LYS HA" 1' tt(484)=' 20 N3 "N-Term ARG N" 7' tt(485)=' 1 CT "N-Term ARG CA" 6' tt(486)=' 2 C "N-Term ARG C" 6' tt(487)=' 29 H "N-Term ARG HN" 1' tt(488)=' 24 O "N-Term ARG O" 8' tt(489)=' 35 H1 "N-Term ARG HA" 1' tt(490)=' 20 N3 "N-Term ORN N" 7' tt(491)=' 1 CT "N-Term ORN CA" 6' tt(492)=' 2 C "N-Term ORN C" 6' tt(493)=' 29 H "N-Term ORN HN" 1' tt(494)=' 24 O "N-Term ORN O" 8' tt(495)=' 35 H1 "N-Term ORN HA" 1' tt(496)=' 20 N3 "N-Term AIB N" 7' tt(497)=' 1 CT "N-Term AIB CA" 6' tt(498)=' 2 C "N-Term AIB C" 6' tt(499)=' 29 H "N-Term AIB HN" 1' tt(500)=' 24 O "N-Term AIB O" 8' tt(501)=' 14 N "C-Term GLY N" 7' tt(502)=' 1 CT "C-Term GLY CA" 6' tt(503)=' 2 C "C-Term GLY C" 6' tt(504)=' 29 H "C-Term GLY HN" 1' tt(505)=' 25 O2 "C-Term GLY OXT" 8' tt(506)=' 35 H1 "C-Term GLY HA" 1' tt(507)=' 14 N "C-Term ALA N" 7' tt(508)=' 1 CT "C-Term ALA CA" 6' tt(509)=' 2 C "C-Term ALA C" 6' tt(510)=' 29 H "C-Term ALA HN" 1' tt(511)=' 25 O2 "C-Term ALA OXT" 8' tt(512)=' 35 H1 "C-Term ALA HA" 1' tt(513)=' 14 N "C-Term VAL N" 7' tt(514)=' 1 CT "C-Term VAL CA" 6' tt(515)=' 2 C "C-Term VAL C" 6' tt(516)=' 29 H "C-Term VAL HN" 1' tt(517)=' 25 O2 "C-Term VAL OXT" 8' tt(518)=' 35 H1 "C-Term VAL HA" 1' tt(519)=' 14 N "C-Term LEU N" 7' tt(520)=' 1 CT "C-Term LEU CA" 6' tt(521)=' 2 C "C-Term LEU C" 6' tt(522)=' 29 H "C-Term LEU HN" 1' tt(523)=' 25 O2 "C-Term LEU OXT" 8' tt(524)=' 35 H1 "C-Term LEU HA" 1' tt(525)=' 14 N "C-Term ILE N" 7' tt(526)=' 1 CT "C-Term ILE CA" 6' tt(527)=' 2 C "C-Term ILE C" 6' tt(528)=' 29 H "C-Term ILE HN" 1' tt(529)=' 25 O2 "C-Term ILE OXT" 8' tt(530)=' 35 H1 "C-Term ILE HA" 1' tt(531)=' 14 N "C-Term SER N" 7' tt(532)=' 1 CT "C-Term SER CA" 6' tt(533)=' 2 C "C-Term SER C" 6' tt(534)=' 29 H "C-Term SER HN" 1' tt(535)=' 25 O2 "C-Term SER OXT" 8' tt(536)=' 35 H1 "C-Term SER HA" 1' tt(537)=' 14 N "C-Term THR N" 7' tt(538)=' 1 CT "C-Term THR CA" 6' tt(539)=' 2 C "C-Term THR C" 6' tt(540)=' 29 H "C-Term THR HN" 1' tt(541)=' 25 O2 "C-Term THR OXT" 8' tt(542)=' 35 H1 "C-Term THR HA" 1' tt(543)=' 14 N "C-Term CYS (-SH) N" 7' tt(544)=' 1 CT "C-Term CYS (-SH) CA" 6' tt(545)=' 2 C "C-Term CYS (-SH) C" 6' tt(546)=' 29 H "C-Term CYS (-SH) HN" 1' tt(547)=' 25 O2 "C-Term CYS (-SH) OXT" 8' tt(548)=' 35 H1 "C-Term CYS (-SH) HA" 1' tt(549)=' 14 N "C-Term CYS (-SS-) N" 7' tt(550)=' 1 CT "C-Term CYS (-SS-) CA" 6' tt(551)=' 2 C "C-Term CYS (-SS-) C" 6' tt(552)=' 29 H "C-Term CYS (-SS-) HN" 1' tt(553)=' 25 O2 "C-Term CYS (-SS-) OXT" 8' tt(554)=' 35 H1 "C-Term CYS (-SS-) HA" 1' tt(555)=' 14 N "C-Term PRO N" 7' tt(556)=' 1 CT "C-Term PRO CA" 6' tt(557)=' 2 C "C-Term PRO C" 6' tt(558)=' 25 O2 "C-Term PRO OXT" 8' tt(559)=' 35 H1 "C-Term PRO HA" 1' tt(560)=' 14 N "C-Term PHE N" 7' tt(561)=' 1 CT "C-Term PHE CA" 6' tt(562)=' 2 C "C-Term PHE C" 6' tt(563)=' 29 H "C-Term PHE HN" 1' tt(564)=' 25 O2 "C-Term PHE OXT" 8' tt(565)=' 35 H1 "C-Term PHE HA" 1' tt(566)=' 14 N "C-Term TYR N" 7' tt(567)=' 1 CT "C-Term TYR CA" 6' tt(568)=' 2 C "C-Term TYR C" 6' tt(569)=' 29 H "C-Term TYR HN" 1' tt(570)=' 25 O2 "C-Term TYR OXT" 8' tt(571)=' 35 H1 "C-Term TYR HA" 1' tt(572)=' 14 N "C-Term TRP N" 7' tt(573)=' 1 CT "C-Term TRP CA" 6' tt(574)=' 2 C "C-Term TRP C" 6' tt(575)=' 29 H "C-Term TRP HN" 1' tt(576)=' 25 O2 "C-Term TRP OXT" 8' tt(577)=' 35 H1 "C-Term TRP HA" 1' tt(578)=' 14 N "C-Term HIS (+) N" 7' tt(579)=' 1 CT "C-Term HIS (+) CA" 6' tt(580)=' 2 C "C-Term HIS (+) C" 6' tt(581)=' 29 H "C-Term HIS (+) HN" 1' tt(582)=' 25 O2 "C-Term HIS (+) OXT" 8' tt(583)=' 35 H1 "C-Term HIS (+) HA" 1' tt(584)=' 14 N "C-Term HIS (HD) N" 7' tt(585)=' 1 CT "C-Term HIS (HD) CA" 6' tt(586)=' 2 C "C-Term HIS (HD) C" 6' tt(587)=' 29 H "C-Term HIS (HD) HN" 1' tt(588)=' 25 O2 "C-Term HIS (HD) OXT" 8' tt(589)=' 35 H1 "C-Term HIS (HD) HA" 1' tt(590)=' 14 N "C-Term HIS (HE) N" 7' tt(591)=' 1 CT "C-Term HIS (HE) CA" 6' tt(592)=' 2 C "C-Term HIS (HE) C" 6' tt(593)=' 29 H "C-Term HIS (HE) HN" 1' tt(594)=' 25 O2 "C-Term HIS (HE) OXT" 8' tt(595)=' 35 H1 "C-Term HIS (HE) HA" 1' tt(596)=' 14 N "C-Term ASP N" 7' tt(597)=' 1 CT "C-Term ASP CA" 6' tt(598)=' 2 C "C-Term ASP C" 6' tt(599)=' 29 H "C-Term ASP HN" 1' tt(600)=' 25 O2 "C-Term ASP OXT" 8' tt(601)=' 35 H1 "C-Term ASP HA" 1' tt(602)=' 14 N "C-Term ASN N" 7' tt(603)=' 1 CT "C-Term ASN CA" 6' tt(604)=' 2 C "C-Term ASN C" 6' tt(605)=' 29 H "C-Term ASN HN" 1' tt(606)=' 25 O2 "C-Term ASN OXT" 8' tt(607)=' 35 H1 "C-Term ASN HA" 1' tt(608)=' 14 N "C-Term GLU N" 7' tt(609)=' 1 CT "C-Term GLU CA" 6' tt(610)=' 2 C "C-Term GLU C" 6' tt(611)=' 29 H "C-Term GLU HN" 1' tt(612)=' 25 O2 "C-Term GLU OXT" 8' tt(613)=' 35 H1 "C-Term GLU HA" 1' tt(614)=' 14 N "C-Term GLN N" 7' tt(615)=' 1 CT "C-Term GLN CA" 6' tt(616)=' 2 C "C-Term GLN C" 6' tt(617)=' 29 H "C-Term GLN HN" 1' tt(618)=' 25 O2 "C-Term GLN OXT" 8' tt(619)=' 35 H1 "C-Term GLN HA" 1' tt(620)=' 14 N "C-Term MET N" 7' tt(621)=' 1 CT "C-Term MET CA" 6' tt(622)=' 2 C "C-Term MET C" 6' tt(623)=' 29 H "C-Term MET HN" 1' tt(624)=' 25 O2 "C-Term MET OXT" 8' tt(625)=' 35 H1 "C-Term MET HA" 1' tt(626)=' 14 N "C-Term LYS N" 7' tt(627)=' 1 CT "C-Term LYS CA" 6' tt(628)=' 2 C "C-Term LYS C" 6' tt(629)=' 29 H "C-Term LYS HN" 1' tt(630)=' 25 O2 "C-Term LYS OXT" 8' tt(631)=' 35 H1 "C-Term LYS HA" 1' tt(632)=' 14 N "C-Term ARG N" 7' tt(633)=' 1 CT "C-Term ARG CA" 6' tt(634)=' 2 C "C-Term ARG C" 6' tt(635)=' 29 H "C-Term ARG HN" 1' tt(636)=' 25 O2 "C-Term ARG OXT" 8' tt(637)=' 35 H1 "C-Term ARG HA" 1' tt(638)=' 14 N "C-Term ORN N" 7' tt(639)=' 1 CT "C-Term ORN CA" 6' tt(640)=' 2 C "C-Term ORN C" 6' tt(641)=' 29 H "C-Term ORN HN" 1' tt(642)=' 25 O2 "C-Term ORN OXT" 8' tt(643)=' 35 H1 "C-Term ORN HA" 1' tt(644)=' 14 N "C-Term AIB N" 7' tt(645)=' 1 CT "C-Term AIB CA" 6' tt(646)=' 2 C "C-Term AIB C" 6' tt(647)=' 29 H "C-Term AIB HN" 1' tt(648)=' 25 O2 "C-Term AIB OXT" 8' return end subroutine inip(in,ica,icc,ihn,ico,ich,ia,ih1,ioff,itink) implicit none integer*4 in,ica,icc,ihn,ico,ich,ia,ih1,ioff,itink(*) itink(in) =1+ioff itink(ica)=2+ioff itink(icc)=3+ioff itink(ihn)=4+ioff itink(ico)=5+ioff itink(ich)=6+ioff itink(ia )=7+ioff itink(ih1)=8+ioff return end subroutine hh(ity,x,nt,ia,bt,typ,nat,itink) implicit none integer*4 nt(*),ia,nat,bt(nat,7),typ,itink(*),x,i,ity(*) do 1 i=1,nt(ia) 1 if(ity(bt(ia,i)).eq.x)itink(bt(ia,i))=typ return end subroutine readopt(LO,LF,DL,DW,lwrt,epsin,epsout,lhb,lala,ldna, 1LSS,rdist,lmin,lper,px,py,pz) implicit none integer*4 LO,LF real*8 DL,epsin,epsout,DW,rdist(*),px,py,pz logical lex,lwrt,lhb,lala,ldna,LSS,lmin,lper character*3 s c -------------------------------------------------------- c option variable meaning c -------------------------------------------------------- c ALA lala make all-alanine-like peptide c DLE DL distance limit for non-covalent interactions, c if DL=0, these are skipped c EIN epsin limit for the variable permittivity model c EOU epsout limit for the variable permittivity model c H-B lhb if true, take hydrogen-bonded waters only c LFR LF number of aminoacids in each fragment c LOV LO overlap increment c LPER LPER periodic conditions for water selection c LSS LSS if true make extra S-S bridge fragments c LWR lwrt write extensive output c NUC ldna make RNA/DNA fragments c RCC rdist(1) canonical distances C(=O)-Me c RNC rdist(2) N(H)-Me c RSC rdist(3) S-Me c RCH rdist(4) C-H in Me c WLE DW distance limit for water solvent selection c if DW=0, these are skipped c -------------------------------------------------------- rdist(1)=1.506D0 rdist(2)=1.460D0 rdist(3)=1.804D0 rdist(4)=1.095D0 lala=.false. DL=0.0d0 epsin=20.0d0 epsout=78.0d0 lhb=.false. LF=4 LO=1 LSS=.false. lwrt=.false. lper=.false. ldna=.false. DW=0.0d0 lmin=.false. px=0.0d0 py=0.0d0 pz=0.0d0 inquire(file='PDB_DC.OPT',exist=lex) if(lex)then write(6,600) 600 format(' PDB_DC.OPT found:') open(40,file='PDB_DC.OPT') 1 read(40,400,end=444,err=444)s 400 format(a3) if(s.eq.'ALA')read(40,*)lala if(s.eq.'DLE')read(40,*)DL if(s.eq.'EIN')read(40,*)epsin if(s.eq.'EOU')read(40,*)epsout if(s.eq.'H-B')read(40,*)lhb if(s.eq.'LFR')read(40,*)LF if(s.eq.'LMI')read(40,*)lmin if(s.eq.'LPE')then read(40,*)lper read(40,*)px,py,pz endif if(s.eq.'LOV')read(40,*)LO if(s.eq.'LSS')read(40,*)LSS if(s.eq.'LWR')read(40,*)lwrt if(s.eq.'NUC')read(40,*)ldna if(s.eq.'WLE')read(40,*)DW if(s.eq.'RCC')read(40,*)rdist(1) if(s.eq.'RNC')read(40,*)rdist(2) if(s.eq.'RSC')read(40,*)rdist(3) if(s.eq.'RCH')read(40,*)rdist(4) goto 1 444 close(40) endif write(6,601)LO,LF,lwrt,epsin,epsout,DL,DW,lala,ldna,lhb,LSS,lmin 601 format(/, 1 ' LOVERLAP ',i10,/, 1 ' LFRAGMENT ',i10,/, 1 ' LWRITE ',l10,/, 1 ' EPSIN ',f10.2,/, 1 ' EPSOUT ',f10.2,/, 1 ' DLENGTH ',f10.2,/, 1 ' WLENGTH ',f10.2,/, c ' ALANINE-LIKE ',l10,/, c ' NUCLEIC AC. ',l10,/, 1 ' H-BONDED ',l10,/, 1 ' Extra SS Frgs ',l10,/, 1 ' Minimalistic ovs ',l10,/) return end subroutine normv(v) implicit none real*8 v(*),norm norm=dsqrt(v(1)**2+v(2)**2+v(3)**2) if(norm.gt.0.0d0)then v(1)=v(1)/norm v(2)=v(2)/norm v(3)=v(3)/norm endif return end subroutine incrextra(iextra,xextra,nextra,xc,iz,indextra,ii) implicit none real*8 xextra(*),xc(*) integer*4 nextra,iz,iextra(*),indextra(*),ii nextra=nextra+1 xextra(3*(nextra-1)+1)=xc(1) xextra(3*(nextra-1)+2)=xc(2) xextra(3*(nextra-1)+3)=xc(3) iextra(nextra)=iz indextra(nextra)=ii return end subroutine inifr(ifr,istart,ic,ift,ifa,nme,nextra,lwrt,mcap,iind, 1nat) implicit none integer*4 ifr,istart,ic,ift,ifa,nme,nextra,iind(*),i,nat logical lwrt,mcap do 1 i=1,nat 1 iind(i)=0 mcap=.false. ifr=ifr+1 istart=ic ift=0 ifa=0 nme=0 nextra=0 if(lwrt)write(6,*)' fragment',ifr,' started from G # ',ic return end subroutine xhchange(a1,a2,r,x) c replace a1 - a2 by a1 -H, and put coordinates to x implicit none integer*4 i,a1,a2 real*8 r(*),x(*),v(3),rch rch=1.05d0 do 1 i=1,3 1 v(i)=r(3*(a2-1)+i)-r(3*(a1-1)+i) call normv(v) do 2 i=1,3 2 x(i)=r(3*(a1-1)+i)+rch*v(i) return end subroutine contacts(ifrs,iind,nat,DL,r,lwrt,nt,bt,ity,fra,fri, 1ifra,ifri,afrs,nextra,xextra,iextra,indextra,xf,iz,cm,epsin, 1epsout,DW,lhb,rdist,lmin,lper,px,py,pz) implicit none integer*4 ifrs,fra,ir,iind(*),nat,ia,ib,ic, 1nt(*),bt(nat,7),ity(*),ntree,ift,nextra,iextra(*), 1indextra(*),iz(*),fri,ifra,ifri,afrs,i,ix,icp,io,ih integer*4, allocatable::naf(:),fats(:,:),tree(:),nati(:) real*8 DL,dl2,d2,xa,xb,ya,yb,za,zb,r(*),xextra(*), 1xf(*),cm(*),epsin,epsout,DW,rdist(*),px,py,pz logical lwrt,lhb,lmin,lper write(6,6009)DL 6009 format(/,/,' contact fragments requested with DL =',f9.2,' A') c naf(i) .. number of atoms in fragment i that are overlapped c fats( .. list of atoms in the fragment allocate(fats(nat,nat),naf(nat),tree(nat),nati(nat)) dl2=DL**2 do 8 ir=1,ifrs call readfr(ir,iind,nat) naf(ir)=0 do 8 ia=1,nat if(iind(ia).ne.0)then naf(ir)=naf(ir)+1 fats(naf(ir),ir)=ia endif 8 continue do 10 ia=1,nat xa=r(3*(ia-1)+1) ya=r(3*(ia-1)+2) za=r(3*(ia-1)+3) do 10 ib=1,ia xb=r(3*(ib-1)+1) yb=r(3*(ib-1)+2) zb=r(3*(ib-1)+3) d2=(xb-xa)**2+(yb-ya)**2+(zb-za)**2 if(d2.le.dl2)then c atoms ia and ib are close c is ia-ib pair part of the same fragment: do 9 ir=1,ifrs do 9 ic=1,naf(ir) if(ia.eq.fats(ic,ir))then c ia is part of ir do 92 icp=1,naf(ir) c if ia and ib are both in ir, skip this pair: 92 if(ib.eq.fats(icp,ir))goto 10 endif 9 continue c skip ions/single atoms if(nt(ia).lt.1.or.nt(ib).lt.1)goto 10 c skip water molecules if(ity(ia).eq.8.and.nt(ia).eq.2)then if(ity(bt(ia,1)).eq.1.and.ity(bt(ia,2)).eq.1)goto 10 endif if(ity(ia).eq.1.and.nt(ia).eq.1)then io=bt(ia,1) if(ity(io).eq.8.and.nt(io).eq.2)then ih=bt(io,1) if(ih.eq.ia)ih=bt(io,2) if(ity(ih).eq.1.and.nt(ih).eq.1)goto 10 endif endif if(ity(ib).eq.8.and.nt(ib).eq.2)then if(ity(bt(ib,1)).eq.1.and.ity(bt(ib,2)).eq.1)goto 10 endif if(ity(ib).eq.1.and.nt(ib).eq.1)then io=bt(ib,1) if(ity(io).eq.8.and.nt(io).eq.2)then ih=bt(io,1) if(ih.eq.ib)ih=bt(io,2) if(ity(ih).eq.1.and.nt(ih).eq.1)goto 10 endif endif c ia and ib are not in any fragment yet: if(lwrt)write(6,6000)ia,ib,dsqrt(d2) 6000 format(i4,' and ',i4,' are not in any fragment yet, d = ', 1 f9.2,' A') c create the contact fragment, based on aminoacids: call createtreeAK(ia,ib,tree,ntree,nt,bt,nat,ity, 1 nextra,xextra,iextra,indextra,r,lwrt,rdist) ift=0 do 11 ix=1,nat 11 iind(ix)=0 do 12 ix=1,ntree 12 call attofr(ift,nati,tree(ix),'contact',lwrt) ifrs=ifrs+1 write(6,*)' fragment ',ifrs write(6,*)' atoms ',(nati(ix),ix=1,ift) do 223 ix=1,ift iind(nati(ix))=ix iz(ix)=ity(nati(ix)) do 223 i=1,3 223 xf(i+3*(ix-1))=r(i+3*(nati(ix)-1)) if(nextra.ne.0)then do 226 ix=1,nextra iz(ift+ix)=iextra(ix) if(indextra(ix).ne.0)iind(indextra(ix))=ift+ix do 226 i=1,3 226 xf(i+3*(ift+ix-1))=xextra(i+3*(ix-1)) ift=ift+nextra if(lwrt)write(6,*)nextra,' extra atoms added' endif afrs=afrs+ift call hydfr(ifrs,ift,xf,iind,iz,nat,r,DW,ity,bt,nt,lhb, 1 lper,px,py,pz) call savefr(ifrs,ift,xf,iind,iz,nat,lmin) call epsfr(ifrs,ift,xf,nat,r,cm,epsin,epsout) if(lwrt)write(6,7000)ifrs 7000 format(18(1h*),' fragment saved as number',i10,2x,18(1h*)) if(ift.lt.fri)then fri=ift ifri=ifrs endif if(ift.gt.fra)then fra=ift ifra=ifrs endif naf(ifrs)=0 do 13 i=1,nat if(iind(i).ne.0)then naf(ifrs)=naf(ifrs)+1 fats(naf(ifrs),ifrs)=i endif 13 continue endif c if(d2.le.dl2)then 10 continue return end subroutine ss(ifrs,iind,nat,r,lwrt,nt,bt,ity,fra,fri,ifra,ifri, 1afrs,nextra,xextra,iextra,indextra,xf,iz,cm,epsin,epsout,DW,lhb, 2rdist,lmin,lper,px,py,pz) implicit none integer*4 ifrs,fra,iind(*),nat,ia,ib,jx, 1nt(*),bt(nat,7),ity(*),ntree,ift,nextra,iextra(*), 1indextra(*),iz(*),fri,ifra,ifri,afrs,i,ix integer*4, allocatable::tree(:),nati(:) real*8 r(*),xextra(*),xf(*),cm(*),epsin,epsout,DW,rdist(*), 1px,py,pz logical lwrt,lhb,lmin,lper write(6,6009) 6009 format(/,/,' Extra SS fragments requested') allocate(tree(nat),nati(nat)) c identify S-S do 1 ia=1,nat if(ity(ia).eq.16.and.nt(ia).eq.2)then do 2 jx=1,nt(ia) ib=bt(ia,jx) if(ity(ib).eq.16.and.ia.lt.ib)then if(lwrt)write(6,600)ia,ib 600 format(' S-S pair ',2i5) c create the contact fragment, based on aminoacids: call createtreeAK(ia,ib,tree,ntree,nt,bt,nat,ity, 1 nextra,xextra,iextra,indextra,r,lwrt,rdist) ift=0 do 11 ix=1,nat 11 iind(ix)=0 do 12 ix=1,ntree 12 call attofr(ift,nati,tree(ix),'SS',lwrt) ifrs=ifrs+1 write(6,*)' fragment ',ifrs write(6,*)' atoms ',(nati(ix),ix=1,ift) do 223 ix=1,ift iind(nati(ix))=ix iz(ix)=ity(nati(ix)) do 223 i=1,3 223 xf(i+3*(ix-1))=r(i+3*(nati(ix)-1)) if(nextra.ne.0)then do 226 ix=1,nextra iz(ift+ix)=iextra(ix) if(indextra(ix).ne.0)iind(indextra(ix))=ift+ix do 226 i=1,3 226 xf(i+3*(ift+ix-1))=xextra(i+3*(ix-1)) ift=ift+nextra if(lwrt)write(6,*)nextra,' extra atoms added' endif afrs=afrs+ift call hydfr(ifrs,ift,xf,iind,iz,nat,r,DW,ity,bt,nt,lhb, 1 lper,px,py,pz) call savefr(ifrs,ift,xf,iind,iz,nat,lmin) call epsfr(ifrs,ift,xf,nat,r,cm,epsin,epsout) if(lwrt)write(6,7000)ifrs 7000 format(18(1h*),' fragment saved as number',i10,2x,18(1h*)) if(ift.lt.fri)then fri=ift ifri=ifrs endif if(ift.gt.fra)then fra=ift ifra=ifrs endif endif 2 continue endif 1 continue return end subroutine createtreeAK(i1,i2,tree,ntree,nt,bt,nat,ity, 1nextra,xextra,iextra,indextra,r,lwrt,rdist) c find atoms hanging on the i1 i2 pair up to the aminoacid termini c c CH3-CONH NHCO-CH3 c \ / c ...... i1 ....i2 ..... c / \ c CH3NHCO CONHCH3 c implicit none integer*4 i1,i2,ntree,tree(*),ix,nt(*),ia,bt(nat,7),ib,iaa,nat, 1ity(*),ns,i,nextra,iextra(*),indextra(*),t,ico,in,io,j, 1ncx,nnx,ixx,it logical lwrt,lt_1,lt_2,lt_3 integer*4,allocatable::s1(:),s2(:),nn1(:),nn2(:),nc1(:),nc2(:), 1nc3(:),nn3(:) real*8 xc(3),xh1(3),xh2(3),xh3(3),xextra(*),r(*),rdist(*) allocate(s1(nat),s2(nat),nc1(nat),nc2(nat),nn1(nat),nn2(nat), 1nn3(nat),nc3(nat)) c number of atoms in the tree: ntree=0 c extra atoms, like methyl ends: nextra=0 c number of S-S bridges: ns=0 c number of NHC(O)-X bonds ncx=0 c number of CON(H)-X bonds nnx=0 c initiate just for debugger: nc2(1)=0 nn2(1)=0 s2(1)=0 c c initiate tree (it to avoid debug messages): it=i1 call addta(ntree,tree,it) it=i2 call addta(ntree,tree,it) if(nt(i1).eq.0)then write(6,*)i1 call report('nothing on i1') endif if(nt(i2).eq.0)call report('nothing on i2') c atoms hanging on ntree atoms: 222 do 2 ia=1,ntree t=tree(ia) do 3 ix=1,nt(t) ib=bt(t,ix) c skip atoms already in the tree: do 4 iaa=1,ntree 4 if(ib.eq.tree(iaa))goto 3 c skip atoms of cut bonds: do 41 i=1,ns 41 if(ib.eq.s2(i))goto 3 do 42 i=1,ncx 42 if(ib.eq.nc2(i))goto 3 do 43 i=1,nnx 43 if(ib.eq.nn2(i))goto 3 c bond tree(ia) - ib c c detect S-S bridge: if(ity(t).eq.16.and.ity(ib).eq.16)then ns=ns+1 s1(ns)=t s2(ns)=ib goto 3 endif c c detect NHC(O)- X bonds c t ib if(ity(t).eq.6.and.nt(t).eq.3)then in=0 io=0 do 7 i=1,nt(t) j=bt(t,i) if(j.ne.ib)then if(ity(j).eq.7)in=in+1 if(ity(j).eq.8)io=j endif 7 continue if(in.eq.1.and.io.ne.0)then ncx=ncx+1 nc1(ncx)=t nc2(ncx)=ib nc3(ncx)=io goto 3 endif endif c c detect CON(H)- X bonds,X<>H c j t ib if(ity(t).eq.7.and.nt(t).eq.3.and.ity(ib).ne.1)then ico=0 do 6 i=1,nt(t) j=bt(t,i) lt_1=.false. lt_2=.false. lt_3=.false. if(bt(j,1).ne.0)lt_1=ity(bt(j,1)).eq.8 if(bt(j,2).ne.0)lt_2=ity(bt(j,2)).eq.8 if(bt(j,3).ne.0)lt_3=ity(bt(j,3)).eq.8 6 if(ity(j).eq.6.and.nt(j).eq.3.and.j.ne.ib.and. 1 (lt_1.or.lt_2.or.lt_3)) 2 ico=j if(ico.ne.0)then nnx=nnx+1 nn1(nnx)=t nn2(nnx)=ib nn3(nnx)=ico goto 3 endif endif c add atom ib to the tree and start again: call att(ntree,nat,tree,ib) goto 222 3 continue 2 continue c if atoms of cut bonds are bonded to the fragment, c do not cut, add them 333 continue do 51 i=1,ntree t=tree(i) do 51 j=1,nt(t) ib=bt(t,j) do 52 ix=1,ns if(ib.eq.s2(ix).and.t.ne.s1(ix))then call att(ntree,nat,tree,s2(ix)) do 53 ixx=ix,ns-1 s1(ixx)=s1(ixx+1) 53 s2(ixx)=s2(ixx+1) ns=ns-1 goto 333 endif 52 continue do 54 ix=1,nnx if(ib.eq.nn2(ix).and.t.ne.nn1(ix))then call att(ntree,nat,tree,nn2(ix)) do 55 ixx=ix,nnx-1 nn1(ixx)=nn1(ixx+1) nn2(ixx)=nn2(ixx+1) 55 nn3(ixx)=nn3(ixx+1) nnx=nnx-1 goto 333 endif 54 continue do 56 ix=1,ncx if(ib.eq.nc2(ix).and.t.ne.nc1(ix))then call att(ntree,nat,tree,nc2(ix)) do 57 ixx=ix,ncx-1 nc1(ixx)=nc1(ixx+1) nc2(ixx)=nc2(ixx+1) 57 nc3(ixx)=nc3(ixx+1) ncx=ncx-1 goto 333 endif 56 continue 51 continue do 5 ix=1,ns c for each S-S bridge add second sulphur: c ntree=ntree+1 c tree(ntree)=s2(ix) c try to add CH3: c do 58 i=1,nt(s2(ix)) c ia=bt(s2(ix),i) c if(ia.ne.s1(ix))then c call methyl(s1(ix),s2(ix),ia,nt,bt,nat,r,xc,xh1,xh2,xh3) c call incrextra(iextra,xextra,nextra,xc ,6,indextra, 0) c call incrextra(iextra,xextra,nextra,xh1,1,indextra, 0) c call incrextra(iextra,xextra,nextra,xh2,1,indextra, 0) c call incrextra(iextra,xextra,nextra,xh3,1,indextra, 0) c if(lwrt)write(6,*)' 4 extra atoms on S-S bridge number ',ix c endif c8 continue c for each S-S bridge add hydrogen instead of the second sulphur: call hethyl(s1(ix),s2(ix),r,xc) call incrextra(iextra,xextra,nextra,xc,1,indextra, 0) c remove s1 from the list call rtt(ntree,tree,s1(ix)) if(lwrt)write(6,*)'S',s1(ix),' removed' c add s1 again to the fragment, but as extra so it is not transferred: xc(1)=r(3*(s1(ix)-1)+1) xc(2)=r(3*(s1(ix)-1)+2) xc(3)=r(3*(s1(ix)-1)+3) call incrextra(iextra,xextra,nextra,xc,16,indextra, 0) 5 continue do 8 ix=1,nnx c for each N-X bridge replace X by methyl call methyl(nn3(ix),nn1(ix),nn2(ix),nt,bt,nat,r,xc,xh1,xh2,xh3, 12,rdist) call incrextra(iextra,xextra,nextra,xc ,6,indextra, 0) call incrextra(iextra,xextra,nextra,xh1,1,indextra, 0) call incrextra(iextra,xextra,nextra,xh2,1,indextra, 0) call incrextra(iextra,xextra,nextra,xh3,1,indextra, 0) 8 if(lwrt)write(6,*)' 4 extra atoms on CON-X number ',ix do 9 ix=1,ncx c for each C-X bridge replace X by methyl call methyl(nc3(ix),nc1(ix),nc2(ix),nt,bt,nat,r,xc,xh1,xh2,xh3, 11,rdist) call incrextra(iextra,xextra,nextra,xc ,6,indextra, 0) call incrextra(iextra,xextra,nextra,xh1,1,indextra, 0) call incrextra(iextra,xextra,nextra,xh2,1,indextra, 0) call incrextra(iextra,xextra,nextra,xh3,1,indextra, 0) 9 if(lwrt)write(6,*)' 4 extra atoms on NCO-X number ',ix return end subroutine addta(ntree,tree,i1) implicit none integer*4 ntree,tree(*),i1 ntree=ntree+1 tree(ntree)=i1 return end subroutine report(s) character*(*) s write(6,*)s stop end subroutine att(ntree,nat,tree,ib) c add atom ib to tree implicit none integer*4 ntree,nat,tree(*),ib ntree=ntree+1 if(ntree.gt.nat)call report('too many atoms in tree') tree(ntree)=ib return end subroutine rtt(ntree,tree,ib) c remove atom ib form tree implicit none integer*4 ntree,tree(*),ib,i,j do 1 i=1,ntree if(tree(i).eq.ib)then do 2 j=i,ntree-1 2 tree(j)=tree(j+1) ntree=ntree-1 return endif 1 continue write(6,*)ib call report('atom not in tree') end subroutine gcenter(r,cm,nat) implicit none real*8 r(*),cm(*) integer*4 ia,ix,nat do 1 ix=1,3 cm(ix)=0.0d0 do 2 ia=1,nat 2 cm(ix)=cm(ix)+r(3*(ia-1)+ix) 1 cm(ix)=cm(ix)/dble(nat) return end subroutine del_shadow(nat,nats,t,i_s,r_s,nt_s,bt_s,ity_s) c call del_shadow(nat,nats,tree(ix),i_s,r_s,nt_s,bt_s,ity_s) implicit none integer*4 x,t,s,i_s(*),b(7),i,j,nt_s(*),bt_s(2*nat,7),nat,nats, 1ity_s(*) real*8 r_s(*) c deletes atom number t (numbering in original structure) c number in the shadow structure: do 7 s=1,nats 7 if(i_s(s).eq.t)goto 8 write(6,*)t,' atom not found' return 8 continue c c delete its records: do 1 i=s,nats-1 nt_s(i)=nt_s(i+1) ity_s(i)=ity_s(i+1) i_s(i)=i_s(i+1) do 2 j=1,7 2 bt_s(i,j)=bt_s(i+1,j) do 1 x=1,3 1 r_s(x+3*(i-1))=r_s(x+3*(i+1-1)) nats=nats-1 do 3 i=1,nats c delete atoms s from the bond table of atom i: do 4 j=1,7 4 b(j)=bt_s(i,j) do 5 j=1,nt_s(i) 5 if(b(j).eq.s)b(j)=0 do 10 j=1,7 10 bt_s(i,j)=0 nt_s(i)=0 do 6 j=1,7 if(b(j).ne.0)then nt_s(i)=nt_s(i)+1 bt_s(i,nt_s(i))=b(j) endif 6 continue c renumber the other atom sin bond table: do 9 j=1,nt_s(i) 9 if(bt_s(i,j).gt.s)bt_s(i,j)=bt_s(i,j)-1 3 continue return end subroutine add_shadow(nat,nats,t, r,y,i_s,r_s,nt_s,bt_s,ity_s) implicit none integer*4 t,i_s(*),i,nt_s(*),bt_s(2*nat,7),nat,nats,y,ity_s(*) real*8 r_s(*),r(3) c add atom of type y and coordinates r bonded to t c to the shadow structure: nats=nats+1 if(nats.gt.nat*2)call report('too many atoms in add_shadow') i=nats i_s(i)=0 ity_s(i)=y nt_s(i)=1 bt_s(i,1)=t nt_s(t)=nt_s(t)+1 if(nt_s(t).gt.7)call report('too many bonds in add_shadow') bt_s(t,nt_s(t))=i r_s(1+3*(i-1))=r(1) r_s(2+3*(i-1))=r(2) r_s(3+3*(i-1))=r(3) return end subroutine asbt(nat,nts,nt,bts,bt) implicit none integer*4 nat,nts(*),nt(*),bts(nat,7),bt(nat,7),i,ix do 1 i=1,nat nts(i)=nt(i) do 1 ix=1,nt(i) 1 bts(i,ix)=bt(i,ix) return end subroutine brkb(a,b,nt,nat,bt) implicit none integer a,b,nt(*),nat,bt(nat,7),ix,ixx do 1 ix=1,nt(a) 1 if(bt(a,ix).eq.b)goto 2 2 do 3 ixx=ix,nt(a)-1 3 bt(a,ixx)=bt(a,ixx+1) nt(a)=nt(a)-1 do 10 ix=1,nt(b) 10 if(bt(b,ix).eq.a)goto 20 20 do 30 ixx=ix,nt(b)-1 30 bt(b,ixx)=bt(b,ixx+1) nt(b)=nt(b)-1 return end subroutine purify(tree,ntree,ipep,nat,igc) implicit none integer*4 i,j,k,ia,tree(*),ntree,nat,ipep(nat,11),igc do 1 i=1,11 ia=ipep(igc,i) do 2 j=1,ntree if(tree(j).eq.ia)then do 3 k=j,ntree-1 3 tree(k)=tree(k+1) ntree=ntree-1 goto 1 endif 2 continue 1 continue return end subroutine createtreep(i1,i2,i3,tree,ntree,nt,bt,nat,ity, 1nextra,xextra,iextra,indextra,r,lwrt,rdist) c find atoms hanging on the i1-i2 bond, on i2: c proline N -C c except of i3, and do not go back over the proline chain implicit none integer*4 i1,i2,ntree,tree(*),ix,nt(*),ia,bt(nat,7),ib,iaa,nat, 1i3,ity(*),ns,i,nextra,iextra(*),indextra(*),ibb logical lwrt integer*4,allocatable::s1(:),s2(:) real*8 xc(3),xh1(3),xh2(3),xh3(3),xextra(*),r(*),rdist(*) allocate(s1(nat),s2(nat)) c number of atoms in the tree: ntree=0 c number of S-S bridges: ns=0 c atoms hanging on i2: do 1 ix=1,nt(i2) ia=bt(i2,ix) if(ia.ne.i1)then ntree=ntree+1 tree(ntree)=ia endif 1 continue c atoms hanging on ntree atoms: 222 do 2 ia=1,ntree do 3 ix=1,nt(tree(ia)) ib=bt(tree(ia),ix) if(ib.ne.i2.and.ib.ne.i3.and.ib.ne.i1)then if(ity(tree(ia)).eq.16.and.ity(ib).eq.16)then c detect S-S bridge: ns=ns+1 s1(ns)=tree(ia) s2(ns)=ib else c is it connected to N of proline: do 6 ibb=1,nt(ib) 6 if(bt(ib,ibb).eq.i1)goto 3 c is the atom already in: do 4 iaa=1,ntree 4 if(ib.eq.tree(iaa))goto 3 c add atom ib ntree=ntree+1 tree(ntree)=ib goto 222 endif endif 3 continue 2 continue do 5 ix=1,ns c for each S-S bridge add second sulphur: ntree=ntree+1 tree(ntree)=s2(ix) c try to add CH3: do 5 i=1,nt(s2(ix)) ia=bt(s2(ix),i) if(ia.ne.s1(ix))then call methyl(s1(ix),s2(ix),ia,nt,bt,nat,r,xc,xh1,xh2,xh3,3,rdist) call incrextra(iextra,xextra,nextra,xc ,6,indextra,ia) call incrextra(iextra,xextra,nextra,xh1,1,indextra, 0) call incrextra(iextra,xextra,nextra,xh2,1,indextra, 0) call incrextra(iextra,xextra,nextra,xh3,1,indextra, 0) if(lwrt)write(6,*)' 4 extra atoms on S-S bridge number ',ix endif 5 continue return end