subroutine molread_zs(molnum) C C Read molecular data. C implicit real*8 (a-h,o-z) include 'DIMENSIONS' include 'DIMENSIONS.ZSCOPT' include 'COMMON.IOUNITS' include 'COMMON.GEO' include 'COMMON.VAR' include 'COMMON.INTERACT' include 'COMMON.LOCAL' include 'COMMON.NAMES' include 'COMMON.CHAIN' include 'COMMON.FFIELD' include 'COMMON.SBRIDGE' include 'COMMON.ALLPROT' include 'COMMON.TORCNSTR' character*4 sequence(maxres) integer rescode double precision x(maxvar) character*320 controlcard,ucase dimension itype_pdb(maxres) logical seq_comp call card_concat(controlcard,.true.) call reada(controlcard,'SCAL14',scal14,0.4d0) call reada(controlcard,'SCALSCP',scalscp,1.0d0) call reada(controlcard,'CUTOFF',cutoff_corr,7.0d0) call reada(controlcard,'DELT_CORR',delt_corr,0.5d0) r0_corr=cutoff_corr-delt_corr call readi(controlcard,"NRES",nres,0) iscode=index(controlcard,"ONE_LETTER") if (nres.le.0) then write (iout,*) "Error: no residues in molecule",molnum stop endif write(iout,*) 'molnum:',molnum,' nres=',nres C Read sequence of the protein if (iscode.gt.0) then read (inp,'(80a1)') (sequence(i)(1:1),i=1,nres) else read (inp,'(20(1x,a3))') (sequence(i),i=1,nres) endif C Convert sequence to numeric code do i=1,nres itype(i)=rescode(i,sequence(i),iscode) enddo write (iout,*) "Numeric code:" write (iout,'(20i4)') (itype(i),i=1,nres) do i=1,nres-1 #ifdef PROCOR if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1) then #else if (itype(i).eq.ntyp1) then #endif itel(i)=0 #ifdef PROCOR else if (itype(i+1).ne.20) then #else else if (itype(i).ne.20) then #endif itel(i)=1 else itel(i)=2 endif enddo call read_bridge nnt=1 nct=nres write(iout,*) 'NNT=',NNT,' NCT=',NCT if (itype(1).eq.ntyp1) nnt=2 if (itype(nres).eq.ntyp1) nct=nct-1 call setup_var call init_int_table call store_molinfo(molnum) if (ns_zs(molnum).gt.0) then write (iout,'(/a,i3,a)') 'The chain contains',ns_zs(molnum), & ' disulfide-bridging cysteines.' write (iout,'(20i4)') (iss_zs(i,molnum),i=1,ns_zs(molnum)) write (iout,'(/a/)') 'Pre-formed links are:' do i=1,nss_zs(1,molnum) i1=ihpb_zs(i,1,molnum)-nres_zs(molnum) i2=jhpb_zs(i,1,molnum)-nres_zs(molnum) it1=itype_zs(i1,molnum) it2=itype_zs(i2,molnum) write (iout,'(2a,i3,3a,i3,a,3f10.3)') & restyp(it1),'(',i1,') -- ',restyp(it2),'(',i2,')', & dhpb_zs(i,molnum),ebr,forcon_zs(i,molnum) enddo endif write (iout,*) "Protein:",molnum," leaving MOLREAD_ZS" call flush(iout) return end c----------------------------------------------------------------------------- logical function seq_comp(itypea,itypeb,length) implicit none integer length,itypea(length),itypeb(length) integer i do i=1,length if (itypea(i).ne.itypeb(i)) then seq_comp=.false. return endif enddo seq_comp=.true. return end c----------------------------------------------------------------------------- subroutine read_bridge C Read information about disulfide bridges. implicit real*8 (a-h,o-z) include 'DIMENSIONS' include 'DIMENSIONS.ZSCOPT' include 'COMMON.IOUNITS' include 'COMMON.GEO' include 'COMMON.VAR' include 'COMMON.INTERACT' include 'COMMON.NAMES' include 'COMMON.CHAIN' include 'COMMON.FFIELD' include 'COMMON.SBRIDGE' include 'COMMON.ALLPROT' C Read bridging residues. read (inp,*) ns,(iss(i),i=1,ns) c print *,'ns=',ns write (iout,*) 'ns=',ns,' iss:',(iss(i),i=1,ns) C Check whether the specified bridging residues are cystines. do i=1,ns if (itype(iss(i)).ne.1) then write (iout,'(2a,i3,a)') & 'Do you REALLY think that the residue ',restyp(iss(i)),i, & ' can form a disulfide bridge?!!!' write (*,'(2a,i3,a)') & 'Do you REALLY think that the residue ',restyp(iss(i)),i, & ' can form a disulfide bridge?!!!' stop endif enddo C Read preformed bridges. if (ns.gt.0) then read (inp,*) nss,(ihpb(i),jhpb(i),i=1,nss) write (iout,*) 'nss=',nss,' ihpb,jhpb: ',(ihpb(i),jhpb(i),i=1,nss) if (nss.gt.0) then nhpb=nss C Check if the residues involved in bridges are in the specified list of C bridging residues. do i=1,nss do j=1,i-1 if (ihpb(i).eq.ihpb(j).or.ihpb(i).eq.jhpb(j) & .or.jhpb(i).eq.ihpb(j).or.jhpb(i).eq.jhpb(j)) then write (iout,'(a,i3,a)') 'Disulfide pair',i, & ' contains residues present in other pairs.' write (*,'(a,i3,a)') 'Disulfide pair',i, & ' contains residues present in other pairs.' stop endif enddo do j=1,ns if (ihpb(i).eq.iss(j)) goto 10 enddo write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.' 10 continue do j=1,ns if (jhpb(i).eq.iss(j)) goto 20 enddo write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.' 20 continue dhpb(i)=dbr forcon(i)=fbr enddo do i=1,nss ihpb(i)=ihpb(i)+nres jhpb(i)=jhpb(i)+nres enddo endif endif return end c------------------------------------------------------------------------------ subroutine store_molinfo(molnum) implicit real*8 (a-h,o-z) include "DIMENSIONS" include 'DIMENSIONS.ZSCOPT' include "COMMON.ALLPROT" include 'COMMON.CHAIN' include 'COMMON.SBRIDGE' include "COMMON.VAR" include "COMMON.INTERACT" include "COMMON.LOCAL" include "COMMON.IOUNITS" nres_zs(molnum)=nres nnt_zs(molnum)=nnt nct_zs(molnum)=nct iatsc_s_zs(molnum)=iatsc_s iatsc_e_zs(molnum)=iatsc_e iatel_s_zs(molnum)=iatel_s iatel_e_zs(molnum)=iatel_e iturn3_start_zs(molnum)=iturn3_start iturn3_end_zs(molnum)=iturn3_end iturn4_start_zs(molnum)=iturn4_start iturn4_end_zs(molnum)=iturn4_end iatscp_s_zs(molnum)=iatscp_s iatscp_e_zs(molnum)=iatscp_e loc_start_zs(molnum)=loc_start loc_end_zs(molnum)=loc_end ithet_start_zs(molnum)=ithet_start ithet_end_zs(molnum)=ithet_end iphi_start_zs(molnum)=iphi_start iphi_end_zs(molnum)=iphi_end itau_start_zs(molnum)=itau_start itau_end_zs(molnum)=itau_end nvar_zs(molnum)=nvar nphi_zs(molnum)=nphi ntheta_zs(molnum)=ntheta nside_zs(molnum)=nside do i=1,nres ialph_zs(i,1,molnum)=ialph(i,1) ialph_zs(i,2,molnum)=ialph(i,2) enddo do i=1,nres nint_gr_zs(i,molnum)=nint_gr(i) nscp_gr_zs(i,molnum)=nscp_gr(i) do j=1,nint_gr(i) istart_zs(i,j,molnum)=istart(i,j) iend_zs(i,j,molnum)=iend(i,j) enddo itype_zs(i,molnum)=itype(i) itel_zs(i,molnum)=itel(i) ielstart_zs(i,molnum)=ielstart(i) ielend_zs(i,molnum)=ielend(i) c write (iout,*) "i",i," nscp_gr",nscp_gr(i), c & " iscp",(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i)) do j=1,nscp_gr(i) iscpstart_zs(i,j,molnum)=iscpstart(i,j) iscpend_zs(i,j,molnum)=iscpend(i,j) enddo enddo ns_zs(molnum)=ns c nss_zs(molnum)=nss c nfree_zs(molnum)=nfree c do i=1,ns c iss_zs(i,molnum)=iss(i) c enddo c do i=1,nss c ihpb_zs(i,molnum)=ihpb(i) c jhpb_zs(i,molnum)=jhpb(i) c dhpb_zs(i,molnum)=dhpb(i) c forcon_zs(i,molnum)=forcon(i) c enddo link_start_zs(molnum)=link_start link_end_zs(molnum)=link_end return end c------------------------------------------------------------------------------ subroutine restore_molinfo(molnum) implicit real*8 (a-h,o-z) include "DIMENSIONS" include 'DIMENSIONS.ZSCOPT' include "COMMON.ALLPROT" include "COMMON.SBRIDGE" include "COMMON.CHAIN" include "COMMON.VAR" include "COMMON.INTERACT" include "COMMON.TORCNSTR" include "COMMON.LOCAL" ndih_constr=0 nres=nres_zs(molnum) nnt=nnt_zs(molnum) nct=nct_zs(molnum) iatsc_s=iatsc_s_zs(molnum) iatsc_e=iatsc_e_zs(molnum) iatel_s=iatel_s_zs(molnum) iatel_e=iatel_e_zs(molnum) iturn3_start=iturn3_start_zs(molnum) iturn3_end=iturn3_end_zs(molnum) iturn4_start=iturn4_start_zs(molnum) iturn4_end=iturn4_end_zs(molnum) iatscp_s=iatscp_s_zs(molnum) iatscp_e=iatscp_e_zs(molnum) ithet_start=ithet_start_zs(molnum) ithet_end=ithet_end_zs(molnum) iphi_start=iphi_start_zs(molnum) iphi_end=iphi_end_zs(molnum) itau_start=itau_start_zs(molnum) itau_end=itau_end_zs(molnum) loc_start=loc_start_zs(molnum) loc_end=loc_end_zs(molnum) nvar=nvar_zs(molnum) nphi=nphi_zs(molnum) ntheta=ntheta_zs(molnum) nside=nside_zs(molnum) do i=1,nres ialph(i,1)=ialph_zs(i,1,molnum) ialph(i,2)=ialph_zs(i,2,molnum) enddo do i=1,nres nint_gr(i)=nint_gr_zs(i,molnum) nscp_gr(i)=nscp_gr_zs(i,molnum) do j=1,nint_gr(i) istart(i,j)=istart_zs(i,j,molnum) iend(i,j)=iend_zs(i,j,molnum) enddo itype(i)=itype_zs(i,molnum) itel(i)=itel_zs(i,molnum) ielstart(i)=ielstart_zs(i,molnum) ielend(i)=ielend_zs(i,molnum) do j=1,nscp_gr(i) iscpstart(i,j)=iscpstart_zs(i,j,molnum) iscpend(i,j)=iscpend_zs(i,j,molnum) enddo enddo ns=ns_zs(molnum) c nss=nss_zs(molnum) c nfree=nfree_zs(molnum) c do i=1,ns c iss(i)=iss_zs(i,molnum) c enddo c do i=1,nss c ihpb(i)=ihpb_zs(i,molnum) c jhpb(i)=jhpb_zs(i,molnum) c dhpb(i)=dhpb_zs(i,molnum) c forcon(i)=forcon_zs(i,molnum) c enddo link_start=link_start_zs(molnum) link_end=link_end_zs(molnum) return end c------------------------------------------------------------------------------ subroutine read_angles(kanal,iscor,energ,iprot,*) implicit real*8 (a-h,o-z) include 'DIMENSIONS' include 'DIMENSIONS.ZSCOPT' include 'COMMON.INTERACT' include 'COMMON.SBRIDGE' include 'COMMON.GEO' include 'COMMON.VAR' include 'COMMON.CHAIN' include 'COMMON.IOUNITS' character*80 lineh read(kanal,'(a80)',end=10,err=10) lineh read(lineh(:5),*,err=8) ic read(lineh(6:),*,err=8) energ goto 9 8 ic=1 print *,'error, assuming e=1d10',lineh energ=1d10 nss=0 9 continue read(lineh(18:),*,end=10,err=10) nss IF (NSS.LT.9) THEN read (lineh(20:),*,end=10,err=10) & (IHPB(I),JHPB(I),I=1,NSS),iscor ELSE read (lineh(20:),*,end=10,err=10) (IHPB(I),JHPB(I),I=1,8) read (kanal,*,end=10,err=10) (IHPB(I),JHPB(I), & I=9,NSS),iscor ENDIF c print *,"energy",energ," iscor",iscor read (kanal,*,err=10,end=10) (theta(i),i=3,nres) read (kanal,*,err=10,end=10) (phi(i),i=4,nres) read (kanal,*,err=10,end=10) (alph(i),i=2,nres-1) read (kanal,*,err=10,end=10) (omeg(i),i=2,nres-1) do i=1,nres theta(i)=deg2rad*theta(i) phi(i)=deg2rad*phi(i) alph(i)=deg2rad*alph(i) omeg(i)=deg2rad*omeg(i) enddo return 10 return1 end