1 subroutine read_ref_structure(iprot,*)
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 '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 include 'COMMON.COMPAR'
22 include 'COMMON.VMCPAR'
24 character*4 sequence(maxres)
26 double precision x(maxvar)
27 integer itype_pdb(maxres)
29 integer i,j,k,ib,iref,iprot,nres_pdb
30 double precision ddsc,dist
31 double precision efree_temp
35 write (2,*) "PDBREF ",pdbref
37 DO IB=1,NBETA(1,iprot)
40 write (iout,'(2a,1h.)') 'PDB data will be read from file ',
41 & pdbfile(ib,iprot)(:ilen(pdbfile(ib,iprot)))
42 open(ipdbin,file=pdbfile(ib,iprot),status='old',err=33)
44 33 write (iout,'(a)') 'Error opening PDB file.'
49 write (2,*) "Reading reference structure",iref
50 call readpdb(print_refstr,iprot,efree_temp,*44)
51 write (2,*) "After readpdb"
53 if (nres_pdb.eq.0) then
56 C Copy the coordinates to reference coordinates
57 efreeref(iref,ib,iprot)=efree_temp
60 cref(j,i,iref,ib,iprot)=c(j,i)
64 phi_ref(i,iref,ib,iprot)=phi(i)
65 theta_ref(i,iref,ib,iprot)=theta(i)
66 xxref(i,iref,ib,iprot)=xxtab(i)
67 yyref(i,iref,ib,iprot)=yytab(i)
68 zzref(i,iref,ib,iprot)=zztab(i)
76 if (nsup(iprot).le.(nct-nnt+1)) then
77 do i=0,nct-nnt+1-nsup(iprot)
78 if (seq_comp(itype(nnt+i),itype_pdb(nstart_sup(iprot)),
80 do j=nnt+nsup(iprot)-1,nnt,-1
82 cref(k,j+i,iref,ib,iprot)=cref(k,j,iref,ib,iprot)
83 cref(k,nres+j+i,iref,ib,iprot)=
84 & cref(k,nres_pdb+j,iref,ib,iprot)
86 phi_ref(j+i,iref,ib,iprot)=phi_ref(j,iref,ib,iprot)
87 theta_ref(j+i,iref,ib,iprot)=theta_ref(j,iref,ib,iprot)
88 xxref(j+i,iref,ib,iprot)=xxref(j,iref,ib,iprot)
89 yyref(j+i,iref,ib,iprot)=yyref(j,iref,ib,iprot)
90 zzref(j+i,iref,ib,iprot)=zzref(j,iref,ib,iprot)
93 write (iout,*) "Free energy",efreeref(iref,ib,iprot)
95 write (iout,'(i5,3f10.5,5x,3f10.5)')
96 & j,(cref(k,j,iref,ib,iprot),k=1,3),
97 & (cref(k,j+nres,iref,ib,iprot),k=1,3)
101 nstart_sup(iprot)=nnt+i
106 & 'Error - sequences to be superposed do not match.'
109 do i=0,nsup(iprot)-(nct-nnt+1)
110 if (seq_comp(itype(nnt),itype_pdb(nstart_sup(iprot)+i),
113 nstart_sup(iprot)=nstart_sup(iprot)+i
114 nsup(iprot)=nct-nnt+1
119 & 'Error - sequences to be superposed do not match.'
122 write (iout,'(a,i5)')
123 & 'Experimental structure begins at residue',nstart_seq
126 nref(ib,iprot)=iref-1
127 write (iout,*) "NREF",ib,iprot,nref(ib,iprot)
131 call read_angles(inp,*38)
133 38 nref(ib,iprot)=iref-1
136 nstart_sup(iprot)=nnt
138 nsup(iprot)=nct-nnt+1
141 cref(j,i,iref,ib,iprot)=c(j,i)
144 phi_ref(i,iref,ib,iprot)=phi(i)
145 theta_ref(i,iref,ib,iprot)=theta(i)
146 xxref(i,iref,ib,iprot)=xxtab(i)
147 yyref(i,iref,ib,iprot)=yytab(i)
148 zzref(i,iref,ib,iprot)=zztab(i)
150 nref(ib,iprot)=iref-1
152 nend_sup(iprot)=nstart_sup(iprot)+nsup(iprot)-1
155 c c(j,i)=cref(j,i,iprot)
160 c dc(j,nres+i)=cref(j,nres+i,iprot)-cref(j,i,iprot)
162 c if (itype(i).ne.10) then
163 c ddsc = dist(i,nres+i)
165 c dc_norm(j,nres+i)=dc(j,nres+i)/ddsc
169 c dc_norm(j,nres+i)=0.0d0
172 c write (iout,*) "i",i," dc_norm",(dc_norm(k,nres+i),k=1,3),
173 c " norm",dc_norm(1,nres+i)**2+dc_norm(2,nres+i)**2+
174 c dc_norm(3,nres+i)**2
176 dc(j,i)=c(j,i+1)-c(j,i)
180 dc_norm(j,i)=dc(j,i)/ddsc
183 c print *,"Calling contact"
184 c call contact(print_contact,ncont_ref(iprot),icont_ref(1,1,iprot),
185 c & nstart_sup(iprot),nend_sup(iprot))
186 c print *,"Calling elecont"
187 c call elecont(print_contact,ncont_pept_ref(iprot),
188 c & icont_pept_ref(1,1,iprot),
189 c & nstart_sup(iprot),nend_sup(iprot))
190 c write (iout,'(a,i3,a,i3,a,i3,a)')
191 c & 'Number of residues to be superposed:',nsup(iprot),
192 c & ' (from residue',nstart_sup(iprot),' to residue',
193 c & nend_sup(iprot),').'