source: eyabgn.f@ e40e335

Last change on this file since e40e335 was e40e335, checked in by baerbaer <baerbaer@…>, 16 years ago

Initial import to BerliOS corresponding to 3.0.4

git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/smmp/trunk@1 26dc1dd8-5c4e-0410-9ffe-d298b4865968

  • Property mode set to 100644
File size: 5.8 KB
Line 
1c *********************************************************************
2c This file contains eyrccr, init_abgn, eyentr, eyabgn
3c
4c Copyright 2007 Frank Eisenmenger, U.H.E. Hansmann,
5c Jan H. Meinke, Sandipan Mohanty
6c
7c Corrections to ECEPP energy terms due to R. A. Abagyan et al.
8c
9c Two terms are calculated: eyrccr and eyentr, representing respectively
10c c a term to slightly shift the backbone dihedral angle preferences in
11c the ECEPP potential slightly away from the helix region, and another
12c term to estimate the side-chain entropy from a given configuration.
13c
14c
15c *********************************************************************
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
31c 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))))
42c print *,' contribution = ',rsscl*(1.0-sin(vlvr(ipsi(i))))
43c print *,'obtained using scale ',rsscl,' and angle ',
44c # vlvr(ipsi(i))
45 enddo
46c print *,'abagyan dihedral term = ',et
47c 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
58c print *,'Initialization of Abagyan entropic term'
59c Maximum accessible surface areas for different residue types
60 data (xarea(i),i=1,nrsty)/
61c 1 2 3 4 5
62 # 117.417 , 244.686 , 245.582 , 146.467 , 144.485 ,
63c 6 7 8 9 10
64 # 144.192 , 142.805 , 147.568 , 183.103 , 177.094 ,
65c 11 12 13 14 15
66 # 186.293 , 83.782 , 187.864 , 187.864 , 187.864 ,
67c 16 17 18 19 20
68 # 187.864 , 160.887 , 161.741 , 184.644 , 179.334 ,
69c 21 22 23 24 25
70 # 209.276 , 209.276 , 203.148 , 208.902 , 153.124 ,
71c 26 27 28 29 30
72 # 153.973 , 153.037 , 158.695 , 157.504 , 157.504 ,
73c 31 32 33 34 35
74 # 119.786 , 146.488 , 238.641 , 223.299 , 160.283 /
75c Entropic contribution for maximally exposed residue
76 data (estrg(i),i=1,nrsty)/
77c 1ala 2arg 3arg+ 4asn 5asp
78 # 0.0 , 2.13 , 2.13 , 0.81 , 0.61 ,
79c 6asp- 7cys 8cyss 9gln 10glu
80 # 0.61 , 1.14 , 1.14 , 2.02 , 1.65 ,
81c 11glu- 12gly 13his 14hise 15hisd
82 # 1.65 , 0.0 , 0.99 , 0.99 , 0.99 ,
83c 16his+ 17hyp 18hypu 19ile 20leu
84 # 0.99 , 0.99 , 0.99 , 0.75 , 0.75 ,
85c 21lys 22lys+ 23met 24phe 25cpro
86 # 2.21 , 2.21 , 1.53 , 0.58 , 0.0 ,
87c 26pro 27cpru 28prou 29pron 30pro+
88 # 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ,
89c 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
102c 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
111c print *,'residue ',i,seq(i),' type ',imytyp
112c 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
131c print *,'residue range ',istres,indres
132c print *,'for molecule ',nml
133 do i=istres, indres
134 aars=surfres(i)
135 strh=rsstrg(i)
136c The maximal burial entropies were estimated at temperature 300k
137c The values in the array estrg are k_B * T (=300k) * Entropy
138c Presently we need it at temperature 1/beta, so we need to
139c multiply the strengths in estrg with (1/beta)/(300 kelvin)
140c 300 kelvin is approximately 0.59576607 kcal/mol.
141 eentr=eentr+aars*strh/(0.59576607*beta)
142c print *,'contribution = ',aars*strh/(0.59576607*beta)
143c print *,'residue, exposed area = ',i,aars
144c print *,'strength = ',strh,' for residue index = ',i
145c print *,'beta = ',beta
146 enddo
147c 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)
155c print *,'Abagyan term = ',eyabgn
156 return
157 end
Note: See TracBrowser for help on using the repository browser.