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
9 include 'COMMON.IOUNITS'
12 include 'COMMON.INTERACT'
13 include 'COMMON.LOCAL'
14 include 'COMMON.NAMES'
15 include 'COMMON.CHAIN'
16 include 'COMMON.FFIELD'
17 include 'COMMON.SBRIDGE'
18 include 'COMMON.HEADER'
19 include 'COMMON.CONTROL'
20 include 'COMMON.TIME1'
21 character*4 sequence(maxres)
23 double precision x(maxvar)
24 integer itype_pdb(maxres)
26 integer i,j,k,nres_pdb,iaux
27 double precision ddsc,dist
32 write (iout,*) "pdbref",pdbref
34 read(inp,'(a)') pdbfile
35 write (iout,'(2a,1h.)') 'PDB data will be read from file ',
36 & pdbfile(:ilen(pdbfile))
38 open(ipdbin,file=pdbfile,status='old',err=33)
40 33 write (iout,'(a)') 'Error opening PDB file.'
56 if (nsup.le.(nct-nnt+1)) then
58 if (seq_comp(itype(nnt+i),itype_pdb(nstart_sup),
60 do j=nnt+nsup-1,nnt,-1
62 cref(k,nres+j+i,1)=cref(k,nres_pdb+j,1)
65 do j=nnt+nsup-1,nnt,-1
67 cref(k,j+i,1)=cref(k,j,1)
69 phi_ref(j+i)=phi_ref(j)
70 theta_ref(j+i)=theta_ref(j)
71 alph_ref(j+i)=alph_ref(j)
72 omeg_ref(j+i)=omeg_ref(j)
82 write (iout,'(i5,3f10.5,5x,3f10.5)')
83 & j,(cref(k,j,1),k=1,3),(cref(k,j+nres,1),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
110 write (iout,'(i5,3f10.5,5x,3f10.5)')
111 & j,(cref(k,j,1),k=1,3),(cref(k,j+nres,1),k=1,3)
117 call read_angles(inp,*38)
119 38 write (iout,'(a)') 'Error reading reference structure.'
131 nend_sup=nstart_sup+nsup-1
139 dc(j,nres+i)=cref(j,nres+i,1)-cref(j,i,1)
141 if (itype(i).ne.10) then
142 ddsc = dist(i,nres+i)
144 dc_norm(j,nres+i)=dc(j,nres+i)/ddsc
148 dc_norm(j,nres+i)=0.0d0
151 c write (iout,*) "i",i," dc_norm",(dc_norm(k,nres+i),k=1,3),
152 c " norm",dc_norm(1,nres+i)**2+dc_norm(2,nres+i)**2+
153 c dc_norm(3,nres+i)**2
155 dc(j,i)=c(j,i+1)-c(j,i)
159 dc_norm(j,i)=dc(j,i)/ddsc
162 write (iout,'(a,i3,a,i3,a,i3,a)')
163 & 'Number of residues to be superposed:',nsup,
164 & ' (from residue',nstart_sup,' to residue',