1 subroutine read_ref_structure(*)
3 C Read the reference structure from the PDB file or from a PDB file or in the form of the dihedral
8 include 'DIMENSIONS.ZSCOPT'
9 include 'DIMENSIONS.COMPAR'
10 include 'COMMON.IOUNITS'
13 include 'COMMON.INTERACT'
14 include 'COMMON.LOCAL'
15 include 'COMMON.NAMES'
16 include 'COMMON.CHAIN'
17 include 'COMMON.FFIELD'
18 include 'COMMON.SBRIDGE'
19 include 'COMMON.HEADER'
20 include 'COMMON.CONTROL'
21 include 'COMMON.CONTACTS1'
22 include 'COMMON.PEPTCONT'
23 include 'COMMON.TIME1'
24 include 'COMMON.COMPAR'
25 character*4 sequence(maxres)
27 double precision x(maxvar)
28 integer itype_pdb(maxres)
30 integer i,j,k,nres_pdb,iaux
31 double precision ddsc,dist
36 write (iout,*) "pdbref",pdbref
38 read(inp,'(a)') pdbfile
39 write (iout,'(2a,1h.)') 'PDB data will be read from file ',
40 & pdbfile(:ilen(pdbfile))
41 open(ipdbin,file=pdbfile,status='old',err=33)
43 33 write (iout,'(a)') 'Error opening PDB file.'
60 if (nsup.le.(nct-nnt+1)) then
62 if (seq_comp(itype(nnt+i),itype_pdb(nstart_sup),
64 do j=nnt+nsup-1,nnt,-1
66 cref(k,nres+j+i,kkk)=cref(k,nres_pdb+j,kkk)
69 do j=nnt+nsup-1,nnt,-1
71 cref(k,j+i,kkk)=cref(k,j,kkk)
73 phi_ref(j+i)=phi_ref(j)
74 theta_ref(j+i)=theta_ref(j)
75 alph_ref(j+i)=alph_ref(j)
76 omeg_ref(j+i)=omeg_ref(j)
80 write (iout,'(i5,3f10.5,5x,3f10.5)')
81 & j,(cref(k,j,kkk),k=1,3),(cref(k,j+nres,kkk),k=1,3)
90 & 'Error - sequences to be superposed do not match.'
93 do i=0,nsup-(nct-nnt+1)
94 if (seq_comp(itype(nnt),itype_pdb(nstart_sup+i),
97 nstart_sup=nstart_sup+i
103 & 'Error - sequences to be superposed do not match.'
107 write (iout,'(a,i5)')
108 & 'Experimental structure begins at residue',nstart_seq
110 call read_angles(inp,*38)
112 38 write (iout,'(a)') 'Error reading reference structure.'
125 nend_sup=nstart_sup+nsup-1
133 dc(j,nres+i)=cref(j,nres+i,kkk)-cref(j,i,kkk)
135 if (itype(i).ne.10) then
136 ddsc = dist(i,nres+i)
138 dc_norm(j,nres+i)=dc(j,nres+i)/ddsc
142 dc_norm(j,nres+i)=0.0d0
145 c write (iout,*) "i",i," dc_norm",(dc_norm(k,nres+i),k=1,3),
146 c " norm",dc_norm(1,nres+i)**2+dc_norm(2,nres+i)**2+
147 c dc_norm(3,nres+i)**2
149 dc(j,i)=c(j,i+1)-c(j,i)
153 dc_norm(j,i)=dc(j,i)/ddsc
156 c print *,"Calling contact"
157 call contact(.true.,ncont_ref,icont_ref(1,1),
158 & nstart_sup,nend_sup)
159 c print *,"Calling elecont"
160 call elecont(.true.,ncont_pept_ref,
161 & icont_pept_ref(1,1),
162 & nstart_sup,nend_sup)
163 write (iout,'(a,i3,a,i3,a,i3,a)')
164 & 'Number of residues to be superposed:',nsup,
165 & ' (from residue',nstart_sup,' to residue',