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 'DIMENSIONS.FREE'
11 include 'COMMON.IOUNITS'
14 include 'COMMON.INTERACT'
15 include 'COMMON.LOCAL'
16 include 'COMMON.NAMES'
17 include 'COMMON.CHAIN'
18 include 'COMMON.FFIELD'
19 include 'COMMON.SBRIDGE'
20 include 'COMMON.HEADER'
21 include 'COMMON.CONTROL'
22 include 'COMMON.CONTACTS1'
23 include 'COMMON.PEPTCONT'
24 include 'COMMON.TIME1'
25 include 'COMMON.COMPAR'
26 character*4 sequence(maxres)
28 double precision x(maxvar)
29 integer itype_pdb(maxres)
31 integer i,j,k,nres_pdb,iaux
32 double precision ddsc,dist
33 integer nnt_old,nct_old
40 write (iout,*) "pdbref",pdbref
42 read(inp,'(a)') pdbfile
43 write (iout,'(2a,1h.)') 'PDB data will be read from file ',
44 & pdbfile(:ilen(pdbfile))
45 open(ipdbin,file=pdbfile,status='old',err=33)
47 33 write (iout,'(a)') 'Error opening PDB file.'
64 if (nsup.le.(nct-nnt+1)) then
66 if (seq_comp(itype(nnt+i),itype_pdb(nstart_sup),
68 do j=nnt+nsup-1,nnt,-1
70 cref(k,nres+j+i,kkk)=cref(k,nres_pdb+j,kkk)
73 do j=nnt+nsup-1,nnt,-1
75 cref(k,j+i,kkk)=cref(k,j,kkk)
77 phi_ref(j+i)=phi_ref(j)
78 theta_ref(j+i)=theta_ref(j)
79 alph_ref(j+i)=alph_ref(j)
80 omeg_ref(j+i)=omeg_ref(j)
84 write (iout,'(i5,3f10.5,5x,3f10.5)')
85 & j,(cref(k,j,kkk),k=1,3),(cref(k,j+nres,kkk),k=1,3)
94 & 'Error - sequences to be superposed do not match.'
97 do i=0,nsup-(nct-nnt+1)
98 if (seq_comp(itype(nnt),itype_pdb(nstart_sup+i),
101 nstart_sup=nstart_sup+i
107 & 'Error - sequences to be superposed do not match.'
111 write (iout,'(a,i5)')
112 & 'Experimental structure begins at residue',nstart_seq
114 call read_angles(inp,*38)
116 38 write (iout,'(a)') 'Error reading reference structure.'
129 nend_sup=nstart_sup+nsup-1
137 dc(j,nres+i)=cref(j,nres+i,kkk)-cref(j,i,kkk)
139 if (itype(i).ne.10) then
140 ddsc = dist(i,nres+i)
142 dc_norm(j,nres+i)=dc(j,nres+i)/ddsc
146 dc_norm(j,nres+i)=0.0d0
149 c write (iout,*) "i",i," dc_norm",(dc_norm(k,nres+i),k=1,3),
150 c " norm",dc_norm(1,nres+i)**2+dc_norm(2,nres+i)**2+
151 c dc_norm(3,nres+i)**2
153 dc(j,i)=c(j,i+1)-c(j,i)
157 dc_norm(j,i)=dc(j,i)/ddsc
160 c print *,"Calling contact"
161 call contact(.true.,ncont_ref,icont_ref(1,1),
162 & nstart_sup,nend_sup)
163 c print *,"Calling elecont"
164 call elecont(.true.,ncont_pept_ref,
165 & icont_pept_ref(1,1),
166 & nstart_sup,nend_sup)
167 write (iout,'(a,i3,a,i3,a,i3,a)')
168 & 'Number of residues to be superposed:',nsup,
169 & ' (from residue',nstart_sup,' to residue',