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 call readi(controlcard,'PDBOUT',outpdb,0)
32 call readi(controlcard,'MOL2OUT',outmol2,0)
33 refstr=(index(controlcard,'REFSTR').gt.0)
34 write (iout,*) "REFSTR",refstr
35 pdbref=(index(controlcard,'PDBREF').gt.0)
36 iscode=index(controlcard,'ONE_LETTER')
37 tree=(index(controlcard,'MAKE_TREE').gt.0)
38 min_var=(index(controlcard,'MINVAR').gt.0)
39 plot_tree=(index(controlcard,'PLOT_TREE').gt.0)
40 punch_dist=(index(controlcard,'PUNCH_DIST').gt.0)
41 call readi(controlcard,'NCUT',ncut,1)
42 call readi(controlcard,'SYM',symetr,1)
43 write (iout,*) 'sym', symetr
44 call readi(controlcard,'NSTART',nstart,0)
45 call readi(controlcard,'NEND',nend,0)
46 call reada(controlcard,'ECUT',ecut,10.0d0)
47 call reada(controlcard,'PROB',prob_limit,0.99d0)
48 write (iout,*) "Probability limit",prob_limit
49 lgrp=(index(controlcard,'LGRP').gt.0)
50 caonly=(index(controlcard,'CA_ONLY').gt.0)
51 print_dist=(index(controlcard,'PRINT_DIST').gt.0)
52 call multreada(controlcard,'CUTOFF',rcutoff,ncut,-1.0d0)
53 call readi(controlcard,'IOPT',iopt,2)
54 lside = index(controlcard,"SIDE").gt.0
55 efree = index(controlcard,"EFREE").gt.0
56 call readi(controlcard,'NTEMP',nT,1)
57 write (iout,*) "nT",nT
58 call multreada(controlcard,'TEMPER',beta_h,nT,300.0d0)
59 write (iout,*) "nT",nT
60 write (iout,*) 'beta_h',(beta_h(i),i=1,nT)
62 beta_h(i)=1.0d0/(1.987D-3*beta_h(i))
64 write (iout,*) 'beta_h',(beta_h(i),i=1,nT)
65 lprint_cart=index(controlcard,"PRINT_CART") .gt.0
66 lprint_int=index(controlcard,"PRINT_INT") .gt.0
67 with_dihed_constr = index(controlcard,"WITH_DIHED_CONSTR").gt.0
71 c--------------------------------------------------------------------------
74 C Read molecular data.
78 include 'COMMON.IOUNITS'
81 include 'COMMON.INTERACT'
82 include 'COMMON.LOCAL'
83 include 'COMMON.NAMES'
84 include 'COMMON.CHAIN'
85 include 'COMMON.FFIELD'
86 include 'COMMON.SBRIDGE'
87 include 'COMMON.HEADER'
88 include 'COMMON.CONTROL'
89 include 'COMMON.CONTACTS'
90 include 'COMMON.TIME1'
91 include 'COMMON.TORCNSTR'
95 character*4 sequence(maxres)
96 character*800 weightcard
98 double precision x(maxvar)
99 integer itype_pdb(maxres)
105 C Read weights of the subsequent energy terms.
106 call card_concat(weightcard)
107 call reada(weightcard,'WSC',wsc,1.0d0)
108 call reada(weightcard,'WLONG',wsc,wsc)
109 call reada(weightcard,'WSCP',wscp,1.0d0)
110 call reada(weightcard,'WELEC',welec,1.0D0)
111 call reada(weightcard,'WVDWPP',wvdwpp,welec)
112 call reada(weightcard,'WEL_LOC',wel_loc,1.0D0)
113 call reada(weightcard,'WCORR4',wcorr4,0.0D0)
114 call reada(weightcard,'WCORR5',wcorr5,0.0D0)
115 call reada(weightcard,'WCORR6',wcorr6,0.0D0)
116 call reada(weightcard,'WTURN3',wturn3,1.0D0)
117 call reada(weightcard,'WTURN4',wturn4,1.0D0)
118 call reada(weightcard,'WTURN6',wturn6,1.0D0)
119 call reada(weightcard,'WSTRAIN',wstrain,1.0D0)
120 call reada(weightcard,'WSCCOR',wsccor,1.0D0)
121 call reada(weightcard,'WBOND',wbond,1.0D0)
122 call reada(weightcard,'WTOR',wtor,1.0D0)
123 call reada(weightcard,'WTORD',wtor_d,1.0D0)
124 call reada(weightcard,'WANG',wang,1.0D0)
125 call reada(weightcard,'WSCLOC',wscloc,1.0D0)
126 call reada(weightcard,'SCAL14',scal14,0.4D0)
127 call reada(weightcard,'SCALSCP',scalscp,1.0d0)
128 call reada(weightcard,'CUTOFF',cutoff_corr,7.0d0)
129 call reada(weightcard,'DELT_CORR',delt_corr,0.5d0)
130 if (index(weightcard,'SOFT').gt.0) ipot=6
131 C 12/1/95 Added weight for the multi-body term WCORR
132 call reada(weightcard,'WCORRH',wcorr,1.0D0)
133 if (wcorr4.gt.0.0d0) wcorr=wcorr4
153 write (iout,10) wsc,wscp,welec,wvdwpp,wbond,wang,wscloc,wtor,
154 & wtor_d,wstrain,wel_loc,wcorr,wcorr5,wcorr6,wturn3,
155 & wturn4,wturn6,wsccor
156 10 format (/'Energy-term weights (unscaled):'//
157 & 'WSCC= ',f10.6,' (SC-SC)'/
158 & 'WSCP= ',f10.6,' (SC-p)'/
159 & 'WELEC= ',f10.6,' (p-p electr)'/
160 & 'WVDWPP= ',f10.6,' (p-p VDW)'/
161 & 'WBOND= ',f10.6,' (stretching)'/
162 & 'WANG= ',f10.6,' (bending)'/
163 & 'WSCLOC= ',f10.6,' (SC local)'/
164 & 'WTOR= ',f10.6,' (torsional)'/
165 & 'WTORD= ',f10.6,' (double torsional)'/
166 & 'WSTRAIN=',f10.6,' (SS bridges & dist. cnstr.)'/
167 & 'WEL_LOC=',f10.6,' (multi-body 3-rd order)'/
168 & 'WCORR4= ',f10.6,' (multi-body 4th order)'/
169 & 'WCORR5= ',f10.6,' (multi-body 5th order)'/
170 & 'WCORR6= ',f10.6,' (multi-body 6th order)'/
171 & 'WTURN3= ',f10.6,' (turns, 3rd order)'/
172 & 'WTURN4= ',f10.6,' (turns, 4th order)'/
173 & 'WTURN6= ',f10.6,' (turns, 6th order)'/
174 & 'WSCCOR= ',f10.6,' (SC-backbone torsinal correalations)')
176 if (wcorr4.gt.0.0d0) then
177 write (iout,'(/2a/)') 'Local-electrostatic type correlation ',
178 & 'between contact pairs of peptide groups'
179 write (iout,'(2(a,f5.3/))')
180 & 'Cutoff on 4-6th order correlation terms: ',cutoff_corr,
181 & 'Range of quenching the correlation terms:',2*delt_corr
182 else if (wcorr.gt.0.0d0) then
183 write (iout,'(/2a/)') 'Hydrogen-bonding correlation ',
184 & 'between contact pairs of peptide groups'
186 write (iout,'(a,f8.3)')
187 & 'Scaling factor of 1,4 SC-p interactions:',scal14
188 write (iout,'(a,f8.3)')
189 & 'General scaling factor of SC-p interactions:',scalscp
190 r0_corr=cutoff_corr-delt_corr
192 aad(i,1)=scalscp*aad(i,1)
193 aad(i,2)=scalscp*aad(i,2)
194 bad(i,1)=scalscp*bad(i,1)
195 bad(i,2)=scalscp*bad(i,2)
203 print *,'indpdb=',indpdb,' pdbref=',pdbref
205 C Read sequence if not taken from the pdb file.
206 if (iscode.gt.0) then
207 read (inp,'(80a1)') (sequence(i)(1:1),i=1,nres)
209 read (inp,'(20(1x,a3))') (sequence(i),i=1,nres)
211 C Convert sequence to numeric code
213 itype(i)=rescode(i,sequence(i),iscode)
216 print '(20i4)',(itype(i),i=1,nres)
220 if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1) then
222 if (itype(i).eq.ntyp1) then
226 else if (iabs(itype(i+1)).ne.20) then
228 else if (iabs(itype(i)).ne.20) then
235 write (iout,*) "ITEL"
237 write (iout,*) i,itype(i),itel(i)
240 print *,'Call Read_Bridge.'
243 if (with_dihed_constr) then
245 read (inp,*) ndih_constr
246 write (iout,*) "ndih_constr",ndih_constr
247 if (ndih_constr.gt.0) then
249 write (iout,*) 'FTORS',ftors
250 read (inp,*) (idih_constr(i),phi0(i),drange(i),i=1,ndih_constr)
252 & 'There are',ndih_constr,' constraints on phi angles.'
254 write (iout,'(i5,2f8.3)') idih_constr(i),phi0(i),drange(i)
257 phi0(i)=deg2rad*phi0(i)
258 drange(i)=deg2rad*drange(i)
266 print *,'NNT=',NNT,' NCT=',NCT
267 if (itype(1).eq.ntyp1) nnt=2
268 if (itype(nres).eq.ntyp1) nct=nct-1
269 if (nstart.lt.nnt) nstart=nnt
270 if (nend.gt.nct .or. nend.eq.0) nend=nct
271 write (iout,*) "nstart",nstart," nend",nend
274 c read(inp,'(a)') pdbfile
275 c write (iout,'(2a)') 'PDB data will be read from file ',pdbfile
276 c open(ipdbin,file=pdbfile,status='old',err=33)
278 c 33 write (iout,'(a)') 'Error opening PDB file.'
281 c print *,'Begin reading pdb data'
283 c print *,'Finished reading pdb data'
284 c write (iout,'(a,i3,a,i3)')'nsup=',nsup,' nstart_sup=',nstart_sup
286 c itype_pdb(i)=itype(i)
289 c write (iout,'(a,i3)') 'nsup=',nsup
291 c if (nsup.le.(nct-nnt+1)) then
292 c do i=0,nct-nnt+1-nsup
293 c if (seq_comp(itype(nnt+i),itype_pdb(nstart_sup),nsup)) then
299 c & 'Error - sequences to be superposed do not match.'
302 c do i=0,nsup-(nct-nnt+1)
303 c if (seq_comp(itype(nnt),itype_pdb(nstart_sup+i),nct-nnt+1))
305 c nstart_sup=nstart_sup+i
311 c & 'Error - sequences to be superposed do not match.'
314 c write (iout,*) 'nsup=',nsup,' nstart_sup=',nstart_sup,
315 c & ' nstart_seq=',nstart_seq
319 write (iout,*) "molread: REFSTR",refstr
321 if (.not.pdbref) then
322 call read_angles(inp,*38)
324 38 write (iout,'(a)') 'Error reading reference structure.'
326 call mp_stopall(Error_Msg)
328 stop 'Error reading reference structure'
341 call contact(.true.,ncont_ref,icont_ref)
345 c-----------------------------------------------------------------------------
346 logical function seq_comp(itypea,itypeb,length)
348 integer length,itypea(length),itypeb(length)
351 if (itypea(i).ne.itypeb(i)) then
359 c-----------------------------------------------------------------------------
360 subroutine read_bridge
361 C Read information about disulfide bridges.
364 include 'COMMON.IOUNITS'
367 include 'COMMON.INTERACT'
368 include 'COMMON.LOCAL'
369 include 'COMMON.NAMES'
370 include 'COMMON.CHAIN'
371 include 'COMMON.FFIELD'
372 include 'COMMON.SBRIDGE'
373 include 'COMMON.HEADER'
374 include 'COMMON.CONTROL'
375 include 'COMMON.TIME1'
377 include 'COMMON.INFO'
380 C Read bridging residues.
381 read (inp,*) ns,(iss(i),i=1,ns)
383 C Check whether the specified bridging residues are cystines.
385 if (itype(iss(i)).ne.1) then
386 write (iout,'(2a,i3,a)')
387 & 'Do you REALLY think that the residue ',restyp(iss(i)),i,
388 & ' can form a disulfide bridge?!!!'
389 write (*,'(2a,i3,a)')
390 & 'Do you REALLY think that the residue ',restyp(iss(i)),i,
391 & ' can form a disulfide bridge?!!!'
393 call mp_stopall(error_msg)
399 C Read preformed bridges.
401 read (inp,*) nss,(ihpb(i),jhpb(i),i=1,nss)
404 C Check if the residues involved in bridges are in the specified list of
408 if (ihpb(i).eq.ihpb(j).or.ihpb(i).eq.jhpb(j)
409 & .or.jhpb(i).eq.ihpb(j).or.jhpb(i).eq.jhpb(j)) then
410 write (iout,'(a,i3,a)') 'Disulfide pair',i,
411 & ' contains residues present in other pairs.'
412 write (*,'(a,i3,a)') 'Disulfide pair',i,
413 & ' contains residues present in other pairs.'
415 call mp_stopall(error_msg)
422 if (ihpb(i).eq.iss(j)) goto 10
424 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
427 if (jhpb(i).eq.iss(j)) goto 20
429 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
442 c----------------------------------------------------------------------------
443 subroutine read_angles(kanal,*)
448 include 'COMMON.CHAIN'
449 include 'COMMON.IOUNITS'
451 read (kanal,*,err=10,end=10) (theta(i),i=3,nres)
452 read (kanal,*,err=10,end=10) (phi(i),i=4,nres)
453 read (kanal,*,err=10,end=10) (alph(i),i=2,nres-1)
454 read (kanal,*,err=10,end=10) (omeg(i),i=2,nres-1)
456 theta(i)=deg2rad*theta(i)
457 phi(i)=deg2rad*phi(i)
458 alph(i)=deg2rad*alph(i)
459 omeg(i)=deg2rad*omeg(i)
464 c----------------------------------------------------------------------------
465 subroutine reada(rekord,lancuch,wartosc,default)
467 character*(*) rekord,lancuch
468 double precision wartosc,default
471 iread=index(rekord,lancuch)
476 iread=iread+ilen(lancuch)+1
477 read (rekord(iread:),*) wartosc
480 c----------------------------------------------------------------------------
481 subroutine multreada(rekord,lancuch,tablica,dim,default)
484 double precision tablica(dim),default
485 character*(*) rekord,lancuch
491 iread=index(rekord,lancuch)
492 if (iread.eq.0) return
493 iread=iread+ilen(lancuch)+1
494 read (rekord(iread:),*,end=10,err=10) (tablica(i),i=1,dim)
497 c----------------------------------------------------------------------------
498 subroutine readi(rekord,lancuch,wartosc,default)
500 character*(*) rekord,lancuch
501 integer wartosc,default
504 iread=index(rekord,lancuch)
509 iread=iread+ilen(lancuch)+1
510 read (rekord(iread:),*) wartosc
513 c----------------------------------------------------------------------------
514 subroutine card_concat(card)
516 include 'COMMON.IOUNITS'
518 character*80 karta,ucase
520 read (inp,'(a)') karta
523 do while (karta(80:80).eq.'&')
524 card=card(:ilen(card)+1)//karta(:79)
525 read (inp,'(a)') karta
528 card=card(:ilen(card)+1)//karta
531 c----------------------------------------------------------------------------
540 include 'COMMON.IOUNITS'
541 include 'COMMON.CONTROL'
542 integer lenpre,lenpot,ilen
544 character*16 cformat,cprint
546 integer lenint,lenout
547 call getenv('INPUT',prefix)
548 call getenv('OUTPUT',prefout)
549 call getenv('INTIN',prefintin)
550 call getenv('COORD',cformat)
551 call getenv('PRINTCOOR',cprint)
552 call getenv('SCRATCHDIR',scratchdir)
555 if (index(ucase(cformat),'CX').gt.0) then
562 lenint=ilen(prefintin)
563 C Get the names and open the input files
564 open (inp,file=prefix(:ilen(prefix))//'.inp',status='old')
566 write (liczba,'(bz,i3.3)') me
567 outname=prefout(:lenout)//'_clust.out_'//liczba
569 outname=prefout(:lenout)//'_clust.out'
572 intinname=prefintin(:lenint)//'.bx'
573 else if (from_cx) then
574 intinname=prefintin(:lenint)//'.cx'
576 intinname=prefintin(:lenint)//'.int'
578 rmsname=prefintin(:lenint)//'.rms'
579 open (jplot,file=prefout(:ilen(prefout))//'.tex',
581 open (jrms,file=rmsname,status='unknown')
582 open(iout,file=outname,status='unknown')
583 C Get parameter filenames and open the parameter files.
584 call getenv('BONDPAR',bondname)
585 open (ibond,file=bondname,status='old')
586 call getenv('THETPAR',thetname)
587 open (ithep,file=thetname,status='old')
588 call getenv('ROTPAR',rotname)
589 open (irotam,file=rotname,status='old')
590 call getenv('TORPAR',torname)
591 open (itorp,file=torname,status='old')
592 call getenv('TORDPAR',tordname)
593 open (itordp,file=tordname,status='old')
594 call getenv('FOURIER',fouriername)
595 open (ifourier,file=fouriername,status='old')
596 call getenv('ELEPAR',elename)
597 open (ielep,file=elename,status='old')
598 call getenv('SIDEPAR',sidename)
599 open (isidep,file=sidename,status='old')
600 call getenv('SIDEP',sidepname)
601 open (isidep1,file=sidepname,status="old")
602 call getenv('SCCORPAR',sccorname)
603 open (isccor,file=sccorname,status="old")
606 C 8/9/01 In the newest version SCp interaction constants are read from a file
607 C Use -DOLDSCP to use hard-coded constants instead.
609 call getenv('SCPPAR',scpname)
610 open (iscpp,file=scpname,status='old')