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.'
59 if (nsup.le.(nct-nnt+1)) then
61 if (seq_comp(itype(nnt+i),itype_pdb(nstart_sup),
63 do j=nnt+nsup-1,nnt,-1
65 cref(k,nres+j+i)=cref(k,nres_pdb+j)
68 do j=nnt+nsup-1,nnt,-1
72 phi_ref(j+i)=phi_ref(j)
73 theta_ref(j+i)=theta_ref(j)
74 alph_ref(j+i)=alph_ref(j)
75 omeg_ref(j+i)=omeg_ref(j)
79 write (iout,'(i5,3f10.5,5x,3f10.5)')
80 & j,(cref(k,j),k=1,3),(cref(k,j+nres),k=1,3)
89 & 'Error - sequences to be superposed do not match.'
92 do i=0,nsup-(nct-nnt+1)
93 if (seq_comp(itype(nnt),itype_pdb(nstart_sup+i),
96 nstart_sup=nstart_sup+i
102 & 'Error - sequences to be superposed do not match.'
105 write (iout,'(a,i5)')
106 & 'Experimental structure begins at residue',nstart_seq
108 call read_angles(inp,*38)
110 38 write (iout,'(a)') 'Error reading reference structure.'
122 nend_sup=nstart_sup+nsup-1
130 dc(j,nres+i)=cref(j,nres+i)-cref(j,i)
132 if (itype(i).ne.10) then
133 ddsc = dist(i,nres+i)
135 dc_norm(j,nres+i)=dc(j,nres+i)/ddsc
139 dc_norm(j,nres+i)=0.0d0
142 c write (iout,*) "i",i," dc_norm",(dc_norm(k,nres+i),k=1,3),
143 c " norm",dc_norm(1,nres+i)**2+dc_norm(2,nres+i)**2+
144 c dc_norm(3,nres+i)**2
146 dc(j,i)=c(j,i+1)-c(j,i)
150 dc_norm(j,i)=dc(j,i)/ddsc
153 c print *,"Calling contact"
154 call contact(.true.,ncont_ref,icont_ref(1,1),
155 & nstart_sup,nend_sup)
156 c print *,"Calling elecont"
157 call elecont(.true.,ncont_pept_ref,
158 & icont_pept_ref(1,1),
159 & nstart_sup,nend_sup)
160 write (iout,'(a,i3,a,i3,a,i3,a)')
161 & 'Number of residues to be superposed:',nsup,
162 & ' (from residue',nstart_sup,' to residue',