1 | ! *********************************************************************
|
---|
2 | ! This file contains eyrccr, init_abgn, eyentr, eyabgn
|
---|
3 | !
|
---|
4 | ! Copyright 2007 Frank Eisenmenger, U.H.E. Hansmann,
|
---|
5 | ! Jan H. Meinke, Sandipan Mohanty
|
---|
6 | !
|
---|
7 | ! Corrections to ECEPP energy terms due to R. A. Abagyan et al.
|
---|
8 | !
|
---|
9 | ! Two terms are calculated: eyrccr and eyentr, representing respectively
|
---|
10 | ! c a term to slightly shift the backbone dihedral angle preferences in
|
---|
11 | ! the ECEPP potential slightly away from the helix region, and another
|
---|
12 | ! term to estimate the side-chain entropy from a given configuration.
|
---|
13 | !
|
---|
14 | !
|
---|
15 | ! *********************************************************************
|
---|
16 | real*8 function eyrccr(nml)
|
---|
17 | include 'INCL.H'
|
---|
18 | dimension iN(mxrs),iCa(mxrs),iC(mxrs),mlvr(mxvr)
|
---|
19 | dimension iphi(mxrs),ipsi(mxrs)
|
---|
20 | common /lundds/iN,iCa,iC,mlvr,iphi,ipsi
|
---|
21 | character mynm*4
|
---|
22 |
|
---|
23 | if (nml.eq.0) then
|
---|
24 | istres=irsml1(1)
|
---|
25 | indres=irsml2(ntlml)
|
---|
26 | else
|
---|
27 | istres=irsml1(nml)
|
---|
28 | indres=irsml2(nml)
|
---|
29 | endif
|
---|
30 | et=0.0
|
---|
31 | ! print *,'***********'
|
---|
32 | do i=istres,indres
|
---|
33 | mynm=seq(i)
|
---|
34 | call tolost(mynm)
|
---|
35 | if ((mynm.eq.'val').or.(mynm.eq.'ile').or.
|
---|
36 | & (mynm.eq.'thr')) then
|
---|
37 | rsscl=1.0
|
---|
38 | else
|
---|
39 | rsscl=0.5
|
---|
40 | endif
|
---|
41 | et=et+rsscl*(1.0-sin(vlvr(ipsi(i))))
|
---|
42 | ! print *,' contribution = ',rsscl*(1.0-sin(vlvr(ipsi(i))))
|
---|
43 | ! print *,'obtained using scale ',rsscl,' and angle ',
|
---|
44 | ! # vlvr(ipsi(i))
|
---|
45 | enddo
|
---|
46 | ! print *,'abagyan dihedral term = ',et
|
---|
47 | ! print *,'***********'
|
---|
48 | eyrccr=et
|
---|
49 | return
|
---|
50 | end
|
---|
51 |
|
---|
52 | subroutine init_abgn
|
---|
53 | include 'INCL.H'
|
---|
54 | ! dimension rsstrg(mxrs)
|
---|
55 | ! common /abgncor/rsstrg
|
---|
56 | dimension xarea(nrsty),estrg(nrsty)
|
---|
57 | character mynm*4
|
---|
58 | ! print *,'Initialization of Abagyan entropic term'
|
---|
59 | ! Maximum accessible surface areas for different residue types
|
---|
60 | data (xarea(i),i=1,nrsty)/
|
---|
61 | ! 1 2 3 4 5
|
---|
62 | & 117.417 , 244.686 , 245.582 , 146.467 , 144.485 ,
|
---|
63 | ! 6 7 8 9 10
|
---|
64 | & 144.192 , 142.805 , 147.568 , 183.103 , 177.094 ,
|
---|
65 | ! 11 12 13 14 15
|
---|
66 | & 186.293 , 83.782 , 187.864 , 187.864 , 187.864 ,
|
---|
67 | ! 16 17 18 19 20
|
---|
68 | & 187.864 , 160.887 , 161.741 , 184.644 , 179.334 ,
|
---|
69 | ! 21 22 23 24 25
|
---|
70 | & 209.276 , 209.276 , 203.148 , 208.902 , 153.124 ,
|
---|
71 | ! 26 27 28 29 30
|
---|
72 | & 153.973 , 153.037 , 158.695 , 157.504 , 157.504 ,
|
---|
73 | ! 31 32 33 34 35
|
---|
74 | & 119.786 , 146.488 , 238.641 , 223.299 , 160.283 /
|
---|
75 | ! Entropic contribution for maximally exposed residue
|
---|
76 | data (estrg(i),i=1,nrsty)/
|
---|
77 | ! 1ala 2arg 3arg+ 4asn 5asp
|
---|
78 | & 0.0 , 2.13 , 2.13 , 0.81 , 0.61 ,
|
---|
79 | ! 6asp- 7cys 8cyss 9gln 10glu
|
---|
80 | & 0.61 , 1.14 , 1.14 , 2.02 , 1.65 ,
|
---|
81 | ! 11glu- 12gly 13his 14hise 15hisd
|
---|
82 | & 1.65 , 0.0 , 0.99 , 0.99 , 0.99 ,
|
---|
83 | ! 16his+ 17hyp 18hypu 19ile 20leu
|
---|
84 | & 0.99 , 0.99 , 0.99 , 0.75 , 0.75 ,
|
---|
85 | ! 21lys 22lys+ 23met 24phe 25cpro
|
---|
86 | & 2.21 , 2.21 , 1.53 , 0.58 , 0.0 ,
|
---|
87 | ! 26pro 27cpru 28prou 29pron 30pro+
|
---|
88 | & 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ,
|
---|
89 | ! 31ser 32thr 33trp 34tyr 35val
|
---|
90 | & 1.19 , 1.12 , 0.97 , 0.99 , 0.50 /
|
---|
91 | do i=1,mxrs
|
---|
92 | rsstrg(i)=0.0
|
---|
93 | enddo
|
---|
94 | istres=irsml1(1)
|
---|
95 | indres=irsml2(ntlml)
|
---|
96 | do i=istres,indres
|
---|
97 | imytyp=0
|
---|
98 | mynm=seq(i)
|
---|
99 | call tolost(mynm)
|
---|
100 | do j=1,nrsty
|
---|
101 | if (rsnmcd(j).eq.mynm) imytyp=j
|
---|
102 | ! print *,'comparing ',mynm,' with ',rsnmcd(j),imytyp
|
---|
103 | enddo
|
---|
104 | if (imytyp.eq.0) then
|
---|
105 | print *, 'Unknown residue type ',seq(i)
|
---|
106 | print *, 'Abagyan term strength set to 0'
|
---|
107 | rsstrg(i)=0.0
|
---|
108 | else
|
---|
109 | rsstrg(i)=estrg(imytyp)/xarea(imytyp)
|
---|
110 | endif
|
---|
111 | ! print *,'residue ',i,seq(i),' type ',imytyp
|
---|
112 | ! print *, 'strength for residue ',i,seq(i),' is ',rsstrg(i)
|
---|
113 | enddo
|
---|
114 | print *, 'initialized Abagyan corrections to ECEPP force field'
|
---|
115 | end
|
---|
116 |
|
---|
117 | real*8 function eyentr(nml)
|
---|
118 | include 'INCL.H'
|
---|
119 | ! dimension rsstrg(mxrs)
|
---|
120 | ! common /abgncor/rsstrg
|
---|
121 | ! common/ressurf/surfres(mxrs)
|
---|
122 | ! common/bet/beta
|
---|
123 | eentr=0
|
---|
124 | if (nml.eq.0) then
|
---|
125 | istres=irsml1(1)
|
---|
126 | indres=irsml2(ntlml)
|
---|
127 | else
|
---|
128 | istres=irsml1(nml)
|
---|
129 | indres=irsml2(nml)
|
---|
130 | endif
|
---|
131 | ! print *,'residue range ',istres,indres
|
---|
132 | ! print *,'for molecule ',nml
|
---|
133 | do i=istres, indres
|
---|
134 | aars=surfres(i)
|
---|
135 | strh=rsstrg(i)
|
---|
136 | ! The maximal burial entropies were estimated at temperature 300k
|
---|
137 | ! The values in the array estrg are k_B * T (=300k) * Entropy
|
---|
138 | ! Presently we need it at temperature 1/beta, so we need to
|
---|
139 | ! multiply the strengths in estrg with (1/beta)/(300 kelvin)
|
---|
140 | ! 300 kelvin is approximately 0.59576607 kcal/mol.
|
---|
141 | eentr=eentr+aars*strh/(0.59576607*beta)
|
---|
142 | ! print *,'contribution = ',aars*strh/(0.59576607*beta)
|
---|
143 | ! print *,'residue, exposed area = ',i,aars
|
---|
144 | ! print *,'strength = ',strh,' for residue index = ',i
|
---|
145 | ! print *,'beta = ',beta
|
---|
146 | enddo
|
---|
147 | ! print *,'abagyan entropic term = ',eentr
|
---|
148 | eyentr=eentr
|
---|
149 | return
|
---|
150 | end
|
---|
151 |
|
---|
152 | real*8 function eyabgn(nml)
|
---|
153 | include 'INCL.H'
|
---|
154 | eyabgn=eyrccr(nml)+eyentr(nml)
|
---|
155 | ! print *,'Abagyan term = ',eyabgn
|
---|
156 | return
|
---|
157 | end
|
---|