1 subroutine read_control
8 include 'COMMON.IOUNITS'
10 include 'COMMON.SBRIDGE'
11 include 'COMMON.CONTROL'
12 include 'COMMON.CLUSTER'
13 include 'COMMON.CHAIN'
14 include 'COMMON.HEADER'
15 include 'COMMON.FFIELD'
17 include 'COMMON.INTERACT'
18 character*320 controlcard,ucase
24 read (INP,'(a80)') titel
25 call card_concat(controlcard)
27 call readi(controlcard,'NRES',nres,0)
28 call readi(controlcard,'RESCALE',rescale_mode,2)
29 call reada(controlcard,'DISTCHAINMAX',distchainmax,50.0d0)
30 write (iout,*) "DISTCHAINMAX",distchainmax
31 C Reading the dimensions of box in x,y,z coordinates
32 call reada(controlcard,'BOXX',boxxsize,100.0d0)
33 call reada(controlcard,'BOXY',boxysize,100.0d0)
34 call reada(controlcard,'BOXZ',boxzsize,100.0d0)
35 c Cutoff range for interactions
36 call reada(controlcard,"R_CUT",r_cut,15.0d0)
37 call reada(controlcard,"LAMBDA",rlamb,0.3d0)
38 call readi(controlcard,'PDBOUT',outpdb,0)
39 call readi(controlcard,'MOL2OUT',outmol2,0)
40 refstr=(index(controlcard,'REFSTR').gt.0)
41 write (iout,*) "REFSTR",refstr
42 pdbref=(index(controlcard,'PDBREF').gt.0)
43 iscode=index(controlcard,'ONE_LETTER')
44 tree=(index(controlcard,'MAKE_TREE').gt.0)
45 min_var=(index(controlcard,'MINVAR').gt.0)
46 plot_tree=(index(controlcard,'PLOT_TREE').gt.0)
47 punch_dist=(index(controlcard,'PUNCH_DIST').gt.0)
48 call readi(controlcard,'NCUT',ncut,1)
49 call readi(controlcard,'SYM',symetr,1)
50 write (iout,*) 'sym', symetr
51 call readi(controlcard,'NSTART',nstart,0)
52 call readi(controlcard,'NEND',nend,0)
53 call reada(controlcard,'ECUT',ecut,10.0d0)
54 call reada(controlcard,'PROB',prob_limit,0.99d0)
55 write (iout,*) "Probability limit",prob_limit
56 lgrp=(index(controlcard,'LGRP').gt.0)
57 caonly=(index(controlcard,'CA_ONLY').gt.0)
58 print_dist=(index(controlcard,'PRINT_DIST').gt.0)
59 call multreada(controlcard,'CUTOFF',rcutoff,ncut,-1.0d0)
60 call readi(controlcard,'IOPT',iopt,2)
61 lside = index(controlcard,"SIDE").gt.0
62 efree = index(controlcard,"EFREE").gt.0
63 call readi(controlcard,'NTEMP',nT,1)
64 write (iout,*) "nT",nT
65 call multreada(controlcard,'TEMPER',beta_h,nT,300.0d0)
66 write (iout,*) "nT",nT
67 write (iout,*) 'beta_h',(beta_h(i),i=1,nT)
69 beta_h(i)=1.0d0/(1.987D-3*beta_h(i))
71 write (iout,*) 'beta_h',(beta_h(i),i=1,nT)
72 lprint_cart=index(controlcard,"PRINT_CART") .gt.0
73 lprint_int=index(controlcard,"PRINT_INT") .gt.0
77 c--------------------------------------------------------------------------
80 C Read molecular data.
84 include 'COMMON.IOUNITS'
87 include 'COMMON.INTERACT'
88 include 'COMMON.LOCAL'
89 include 'COMMON.NAMES'
90 include 'COMMON.CHAIN'
91 include 'COMMON.FFIELD'
92 include 'COMMON.SBRIDGE'
93 include 'COMMON.HEADER'
94 include 'COMMON.CONTROL'
95 include 'COMMON.CONTACTS'
96 include 'COMMON.TIME1'
100 character*4 sequence(maxres)
101 character*800 weightcard
103 double precision x(maxvar)
104 integer itype_pdb(maxres)
110 C Read weights of the subsequent energy terms.
111 call card_concat(weightcard)
112 call reada(weightcard,'WSC',wsc,1.0d0)
113 call reada(weightcard,'WLONG',wsc,wsc)
114 call reada(weightcard,'WSCP',wscp,1.0d0)
115 call reada(weightcard,'WELEC',welec,1.0D0)
116 call reada(weightcard,'WVDWPP',wvdwpp,welec)
117 call reada(weightcard,'WEL_LOC',wel_loc,1.0D0)
118 call reada(weightcard,'WCORR4',wcorr4,0.0D0)
119 call reada(weightcard,'WCORR5',wcorr5,0.0D0)
120 call reada(weightcard,'WCORR6',wcorr6,0.0D0)
121 call reada(weightcard,'WTURN3',wturn3,1.0D0)
122 call reada(weightcard,'WTURN4',wturn4,1.0D0)
123 call reada(weightcard,'WTURN6',wturn6,1.0D0)
124 call reada(weightcard,'WSTRAIN',wstrain,1.0D0)
125 call reada(weightcard,'WSCCOR',wsccor,1.0D0)
126 call reada(weightcard,'WBOND',wbond,1.0D0)
127 call reada(weightcard,'WTOR',wtor,1.0D0)
128 call reada(weightcard,'WTORD',wtor_d,1.0D0)
129 call reada(weightcard,'WANG',wang,1.0D0)
130 call reada(weightcard,'WSCLOC',wscloc,1.0D0)
131 call reada(weightcard,'SCAL14',scal14,0.4D0)
132 call reada(weightcard,'SCALSCP',scalscp,1.0d0)
133 call reada(weightcard,'CUTOFF',cutoff_corr,7.0d0)
134 call reada(weightcard,'DELT_CORR',delt_corr,0.5d0)
135 if (index(weightcard,'SOFT').gt.0) ipot=6
136 C 12/1/95 Added weight for the multi-body term WCORR
137 call reada(weightcard,'WCORRH',wcorr,1.0D0)
138 if (wcorr4.gt.0.0d0) wcorr=wcorr4
158 write (iout,10) wsc,wscp,welec,wvdwpp,wbond,wang,wscloc,wtor,
159 & wtor_d,wstrain,wel_loc,wcorr,wcorr5,wcorr6,wturn3,
160 & wturn4,wturn6,wsccor
161 10 format (/'Energy-term weights (unscaled):'//
162 & 'WSCC= ',f10.6,' (SC-SC)'/
163 & 'WSCP= ',f10.6,' (SC-p)'/
164 & 'WELEC= ',f10.6,' (p-p electr)'/
165 & 'WVDWPP= ',f10.6,' (p-p VDW)'/
166 & 'WBOND= ',f10.6,' (stretching)'/
167 & 'WANG= ',f10.6,' (bending)'/
168 & 'WSCLOC= ',f10.6,' (SC local)'/
169 & 'WTOR= ',f10.6,' (torsional)'/
170 & 'WTORD= ',f10.6,' (double torsional)'/
171 & 'WSTRAIN=',f10.6,' (SS bridges & dist. cnstr.)'/
172 & 'WEL_LOC=',f10.6,' (multi-body 3-rd order)'/
173 & 'WCORR4= ',f10.6,' (multi-body 4th order)'/
174 & 'WCORR5= ',f10.6,' (multi-body 5th order)'/
175 & 'WCORR6= ',f10.6,' (multi-body 6th order)'/
176 & 'WTURN3= ',f10.6,' (turns, 3rd order)'/
177 & 'WTURN4= ',f10.6,' (turns, 4th order)'/
178 & 'WTURN6= ',f10.6,' (turns, 6th order)'/
179 & 'WSCCOR= ',f10.6,' (SC-backbone torsinal correalations)')
181 if (wcorr4.gt.0.0d0) then
182 write (iout,'(/2a/)') 'Local-electrostatic type correlation ',
183 & 'between contact pairs of peptide groups'
184 write (iout,'(2(a,f5.3/))')
185 & 'Cutoff on 4-6th order correlation terms: ',cutoff_corr,
186 & 'Range of quenching the correlation terms:',2*delt_corr
187 else if (wcorr.gt.0.0d0) then
188 write (iout,'(/2a/)') 'Hydrogen-bonding correlation ',
189 & 'between contact pairs of peptide groups'
191 write (iout,'(a,f8.3)')
192 & 'Scaling factor of 1,4 SC-p interactions:',scal14
193 write (iout,'(a,f8.3)')
194 & 'General scaling factor of SC-p interactions:',scalscp
195 r0_corr=cutoff_corr-delt_corr
197 aad(i,1)=scalscp*aad(i,1)
198 aad(i,2)=scalscp*aad(i,2)
199 bad(i,1)=scalscp*bad(i,1)
200 bad(i,2)=scalscp*bad(i,2)
204 print *,'indpdb=',indpdb,' pdbref=',pdbref
206 C Read sequence if not taken from the pdb file.
207 if (iscode.gt.0) then
208 read (inp,'(80a1)') (sequence(i)(1:1),i=1,nres)
210 read (inp,'(20(1x,a3))') (sequence(i),i=1,nres)
212 C Convert sequence to numeric code
214 itype(i)=rescode(i,sequence(i),iscode)
217 print '(20i4)',(itype(i),i=1,nres)
221 if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1) then
223 if (itype(i).eq.ntyp1) then
227 else if (iabs(itype(i+1)).ne.20) then
229 else if (iabs(itype(i)).ne.20) then
236 write (iout,*) "ITEL"
238 write (iout,*) i,itype(i),itel(i)
241 print *,'Call Read_Bridge.'
245 print *,'NNT=',NNT,' NCT=',NCT
246 if (itype(1).eq.ntyp1) nnt=2
247 if (itype(nres).eq.ntyp1) nct=nct-1
248 if (nstart.lt.nnt) nstart=nnt
249 if (nend.gt.nct .or. nend.eq.0) nend=nct
250 write (iout,*) "nstart",nstart," nend",nend
253 c read(inp,'(a)') pdbfile
254 c write (iout,'(2a)') 'PDB data will be read from file ',pdbfile
255 c open(ipdbin,file=pdbfile,status='old',err=33)
257 c 33 write (iout,'(a)') 'Error opening PDB file.'
260 c print *,'Begin reading pdb data'
262 c print *,'Finished reading pdb data'
263 c write (iout,'(a,i3,a,i3)')'nsup=',nsup,' nstart_sup=',nstart_sup
265 c itype_pdb(i)=itype(i)
268 c write (iout,'(a,i3)') 'nsup=',nsup
270 c if (nsup.le.(nct-nnt+1)) then
271 c do i=0,nct-nnt+1-nsup
272 c if (seq_comp(itype(nnt+i),itype_pdb(nstart_sup),nsup)) then
278 c & 'Error - sequences to be superposed do not match.'
281 c do i=0,nsup-(nct-nnt+1)
282 c if (seq_comp(itype(nnt),itype_pdb(nstart_sup+i),nct-nnt+1))
284 c nstart_sup=nstart_sup+i
290 c & 'Error - sequences to be superposed do not match.'
293 c write (iout,*) 'nsup=',nsup,' nstart_sup=',nstart_sup,
294 c & ' nstart_seq=',nstart_seq
298 write (iout,*) "molread: REFSTR",refstr
300 if (.not.pdbref) then
301 call read_angles(inp,*38)
303 38 write (iout,'(a)') 'Error reading reference structure.'
305 call mp_stopall(Error_Msg)
307 stop 'Error reading reference structure'
320 call contact(.true.,ncont_ref,icont_ref)
324 c-----------------------------------------------------------------------------
325 logical function seq_comp(itypea,itypeb,length)
327 integer length,itypea(length),itypeb(length)
330 if (itypea(i).ne.itypeb(i)) then
338 c-----------------------------------------------------------------------------
339 subroutine read_bridge
340 C Read information about disulfide bridges.
343 include 'COMMON.IOUNITS'
346 include 'COMMON.INTERACT'
347 include 'COMMON.LOCAL'
348 include 'COMMON.NAMES'
349 include 'COMMON.CHAIN'
350 include 'COMMON.FFIELD'
351 include 'COMMON.SBRIDGE'
352 include 'COMMON.HEADER'
353 include 'COMMON.CONTROL'
354 include 'COMMON.TIME1'
356 include 'COMMON.INFO'
359 C Read bridging residues.
360 read (inp,*) ns,(iss(i),i=1,ns)
362 C Check whether the specified bridging residues are cystines.
364 if (itype(iss(i)).ne.1) then
365 write (iout,'(2a,i3,a)')
366 & 'Do you REALLY think that the residue ',restyp(iss(i)),i,
367 & ' can form a disulfide bridge?!!!'
368 write (*,'(2a,i3,a)')
369 & 'Do you REALLY think that the residue ',restyp(iss(i)),i,
370 & ' can form a disulfide bridge?!!!'
372 call mp_stopall(error_msg)
378 C Read preformed bridges.
380 read (inp,*) nss,(ihpb(i),jhpb(i),i=1,nss)
383 C Check if the residues involved in bridges are in the specified list of
387 if (ihpb(i).eq.ihpb(j).or.ihpb(i).eq.jhpb(j)
388 & .or.jhpb(i).eq.ihpb(j).or.jhpb(i).eq.jhpb(j)) then
389 write (iout,'(a,i3,a)') 'Disulfide pair',i,
390 & ' contains residues present in other pairs.'
391 write (*,'(a,i3,a)') 'Disulfide pair',i,
392 & ' contains residues present in other pairs.'
394 call mp_stopall(error_msg)
401 if (ihpb(i).eq.iss(j)) goto 10
403 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
406 if (jhpb(i).eq.iss(j)) goto 20
408 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
421 c----------------------------------------------------------------------------
422 subroutine read_angles(kanal,*)
427 include 'COMMON.CHAIN'
428 include 'COMMON.IOUNITS'
430 read (kanal,*,err=10,end=10) (theta(i),i=3,nres)
431 read (kanal,*,err=10,end=10) (phi(i),i=4,nres)
432 read (kanal,*,err=10,end=10) (alph(i),i=2,nres-1)
433 read (kanal,*,err=10,end=10) (omeg(i),i=2,nres-1)
435 theta(i)=deg2rad*theta(i)
436 phi(i)=deg2rad*phi(i)
437 alph(i)=deg2rad*alph(i)
438 omeg(i)=deg2rad*omeg(i)
443 c----------------------------------------------------------------------------
444 subroutine reada(rekord,lancuch,wartosc,default)
446 character*(*) rekord,lancuch
447 double precision wartosc,default
450 iread=index(rekord,lancuch)
455 iread=iread+ilen(lancuch)+1
456 read (rekord(iread:),*) wartosc
459 c----------------------------------------------------------------------------
460 subroutine multreada(rekord,lancuch,tablica,dim,default)
463 double precision tablica(dim),default
464 character*(*) rekord,lancuch
470 iread=index(rekord,lancuch)
471 if (iread.eq.0) return
472 iread=iread+ilen(lancuch)+1
473 read (rekord(iread:),*,end=10,err=10) (tablica(i),i=1,dim)
476 c----------------------------------------------------------------------------
477 subroutine readi(rekord,lancuch,wartosc,default)
479 character*(*) rekord,lancuch
480 integer wartosc,default
483 iread=index(rekord,lancuch)
488 iread=iread+ilen(lancuch)+1
489 read (rekord(iread:),*) wartosc
492 c----------------------------------------------------------------------------
493 subroutine card_concat(card)
495 include 'COMMON.IOUNITS'
497 character*80 karta,ucase
499 read (inp,'(a)') karta
502 do while (karta(80:80).eq.'&')
503 card=card(:ilen(card)+1)//karta(:79)
504 read (inp,'(a)') karta
507 card=card(:ilen(card)+1)//karta
510 c----------------------------------------------------------------------------
519 include 'COMMON.IOUNITS'
520 include 'COMMON.CONTROL'
521 integer lenpre,lenpot,ilen
523 character*16 cformat,cprint
525 integer lenint,lenout
526 call getenv('INPUT',prefix)
527 call getenv('OUTPUT',prefout)
528 call getenv('INTIN',prefintin)
529 call getenv('COORD',cformat)
530 call getenv('PRINTCOOR',cprint)
531 call getenv('SCRATCHDIR',scratchdir)
534 if (index(ucase(cformat),'CX').gt.0) then
541 lenint=ilen(prefintin)
542 C Get the names and open the input files
543 open (inp,file=prefix(:ilen(prefix))//'.inp',status='old')
545 write (liczba,'(bz,i3.3)') me
546 outname=prefout(:lenout)//'_clust.out_'//liczba
548 outname=prefout(:lenout)//'_clust.out'
551 intinname=prefintin(:lenint)//'.bx'
552 else if (from_cx) then
553 intinname=prefintin(:lenint)//'.cx'
555 intinname=prefintin(:lenint)//'.int'
557 rmsname=prefintin(:lenint)//'.rms'
558 open (jplot,file=prefout(:ilen(prefout))//'.tex',
560 open (jrms,file=rmsname,status='unknown')
561 open(iout,file=outname,status='unknown')
562 C Get parameter filenames and open the parameter files.
563 call getenv('BONDPAR',bondname)
564 open (ibond,file=bondname,status='old')
565 call getenv('THETPAR',thetname)
566 open (ithep,file=thetname,status='old')
567 call getenv('ROTPAR',rotname)
568 open (irotam,file=rotname,status='old')
569 call getenv('TORPAR',torname)
570 open (itorp,file=torname,status='old')
571 call getenv('TORDPAR',tordname)
572 open (itordp,file=tordname,status='old')
573 call getenv('FOURIER',fouriername)
574 open (ifourier,file=fouriername,status='old')
575 call getenv('ELEPAR',elename)
576 open (ielep,file=elename,status='old')
577 call getenv('SIDEPAR',sidename)
578 open (isidep,file=sidename,status='old')
579 call getenv('SIDEP',sidepname)
580 open (isidep1,file=sidepname,status="old")
581 call getenv('SCCORPAR',sccorname)
582 open (isccor,file=sccorname,status="old")
585 C 8/9/01 In the newest version SCp interaction constants are read from a file
586 C Use -DOLDSCP to use hard-coded constants instead.
588 call getenv('SCPPAR',scpname)
589 open (iscpp,file=scpname,status='old')