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
32 integer nnt_old,nct_old
39 write (iout,*) "pdbref",pdbref
41 read(inp,'(a)') pdbfile
42 write (iout,'(2a,1h.)') 'PDB data will be read from file ',
43 & pdbfile(:ilen(pdbfile))
44 open(ipdbin,file=pdbfile,status='old',err=33)
46 33 write (iout,'(a)') 'Error opening PDB file.'
63 if (nsup.le.(nct-nnt+1)) then
65 if (seq_comp(itype(nnt+i),itype_pdb(nstart_sup),
67 do j=nnt+nsup-1,nnt,-1
69 cref(k,nres+j+i,kkk)=cref(k,nres_pdb+j,kkk)
72 do j=nnt+nsup-1,nnt,-1
74 cref(k,j+i,kkk)=cref(k,j,kkk)
76 phi_ref(j+i)=phi_ref(j)
77 theta_ref(j+i)=theta_ref(j)
78 alph_ref(j+i)=alph_ref(j)
79 omeg_ref(j+i)=omeg_ref(j)
83 write (iout,'(i5,3f10.5,5x,3f10.5)')
84 & j,(cref(k,j,kkk),k=1,3),(cref(k,j+nres,kkk),k=1,3)
93 & 'Error - sequences to be superposed do not match.'
96 do i=0,nsup-(nct-nnt+1)
97 if (seq_comp(itype(nnt),itype_pdb(nstart_sup+i),
100 nstart_sup=nstart_sup+i
106 & 'Error - sequences to be superposed do not match.'
110 write (iout,'(a,i5)')
111 & 'Experimental structure begins at residue',nstart_seq
113 call read_angles(inp,*38)
115 38 write (iout,'(a)') 'Error reading reference structure.'
128 nend_sup=nstart_sup+nsup-1
136 dc(j,nres+i)=cref(j,nres+i,kkk)-cref(j,i,kkk)
138 if (itype(i).ne.10) then
139 ddsc = dist(i,nres+i)
141 dc_norm(j,nres+i)=dc(j,nres+i)/ddsc
145 dc_norm(j,nres+i)=0.0d0
148 c write (iout,*) "i",i," dc_norm",(dc_norm(k,nres+i),k=1,3),
149 c " norm",dc_norm(1,nres+i)**2+dc_norm(2,nres+i)**2+
150 c dc_norm(3,nres+i)**2
152 dc(j,i)=c(j,i+1)-c(j,i)
156 dc_norm(j,i)=dc(j,i)/ddsc
159 c print *,"Calling contact"
160 call contact(.true.,ncont_ref,icont_ref(1,1),
161 & nstart_sup,nend_sup)
162 c print *,"Calling elecont"
163 call elecont(.true.,ncont_pept_ref,
164 & icont_pept_ref(1,1),
165 & nstart_sup,nend_sup)
166 write (iout,'(a,i3,a,i3,a,i3,a)')
167 & 'Number of residues to be superposed:',nsup,
168 & ' (from residue',nstart_sup,' to residue',