Package functions :: Module d2ri_prime
[hide private]
[frames] | no frames]

Source Code for Module functions.d2ri_prime

  1  from Numeric import Float64, zeros 
  2  from re import match 
  3   
4 -class d2Ri_prime:
5 - def __init__(self):
6 "Function for the calculation of the trasformed relaxation hessians."
7 8
9 - def d2Ri_prime(self):
10 """Function for the calculation of the trasformed relaxation hessians. 11 12 The trasformed relaxation hessians 13 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 14 15 Data structure: self.data.d2ri_prime 16 Dimension: 3D, (parameters, parameters, relaxation data) 17 Type: Numeric 3D matrix, Float64 18 Dependencies: self.data.jw, self.data.djw, self.data.d2jw 19 Required by: self.data.d2ri 20 21 22 Formulae (a hessian matrix is symmetric) 23 ~~~~~~~~ 24 25 Components 26 ~~~~~~~~~~ 27 28 Dipolar 29 ~~~~~~~ 30 1 / mu0 \ 2 (gH.gN.h_bar)**2 31 d = - . | ---- | . ---------------- 32 4 \ 4.pi / <r**6> 33 34 35 3 / mu0 \ 2 (gH.gN.h_bar)**2 36 d' = - - . | ---- | . ---------------- 37 2 \ 4.pi / <r**7> 38 39 40 21 / mu0 \ 2 (gH.gN.h_bar)**2 41 d" = -- . | ---- | . ---------------- 42 2 \ 4.pi / <r**8> 43 44 45 CSA 46 ~~~ 47 (wN.csa)**2 48 c = ----------- 49 3 50 51 2.wN**2.csa 52 c' = ----------- 53 3 54 55 2.wN**2 56 c" = ------- 57 3 58 59 60 R1() 61 ~~~~ 62 J_R1_d = J(wH-wN) + 3J(wN) + 6J(wH+wN) 63 64 dJ(wH-wN) dJ(wN) dJ(wH+wN) 65 J_R1_d_prime = --------- + 3 . ------ + 6 . --------- 66 dJj dJj dJj 67 68 d2J(wH-wN) d2J(wN) d2J(wH+wN) 69 J_R1_d_2prime = ---------- + 3 . ------- + 6 . ---------- 70 dJj.dJk dJj.dJk dJj.dJk 71 72 73 J_R1_c = J(wN) 74 75 dJ(wN) 76 J_R1_c_prime = ------ 77 dJj 78 79 d2J(wN) 80 J_R1_c_2prime = ------- 81 dJj.dJk 82 83 84 R2() 85 ~~~~ 86 J_R2_d = 4J(0) + J(wH-wN) + 3J(wN) + 6J(wH) + 6J(wH+wN) 87 88 dJ(0) dJ(wH-wN) dJ(wN) dJ(wH) dJ(wH+wN) 89 J_R2_d_prime = 4 . ----- + --------- + 3 . ------ + 6 . ------ + 6 . --------- 90 dJj dJj dJj dJj dJj 91 92 d2J(0) d2J(wH-wN) d2J(wN) d2J(wH) d2J(wH+wN) 93 J_R2_d_2prime = 4 . ------- + ---------- + 3 . ------- + 6 . ------- + 6 . ---------- 94 dJj.dJk dJj.dJk dJj.dJk dJj.dJk dJj.dJk 95 96 97 J_R2_c = 4J(0) + 3J(wN) 98 99 dJ(0) dJ(wN) 100 J_R2_c_prime = 4 . ----- + 3 . ------ 101 dJj dJj 102 103 d2J(0) d2J(wN) 104 J_R2_c_2prime = 4 . ------- + 3 . ------- 105 dJj.dJk dJj.dJk 106 107 108 sigma_noe() 109 ~~~~~~~~~~~ 110 J_sigma_noe = 6J(wH+wN) - J(wH-wN) 111 112 dJ(wH+wN) dJ(wH-wN) 113 J_sigma_noe_prime = 6 . --------- - --------- 114 dJj dJj 115 116 d2J(wH+wN) d2J(wH-wN) 117 J_sigma_noe_2prime = 6 . ---------- - ---------- 118 dJj.dJk dJj.dJk 119 120 121 Spectral density parameter - Spectral density parameter 122 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 123 124 d2R1() 125 ------- = d . J_R1_d_2prime + c . J_R1_c_2prime 126 dJj.dJk 127 128 129 d2R2() d c 130 ------- = - . J_R2_d_2prime + - . J_R2_c_2prime 131 dJj.dJk 2 6 132 133 134 d2sigma_noe() 135 ------------- = d . J_sigma_noe_2prime 136 dJj.dJk 137 138 139 Spectral density parameter - Chemical exchange 140 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 141 142 d2R1() d2R2() d2sigma_noe() 143 -------- = 0 , -------- = 0 , ------------- = 0 144 dJj.dRex dJj.dRex dJj.dRex 145 146 147 Spectral density parameter - CSA 148 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 149 150 d2R1() 151 -------- = c'. J_R1_c_prime 152 dJj.dcsa 153 154 155 d2R2() c' 156 -------- = - . J_R2_c_prime 157 dJj.dcsa 6 158 159 160 d2sigma_noe() 161 ------------- = 0 162 dJj.dcsa 163 164 165 Spectral density parameter - Bond length 166 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 167 168 d2R1() 169 ------ = d'. J_R1_d_prime 170 dJj.dr 171 172 173 d2R2() d' 174 ------ = - . J_R2_d_prime 175 dJj.dr 2 176 177 178 d2sigma_noe() 179 ------------- = d' . J_sigma_noe_prime 180 dJj.dr 181 182 183 Chemical exchange - Chemical exchange 184 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 185 186 d2R1() d2R2() d2sigma_noe() 187 ------- = 0 , ------- = 0 , ------------- = 0 188 dRex**2 dRex**2 dRex**2 189 190 191 Chemical exchange - CSA 192 ~~~~~~~~~~~~~~~~~~~~~~~ 193 194 d2R1() d2R2() d2sigma_noe() 195 --------- = 0 , --------- = 0 , ------------- = 0 196 dRex.dcsa dRex.dcsa dRex.dcsa 197 198 199 Chemical exchange - Bond length 200 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 201 202 d2R1() d2R2() d2sigma_noe() 203 ------- = 0 , ------- = 0 , ------------- = 0 204 dRex.dr dRex.dr dRex.dr 205 206 207 CSA - CSA 208 ~~~~~~~~~ 209 210 d2R1() 211 ------- = c" . J_R1_c 212 dcsa**2 213 214 215 d2R2() c" 216 ------- = - . J_R2_c 217 dcsa**2 6 218 219 220 d2sigma_noe() 221 ------------- = 0 222 dcsa**2 223 224 225 CSA - Bond length 226 ~~~~~~~~~~~~~~~~~ 227 228 d2R1() d2R2() d2sigma_noe() 229 ------- = 0 , ------- = 0 , ------------- = 0 230 dcsa.dr dcsa.dr dcsa.dr 231 232 233 Bond length - Bond length 234 ~~~~~~~~~~~~~~~~~~~~~~~~~ 235 236 d2R1() 237 ------ = d" . J_R1_d 238 dr**2 239 240 241 d2R2() d" 242 ------ = - . J_R2_d 243 dr**2 2 244 245 246 d2sigma_noe() 247 ------------- = d" . J_sigma_noe 248 dr**2 249 250 """ 251 252 # Calculate the spectral density hessians. 253 self.d2Jw() 254 255 # Initialise the components of the transformed relaxation equations. 256 self.data.j_dip_comps_2prime = zeros((len(self.data.params), len(self.data.params), self.mf.data.num_ri), Float64) 257 self.data.j_csa_comps_2prime = zeros((len(self.data.params), len(self.data.params), self.mf.data.num_ri), Float64) 258 if match('m6', self.data.model): 259 self.data.dip_comps_2prime = zeros((len(self.data.params), len(self.data.params), self.mf.data.num_ri), Float64) 260 self.data.csa_comps_2prime = zeros((len(self.data.params), len(self.data.params), self.mf.data.num_ri), Float64) 261 262 # Loop over the relaxation values. 263 for i in range(self.mf.data.num_ri): 264 frq_num = self.mf.data.remap_table[i] 265 266 # R1 components. 267 if self.mf.data.data_types[i] == 'R1': 268 self.data.j_dip_comps_2prime[:, :, i] = self.data.d2jw[frq_num, 2] + 3.0*self.data.d2jw[frq_num, 1] + 6.0*self.data.d2jw[frq_num, 4] 269 self.data.j_csa_comps_2prime[:, :, i] = self.data.d2jw[frq_num, 1] 270 if match('m6', self.data.model): 271 self.data.dip_comps_2prime[:, :, i] = self.mf.data.dipole_prime 272 self.data.csa_comps_2prime[:, :, i] = self.mf.data.csa_prime[frq_num] 273 274 # R2 components. 275 elif self.mf.data.data_types[i] == 'R2': 276 self.data.j_dip_comps_2prime[:, :, i] = 4.0*self.data.d2jw[frq_num, 0] + self.data.d2jw[frq_num, 2] + 3.0*self.data.d2jw[frq_num, 1] + 6.0*self.data.d2jw[frq_num, 3] + 6.0*self.data.d2jw[frq_num, 4] 277 self.data.j_csa_comps_2prime[:, :, i] = 4.0*self.data.d2jw[frq_num, 0] + 3.0*self.data.d2jw[frq_num, 1] 278 if match('m6', self.data.model): 279 self.data.dip_comps_2prime[:, :, i] = self.mf.data.dipole_2prime / 2.0 280 self.data.csa_comps_2prime[:, :, i] = self.mf.data.csa_2prime[frq_num] / 6.0 281 282 # sigma_noe components. 283 elif self.mf.data.data_types[i] == 'NOE': 284 self.data.j_dip_comps_2prime[:, :, i] = 6.0*self.data.d2jw[frq_num, 4] - self.data.d2jw[frq_num, 2] 285 if match('m6', self.data.model): 286 self.data.dip_comps_2prime[:, :, i] = self.mf.data.dipole_2prime 287 288 # Initialise the transformed relaxation hessians. 289 self.data.d2ri_prime = zeros((len(self.data.params), len(self.data.params), self.mf.data.num_ri), Float64) 290 291 # Calculate the transformed relaxation hessians. 292 for param1 in range(len(self.data.ri_param_types)): 293 for param2 in range(param1 + 1): 294 # Spectral density parameter - Spectral density parameter. 295 if self.data.ri_param_types[param1] == 'Jj' and self.data.ri_param_types[param2] == 'Jj': 296 self.data.d2ri_prime[param1, param2] = self.data.dip_comps * self.data.j_dip_comps_2prime[param1, param2] + self.data.csa_comps * self.data.j_csa_comps_2prime[param1, param2] 297 298 # Spectral density parameter - CSA. 299 elif (self.data.ri_param_types[param1] == 'Jj' and self.data.ri_param_types[param2] == 'CSA') \ 300 or (self.data.ri_param_types[param1] == 'CSA' and self.data.ri_param_types[param2] == 'Jj'): 301 302 self.data.d2ri_prime[param1, param2] = self.data.csa_comps_prime * self.data.j_csa_comps_prime 303 304 # Spectral density parameter - Bond length. 305 elif (self.data.ri_param_types[param1] == 'Jj' and self.data.ri_param_types[param2] == 'r') \ 306 or (self.data.ri_param_types[param1] == 'r' and self.data.ri_param_types[param2] == 'Jj'): 307 308 self.data.d2ri_prime[param1, param2] = self.data.dip_comps_prime * self.data.j_dip_comps_prime 309 310 # CSA - CSA. 311 elif self.data.ri_param_types[param1] == 'CSA' and self.data.ri_param_types[param2] == 'CSA': 312 self.data.d2ri_prime[param1, param2] = self.data.csa_comps_2prime * self.data.j_csa_comps 313 314 # Bond length - Bond length. 315 elif self.data.ri_param_types[param1] == 'r' and self.data.ri_param_types[param2] == 'r': 316 self.data.d2ri_prime[param1, param2] = self.data.csa_comps_2prime * self.data.j_csa_comps 317 318 # Others. 319 else: 320 continue 321 322 # Make the hessian symmetric. 323 if param1 != param2: 324 self.data.d2ri_prime[param2, param1] = self.data.d2ri_prime[param1, param2]
325