1 subroutine molread_zs(molnum)
5 implicit real*8 (a-h,o-z)
7 include 'DIMENSIONS.ZSCOPT'
8 include 'COMMON.IOUNITS'
11 include 'COMMON.INTERACT'
12 include 'COMMON.LOCAL'
13 include 'COMMON.NAMES'
14 include 'COMMON.CHAIN'
15 include 'COMMON.FFIELD'
16 include 'COMMON.SBRIDGE'
17 include 'COMMON.ALLPROT'
18 include 'COMMON.TORCNSTR'
19 character*4 sequence(maxres)
21 double precision x(maxvar)
22 character*320 controlcard,ucase
23 dimension itype_pdb(maxres)
25 call card_concat(controlcard,.true.)
26 call reada(controlcard,'SCAL14',scal14,0.4d0)
27 call reada(controlcard,'SCALSCP',scalscp,1.0d0)
28 call reada(controlcard,'CUTOFF',cutoff_corr,7.0d0)
29 call reada(controlcard,'DELT_CORR',delt_corr,0.5d0)
30 r0_corr=cutoff_corr-delt_corr
31 call readi(controlcard,"NRES",nres,0)
32 iscode=index(controlcard,"ONE_LETTER")
34 write (iout,*) "Error: no residues in molecule",molnum
37 write(iout,*) 'molnum:',molnum,' nres=',nres
38 C Read sequence of the protein
40 read (inp,'(80a1)') (sequence(i)(1:1),i=1,nres)
42 read (inp,'(20(1x,a3))') (sequence(i),i=1,nres)
44 C Convert sequence to numeric code
46 itype(i)=rescode(i,sequence(i),iscode)
48 write (iout,*) "Numeric code:"
49 write (iout,'(20i4)') (itype(i),i=1,nres)
52 if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1) then
54 if (itype(i).eq.ntyp1) then
58 else if (itype(i+1).ne.20) then
60 else if (itype(i).ne.20) then
70 write(iout,*) 'NNT=',NNT,' NCT=',NCT
71 if (itype(1).eq.ntyp1) nnt=2
72 if (itype(nres).eq.ntyp1) nct=nct-1
75 call store_molinfo(molnum)
76 if (ns_zs(molnum).gt.0) then
77 write (iout,'(/a,i3,a)') 'The chain contains',ns_zs(molnum),
78 & ' disulfide-bridging cysteines.'
79 write (iout,'(20i4)') (iss_zs(i,molnum),i=1,ns_zs(molnum))
80 write (iout,'(/a/)') 'Pre-formed links are:'
81 do i=1,nss_zs(1,molnum)
82 i1=ihpb_zs(i,1,molnum)-nres_zs(molnum)
83 i2=jhpb_zs(i,1,molnum)-nres_zs(molnum)
84 it1=itype_zs(i1,molnum)
85 it2=itype_zs(i2,molnum)
86 write (iout,'(2a,i3,3a,i3,a,3f10.3)')
87 & restyp(it1),'(',i1,') -- ',restyp(it2),'(',i2,')',
88 & dhpb_zs(i,molnum),ebr,forcon_zs(i,molnum)
91 write (iout,*) "Protein:",molnum," leaving MOLREAD_ZS"
95 c-----------------------------------------------------------------------------
96 logical function seq_comp(itypea,itypeb,length)
98 integer length,itypea(length),itypeb(length)
101 if (itypea(i).ne.itypeb(i)) then
109 c-----------------------------------------------------------------------------
110 subroutine read_bridge
111 C Read information about disulfide bridges.
112 implicit real*8 (a-h,o-z)
114 include 'DIMENSIONS.ZSCOPT'
115 include 'COMMON.IOUNITS'
118 include 'COMMON.INTERACT'
119 include 'COMMON.NAMES'
120 include 'COMMON.CHAIN'
121 include 'COMMON.FFIELD'
122 include 'COMMON.SBRIDGE'
123 include 'COMMON.ALLPROT'
124 C Read bridging residues.
125 read (inp,*) ns,(iss(i),i=1,ns)
127 write (iout,*) 'ns=',ns,' iss:',(iss(i),i=1,ns)
128 C Check whether the specified bridging residues are cystines.
130 if (itype(iss(i)).ne.1) then
131 write (iout,'(2a,i3,a)')
132 & 'Do you REALLY think that the residue ',restyp(iss(i)),i,
133 & ' can form a disulfide bridge?!!!'
134 write (*,'(2a,i3,a)')
135 & 'Do you REALLY think that the residue ',restyp(iss(i)),i,
136 & ' can form a disulfide bridge?!!!'
140 C Read preformed bridges.
142 read (inp,*) nss,(ihpb(i),jhpb(i),i=1,nss)
143 write (iout,*) 'nss=',nss,' ihpb,jhpb: ',(ihpb(i),jhpb(i),i=1,nss)
146 C Check if the residues involved in bridges are in the specified list of
150 if (ihpb(i).eq.ihpb(j).or.ihpb(i).eq.jhpb(j)
151 & .or.jhpb(i).eq.ihpb(j).or.jhpb(i).eq.jhpb(j)) then
152 write (iout,'(a,i3,a)') 'Disulfide pair',i,
153 & ' contains residues present in other pairs.'
154 write (*,'(a,i3,a)') 'Disulfide pair',i,
155 & ' contains residues present in other pairs.'
160 if (ihpb(i).eq.iss(j)) goto 10
162 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
165 if (jhpb(i).eq.iss(j)) goto 20
167 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
180 c------------------------------------------------------------------------------
181 subroutine store_molinfo(molnum)
182 implicit real*8 (a-h,o-z)
184 include 'DIMENSIONS.ZSCOPT'
185 include "COMMON.ALLPROT"
186 include 'COMMON.CHAIN'
187 include 'COMMON.SBRIDGE'
189 include "COMMON.INTERACT"
190 include "COMMON.LOCAL"
191 include "COMMON.IOUNITS"
195 iatsc_s_zs(molnum)=iatsc_s
196 iatsc_e_zs(molnum)=iatsc_e
197 iatel_s_zs(molnum)=iatel_s
198 iatel_e_zs(molnum)=iatel_e
199 iturn3_start_zs(molnum)=iturn3_start
200 iturn3_end_zs(molnum)=iturn3_end
201 iturn4_start_zs(molnum)=iturn4_start
202 iturn4_end_zs(molnum)=iturn4_end
203 iatscp_s_zs(molnum)=iatscp_s
204 iatscp_e_zs(molnum)=iatscp_e
205 loc_start_zs(molnum)=loc_start
206 loc_end_zs(molnum)=loc_end
207 ithet_start_zs(molnum)=ithet_start
208 ithet_end_zs(molnum)=ithet_end
209 iphi_start_zs(molnum)=iphi_start
210 iphi_end_zs(molnum)=iphi_end
211 itau_start_zs(molnum)=itau_start
212 itau_end_zs(molnum)=itau_end
215 ntheta_zs(molnum)=ntheta
216 nside_zs(molnum)=nside
218 ialph_zs(i,1,molnum)=ialph(i,1)
219 ialph_zs(i,2,molnum)=ialph(i,2)
222 nint_gr_zs(i,molnum)=nint_gr(i)
223 nscp_gr_zs(i,molnum)=nscp_gr(i)
225 istart_zs(i,j,molnum)=istart(i,j)
226 iend_zs(i,j,molnum)=iend(i,j)
228 itype_zs(i,molnum)=itype(i)
229 itel_zs(i,molnum)=itel(i)
230 ielstart_zs(i,molnum)=ielstart(i)
231 ielend_zs(i,molnum)=ielend(i)
232 c write (iout,*) "i",i," nscp_gr",nscp_gr(i),
233 c & " iscp",(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i))
235 iscpstart_zs(i,j,molnum)=iscpstart(i,j)
236 iscpend_zs(i,j,molnum)=iscpend(i,j)
241 c nfree_zs(molnum)=nfree
243 c iss_zs(i,molnum)=iss(i)
246 c ihpb_zs(i,molnum)=ihpb(i)
247 c jhpb_zs(i,molnum)=jhpb(i)
248 c dhpb_zs(i,molnum)=dhpb(i)
249 c forcon_zs(i,molnum)=forcon(i)
251 link_start_zs(molnum)=link_start
252 link_end_zs(molnum)=link_end
255 c------------------------------------------------------------------------------
256 subroutine restore_molinfo(molnum)
257 implicit real*8 (a-h,o-z)
259 include 'DIMENSIONS.ZSCOPT'
260 include "COMMON.ALLPROT"
261 include "COMMON.SBRIDGE"
262 include "COMMON.CHAIN"
264 include "COMMON.INTERACT"
265 include "COMMON.TORCNSTR"
266 include "COMMON.LOCAL"
271 iatsc_s=iatsc_s_zs(molnum)
272 iatsc_e=iatsc_e_zs(molnum)
273 iatel_s=iatel_s_zs(molnum)
274 iatel_e=iatel_e_zs(molnum)
275 iturn3_start=iturn3_start_zs(molnum)
276 iturn3_end=iturn3_end_zs(molnum)
277 iturn4_start=iturn4_start_zs(molnum)
278 iturn4_end=iturn4_end_zs(molnum)
279 iatscp_s=iatscp_s_zs(molnum)
280 iatscp_e=iatscp_e_zs(molnum)
281 ithet_start=ithet_start_zs(molnum)
282 ithet_end=ithet_end_zs(molnum)
283 iphi_start=iphi_start_zs(molnum)
284 iphi_end=iphi_end_zs(molnum)
285 itau_start=itau_start_zs(molnum)
286 itau_end=itau_end_zs(molnum)
287 loc_start=loc_start_zs(molnum)
288 loc_end=loc_end_zs(molnum)
291 ntheta=ntheta_zs(molnum)
292 nside=nside_zs(molnum)
294 ialph(i,1)=ialph_zs(i,1,molnum)
295 ialph(i,2)=ialph_zs(i,2,molnum)
298 nint_gr(i)=nint_gr_zs(i,molnum)
299 nscp_gr(i)=nscp_gr_zs(i,molnum)
301 istart(i,j)=istart_zs(i,j,molnum)
302 iend(i,j)=iend_zs(i,j,molnum)
304 itype(i)=itype_zs(i,molnum)
305 itel(i)=itel_zs(i,molnum)
306 ielstart(i)=ielstart_zs(i,molnum)
307 ielend(i)=ielend_zs(i,molnum)
309 iscpstart(i,j)=iscpstart_zs(i,j,molnum)
310 iscpend(i,j)=iscpend_zs(i,j,molnum)
315 c nfree=nfree_zs(molnum)
317 c iss(i)=iss_zs(i,molnum)
320 c ihpb(i)=ihpb_zs(i,molnum)
321 c jhpb(i)=jhpb_zs(i,molnum)
322 c dhpb(i)=dhpb_zs(i,molnum)
323 c forcon(i)=forcon_zs(i,molnum)
325 link_start=link_start_zs(molnum)
326 link_end=link_end_zs(molnum)
329 c------------------------------------------------------------------------------
330 subroutine read_angles(kanal,iscor,energ,iprot,*)
331 implicit real*8 (a-h,o-z)
333 include 'DIMENSIONS.ZSCOPT'
334 include 'COMMON.INTERACT'
335 include 'COMMON.SBRIDGE'
338 include 'COMMON.CHAIN'
339 include 'COMMON.IOUNITS'
341 read(kanal,'(a80)',end=10,err=10) lineh
342 read(lineh(:5),*,err=8) ic
343 read(lineh(6:),*,err=8) energ
346 print *,'error, assuming e=1d10',lineh
350 read(lineh(18:),*,end=10,err=10) nss
352 read (lineh(20:),*,end=10,err=10)
353 & (IHPB(I),JHPB(I),I=1,NSS),iscor
355 read (lineh(20:),*,end=10,err=10) (IHPB(I),JHPB(I),I=1,8)
356 read (kanal,*,end=10,err=10) (IHPB(I),JHPB(I),
359 c print *,"energy",energ," iscor",iscor
360 read (kanal,*,err=10,end=10) (theta(i),i=3,nres)
361 read (kanal,*,err=10,end=10) (phi(i),i=4,nres)
362 read (kanal,*,err=10,end=10) (alph(i),i=2,nres-1)
363 read (kanal,*,err=10,end=10) (omeg(i),i=2,nres-1)
365 theta(i)=deg2rad*theta(i)
366 phi(i)=deg2rad*phi(i)
367 alph(i)=deg2rad*alph(i)
368 omeg(i)=deg2rad*omeg(i)