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.TORCNSTR'
18 include 'COMMON.CONTROL'
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"
37 if (nres.gt.maxres) then
38 write (iout,*) "Error: too many residues",nres,maxres
40 write(iout,*) 'nres=',nres
41 C Read sequence of the protein
43 read (inp,'(80a1)') (sequence(i)(1:1),i=1,nres)
45 read (inp,'(20(1x,a3))') (sequence(i),i=1,nres)
47 C Convert sequence to numeric code
49 itype(i)=rescode(i,sequence(i),iscode)
51 write (iout,*) "Numeric code:"
52 write (iout,'(20i4)') (itype(i),i=1,nres)
55 if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1) then
57 if (itype(i).eq.ntyp1) then
61 else if (iabs(itype(i+1)).ne.20) then
63 else if (iabs(itype(i)).ne.20) then
72 write (iout,*) i,itype(i),itel(i)
76 if (with_dihed_constr) then
78 read (inp,*) ndih_constr
79 if (ndih_constr.gt.0) then
81 C write (iout,*) 'FTORS',ftors
82 read (inp,*) (idih_constr(i),phi0(i),drange(i),ftors(i),
85 & 'There are',ndih_constr,' constraints on phi angles.'
87 write (iout,'(i5,3f8.3)') idih_constr(i),phi0(i),drange(i),
91 phi0(i)=deg2rad*phi0(i)
92 drange(i)=deg2rad*drange(i)
97 if (with_theta_constr) then
98 C with_theta_constr is keyword allowing for occurance of theta constrains
99 read (inp,*) ntheta_constr
100 C ntheta_constr is the number of theta constrains
101 if (ntheta_constr.gt.0) then
103 read (inp,*) (itheta_constr(i),theta_constr0(i),
104 & theta_drange(i),for_thet_constr(i),
106 C the above code reads from 1 to ntheta_constr
107 C itheta_constr(i) residue i for which is theta_constr
108 C theta_constr0 the global minimum value
109 C theta_drange is range for which there is no energy penalty
110 C for_thet_constr is the force constant for quartic energy penalty
112 C if(me.eq.king.or..not.out1file)then
114 & 'There are',ntheta_constr,' constraints on phi angles.'
116 write (iout,'(i5,3f8.3)') itheta_constr(i),theta_constr0(i),
122 theta_constr0(i)=deg2rad*theta_constr0(i)
123 theta_drange(i)=deg2rad*theta_drange(i)
125 C if(me.eq.king.or..not.out1file)
126 C & write (iout,*) 'FTORS',ftors
127 C do i=1,ntheta_constr
128 C ii = itheta_constr(i)
129 C thetabound(1,ii) = phi0(i)-drange(i)
130 C thetabound(2,ii) = phi0(i)+drange(i)
132 endif ! ntheta_constr.gt.0
133 endif! with_theta_constr
136 if (itype(1).eq.ntyp1) nnt=2
137 if (itype(nres).eq.ntyp1) nct=nct-1
138 write(iout,*) 'NNT=',NNT,' NCT=',NCT
142 write (iout,'(/a,i3,a)') 'The chain contains',ns,
143 & ' disulfide-bridging cysteines.'
144 write (iout,'(20i4)') (iss(i),i=1,ns)
146 write(iout,*)"Running with dynamic disulfide-bond formation"
148 write (iout,'(/a/)') 'Pre-formed links are:'
154 write (iout,'(2a,i3,3a,i3,a,3f10.3)')
155 & restyp(it1),'(',i1,') -- ',restyp(it2),'(',i2,')',
156 & dhpb(i),ebr,forcon(i)
161 if (ns.gt.0.and.dyn_ss) then
165 forcon(i-nss)=forcon(i)
172 dyn_ss_mask(iss(i))=.true.
177 c-----------------------------------------------------------------------------
178 logical function seq_comp(itypea,itypeb,length)
180 integer length,itypea(length),itypeb(length)
183 if (itypea(i).ne.itypeb(i)) then
191 c-----------------------------------------------------------------------------
192 subroutine read_bridge
193 C Read information about disulfide bridges.
194 implicit real*8 (a-h,o-z)
196 include 'DIMENSIONS.ZSCOPT'
197 include 'COMMON.IOUNITS'
200 include 'COMMON.INTERACT'
201 include 'COMMON.NAMES'
202 include 'COMMON.CHAIN'
203 include 'COMMON.FFIELD'
204 include 'COMMON.SBRIDGE'
205 C Read bridging residues.
206 read (inp,*) ns,(iss(i),i=1,ns)
208 write (iout,*) 'ns=',ns,' iss:',(iss(i),i=1,ns)
209 C Check whether the specified bridging residues are cystines.
211 if (itype(iss(i)).ne.1) then
212 write (iout,'(2a,i3,a)')
213 & 'Do you REALLY think that the residue ',
214 & restyp(itype(iss(i))),i,
215 & ' can form a disulfide bridge?!!!'
216 write (*,'(2a,i3,a)')
217 & 'Do you REALLY think that the residue ',
218 & restyp(itype(iss(i))),i,
219 & ' can form a disulfide bridge?!!!'
223 C Read preformed bridges.
225 read (inp,*) nss,(ihpb(i),jhpb(i),i=1,nss)
226 write (iout,*) 'nss=',nss,' ihpb,jhpb: ',(ihpb(i),jhpb(i),i=1,nss)
229 C Check if the residues involved in bridges are in the specified list of
233 if (ihpb(i).eq.ihpb(j).or.ihpb(i).eq.jhpb(j)
234 & .or.jhpb(i).eq.ihpb(j).or.jhpb(i).eq.jhpb(j)) then
235 write (iout,'(a,i3,a)') 'Disulfide pair',i,
236 & ' contains residues present in other pairs.'
237 write (*,'(a,i3,a)') 'Disulfide pair',i,
238 & ' contains residues present in other pairs.'
243 if (ihpb(i).eq.iss(j)) goto 10
245 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
248 if (jhpb(i).eq.iss(j)) goto 20
250 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
263 c------------------------------------------------------------------------------
264 subroutine read_angles(kanal,iscor,energ,iprot,*)
265 implicit real*8 (a-h,o-z)
267 include 'DIMENSIONS.ZSCOPT'
268 include 'COMMON.INTERACT'
269 include 'COMMON.SBRIDGE'
272 include 'COMMON.CHAIN'
273 include 'COMMON.IOUNITS'
275 read(kanal,'(a80)',end=10,err=10) lineh
276 read(lineh(:5),*,err=8) ic
277 read(lineh(6:),*,err=8) energ
280 print *,'error, assuming e=1d10',lineh
284 read(lineh(18:),*,end=10,err=10) nss
286 read (lineh(20:),*,end=10,err=10)
287 & (IHPB(I),JHPB(I),I=1,NSS),iscor
289 read (lineh(20:),*,end=10,err=10) (IHPB(I),JHPB(I),I=1,8)
290 read (kanal,*,end=10,err=10) (IHPB(I),JHPB(I),
293 c print *,"energy",energ," iscor",iscor
294 read (kanal,*,err=10,end=10) (theta(i),i=3,nres)
295 read (kanal,*,err=10,end=10) (phi(i),i=4,nres)
296 read (kanal,*,err=10,end=10) (alph(i),i=2,nres-1)
297 read (kanal,*,err=10,end=10) (omeg(i),i=2,nres-1)
299 theta(i)=deg2rad*theta(i)
300 phi(i)=deg2rad*phi(i)
301 alph(i)=deg2rad*alph(i)
302 omeg(i)=deg2rad*omeg(i)