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

Source Code for Module functions.dri_prime

  1  from Numeric import Float64, zeros 
  2  from re import match 
  3   
4 -class dRi_prime:
5 - def __init__(self):
6 "Function for the calculation of the transformed relaxation gradients."
7 8
9 - def dRi_prime(self):
10 """Function for the calculation of the transformed relaxation gradients. 11 12 The transformed relaxation gradients 13 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 14 15 Data structure: self.data.dri_prime 16 Dimension: 2D, (parameters, transformed relaxation data) 17 Type: Numeric matrix, Float64 18 Dependencies: self.data.jw, self.data.djw 19 Required by: self.data.dri, self.data.d2ri 20 21 22 Formulae 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 CSA 41 ~~~ 42 (wN.csa)**2 43 c = ----------- 44 3 45 46 2.wN**2.csa 47 c' = ----------- 48 3 49 50 51 R1() 52 ~~~~ 53 J_R1_d = J(wH-wN) + 3J(wN) + 6J(wH+wN) 54 55 dJ(wH-wN) dJ(wN) dJ(wH+wN) 56 J_R1_d_prime = --------- + 3 . ------ + 6 . --------- 57 dmf dmf dmf 58 59 60 J_R1_c = J(wN) 61 62 dJ(wN) 63 J_R1_c_prime = ------ 64 dmf 65 66 67 68 R2() 69 ~~~~ 70 J_R2_d = 4J(0) + J(wH-wN) + 3J(wN) + 6J(wH) + 6J(wH+wN) 71 72 dJ(0) dJ(wH-wN) dJ(wN) dJ(wH) dJ(wH+wN) 73 J_R2_d_prime = 4 . ----- + --------- + 3 . ------ + 6 . ------ + 6 . --------- 74 dmf dmf dmf dmf dmf 75 76 77 J_R2_c = 4J(0) + 3J(wN) 78 79 dJ(0) dJ(wN) 80 J_R2_c_prime = 4 . ----- + 3 . ------ 81 dmf dmf 82 83 84 sigma_noe() 85 ~~~~~~~~~~~ 86 J_sigma_noe = 6J(wH+wN) - J(wH-wN) 87 88 dJ(wH+wN) dJ(wH-wN) 89 J_sigma_noe_prime = 6 . --------- - --------- 90 dmf dmf 91 92 93 Spectral density parameter 94 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 95 96 dR1() 97 ----- = d . J_R1_d_prime + c . J_R1_c_prime 98 dJj 99 100 101 dR2() d c 102 ----- = - . J_R2_d_prime + - . J_R2_c_prime 103 dJj 2 6 104 105 106 dsigma_noe() 107 ------------ = d . J_sigma_noe_prime 108 dJj 109 110 111 Chemical exchange 112 ~~~~~~~~~~~~~~~~~ 113 114 dR1() 115 ----- = 0 116 dRex 117 118 119 dR2() 120 ----- = 1 121 dRex 122 123 124 dR2() 125 ------ = (2.pi.wH)**2 126 drhoex 127 128 129 dsigma_noe() 130 ------------ = 0 131 dRex 132 133 134 CSA 135 ~~~ 136 137 dR1() 138 ----- = c' . J_R1_c 139 dcsa 140 141 142 dR2() c' 143 ----- = - . J_R2_c 144 dcsa 6 145 146 147 dsigma_noe() 148 ------------ = 0 149 dcsa 150 151 152 Bond length 153 ~~~~~~~~~~~ 154 155 dR1() 156 ----- = d' . J_R1_d 157 dr 158 159 160 dR2() d' 161 ----- = - . J_R2_d 162 dr 2 163 164 165 dsigma_noe() 166 ------------ = d' . J_sigma_noe 167 dr 168 169 """ 170 171 # Calculate the spectral density gradients. 172 self.dJw() 173 174 # Initialise the components of the transformed relaxation equations. 175 self.data.j_dip_comps_prime = zeros((len(self.data.params), self.mf.data.num_ri), Float64) 176 self.data.j_csa_comps_prime = zeros((len(self.data.params), self.mf.data.num_ri), Float64) 177 if match('m[34]', self.data.model): 178 self.data.rex_comps_prime = zeros((len(self.data.params), self.mf.data.num_ri), Float64) 179 if match('m6', self.data.model): 180 self.data.dip_comps_prime = zeros((len(self.data.params), self.mf.data.num_ri), Float64) 181 self.data.csa_comps_prime = zeros((len(self.data.params), self.mf.data.num_ri), Float64) 182 183 # Loop over the relaxation values. 184 for i in range(self.mf.data.num_ri): 185 frq_num = self.mf.data.remap_table[i] 186 187 # R1 components. 188 if self.mf.data.data_types[i] == 'R1': 189 self.data.j_dip_comps_prime[:, i] = self.data.djw[frq_num, 2] + 3.0*self.data.djw[frq_num, 1] + 6.0*self.data.djw[frq_num, 4] 190 self.data.j_csa_comps_prime[:, i] = self.data.djw[frq_num, 1] 191 if match('m6', self.data.model): 192 self.data.dip_comps_prime[:, i] = self.mf.data.dipole_prime 193 self.data.csa_comps_prime[:, i] = self.mf.data.csa_prime[frq_num] 194 195 # R2 components. 196 elif self.mf.data.data_types[i] == 'R2': 197 self.data.j_dip_comps_prime[:, i] = 4.0*self.data.djw[frq_num, 0] + self.data.djw[frq_num, 2] + 3.0*self.data.djw[frq_num, 1] + 6.0*self.data.djw[frq_num, 3] + 6.0*self.data.djw[frq_num, 4] 198 self.data.j_csa_comps_prime[:, i] = 4.0*self.data.djw[frq_num, 0] + 3.0*self.data.djw[frq_num, 1] 199 if match('m[34]', self.data.model): 200 self.data.rex_comps_prime[:, i] = (1e-8 * self.mf.data.frq[frq_num])**2 201 if match('m6', self.data.model): 202 self.data.dip_comps_prime[:, i] = self.mf.data.dipole_prime / 2.0 203 self.data.csa_comps_prime[:, i] = self.mf.data.csa_prime[frq_num] / 6.0 204 205 # sigma_noe components. 206 elif self.mf.data.data_types[i] == 'NOE': 207 self.data.j_dip_comps_prime[:, i] = 6.0*self.data.djw[frq_num, 4] - self.data.djw[frq_num, 2] 208 if match('m6', self.data.model): 209 self.data.dip_comps_prime[:, i] = self.mf.data.dipole_prime 210 211 # Initialise the transformed relaxation gradients. 212 self.data.dri_prime = zeros((len(self.data.params), self.mf.data.num_ri), Float64) 213 214 # Calculate the transformed relaxation gradients. 215 for param in range(len(self.data.ri_param_types)): 216 # Spectral density parameter derivatives. 217 if self.data.ri_param_types[param] == 'Jj': 218 self.data.dri_prime[param] = self.data.dip_comps * self.data.j_dip_comps_prime[param] + self.data.csa_comps * self.data.j_csa_comps_prime[param] 219 220 # Chemical exchange derivatives. 221 elif self.data.ri_param_types[param] == 'Rex': 222 self.data.dri_prime[param] = self.data.rex_comps_prime[param] 223 224 # CSA derivatives. 225 elif self.data.ri_param_types[param] == 'CSA': 226 self.data.dri_prime[param] = self.data.csa_comps_prime[param] * self.data.j_csa_comps 227 228 # Bond length derivatives. 229 elif self.data.ri_param_types[param] == 'r': 230 self.data.dri_prime[param] = self.data.dip_comps_prime[param] * self.data.j_dip_comps
231