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.FREE'
10 include 'DIMENSIONS.COMPAR'
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
37 write (iout,*) "pdbref",pdbref
39 read(inp,'(a)') pdbfile
40 write (iout,'(2a,1h.)') 'PDB data will be read from file ',
41 & pdbfile(:ilen(pdbfile))
42 open(ipdbin,file=pdbfile,status='old',err=33)
44 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)=cref(k,nres_pdb+j)
69 do j=nnt+nsup-1,nnt,-1
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),k=1,3),(cref(k,j+nres),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.'
106 write (iout,'(a,i5)')
107 & 'Experimental structure begins at residue',nstart_seq
109 call read_angles(inp,*38)
111 38 write (iout,'(a)') 'Error reading reference structure.'
123 nend_sup=nstart_sup+nsup-1
131 dc(j,nres+i)=cref(j,nres+i)-cref(j,i)
133 if (itype(i).ne.10) then
134 ddsc = dist(i,nres+i)
136 dc_norm(j,nres+i)=dc(j,nres+i)/ddsc
140 dc_norm(j,nres+i)=0.0d0
143 c write (iout,*) "i",i," dc_norm",(dc_norm(k,nres+i),k=1,3),
144 c " norm",dc_norm(1,nres+i)**2+dc_norm(2,nres+i)**2+
145 c dc_norm(3,nres+i)**2
147 dc(j,i)=c(j,i+1)-c(j,i)
151 dc_norm(j,i)=dc(j,i)/ddsc
154 c print *,"Calling contact"
155 call contact(.true.,ncont_ref,icont_ref(1,1),
156 & nstart_sup,nend_sup)
157 c print *,"Calling elecont"
158 call elecont(.true.,ncont_pept_ref,
159 & icont_pept_ref(1,1),
160 & nstart_sup,nend_sup)
161 write (iout,'(a,i3,a,i3,a,i3,a)')
162 & 'Number of residues to be superposed:',nsup,
163 & ' (from residue',nstart_sup,' to residue',