1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 """The Meiboom (1961) 2-site on-resonance skewed population R1rho U{M61 skew<http://wiki.nmr-relax.com/M61_skew>} model.
25
26 Description
27 ===========
28
29 This module is for the function, gradient and Hessian of the U{M61 skew<http://wiki.nmr-relax.com/M61_skew>} model.
30
31
32 References
33 ==========
34
35 The model is named after the reference:
36
37 - Meiboom S. (1961). Nuclear magnetic resonance study of the proton transfer in water. I{J. Chem. Phys.}, B{34}, 375-388. (U{DOI: 10.1063/1.1700960<http://dx.doi.org/10.1063/1.1700960>}).
38
39
40 Equations
41 =========
42
43 The equation used is::
44
45 pA^2.pB.delta_omega^2.kex
46 R1rho = R1rho' + -------------------------------------- ,
47 kex^2 + pA^2.delta_omega^2 + omega_1^2
48
49 where R1rho' is the R1rho value in the absence of exchange, kex is the chemical exchange rate constant, pA and pB are the populations of states A and B, delta_omega is the chemical shift difference between the two states, and omega_1 = omega_e is the effective field in the rotating frame.
50
51
52 Links
53 =====
54
55 More information on the M61 skew model can be found in the:
56
57 - U{relax wiki<http://wiki.nmr-relax.com/M61_skew>},
58 - U{relax manual<http://www.nmr-relax.com/manual/M61_skew_2_site_fast_exchange_R1_model.html>},
59 - U{relaxation dispersion page of the relax website<http://www.nmr-relax.com/analyses/relaxation_dispersion.html#M61_skew>}.
60 """
61
62
63 from math import pi
64
65
66 -def r1rho_M61b(r1rho_prime=None, pA=None, dw=None, kex=None, spin_lock_fields=None, back_calc=None, num_points=None):
67 """Calculate the R1rho values for the M61 skew model.
68
69 See the module docstring for details.
70
71
72 @keyword r1rho_prime: The R1rho_prime parameter value (R1rho with no exchange).
73 @type r1rho_prime: float
74 @keyword pA: The population of state A.
75 @type pA: float
76 @keyword dw: The chemical exchange difference between states A and B in rad/s.
77 @type dw: float
78 @keyword kex: The kex parameter value (the exchange rate in rad/s).
79 @type kex: float
80 @keyword spin_lock_fields2: The R1rho spin-lock field strengths squared (in rad^2.s^-2).
81 @type spin_lock_fields2: numpy rank-1 float array
82 @keyword back_calc: The array for holding the back calculated R1rho values. Each element corresponds to one of the spin-lock fields.
83 @type back_calc: numpy rank-1 float array
84 @keyword num_points: The number of points on the dispersion curve, equal to the length of the spin_lock_fields and back_calc arguments.
85 @type num_points: int
86 """
87
88
89 pB = 1.0 - pA
90
91
92 pA2dw2 = pA**2 * dw**2
93 kex2_pA2dw2 = kex**2 + pA2dw2
94
95
96 numer = pA2dw2 * pB * kex
97
98
99 for i in range(num_points):
100
101 if numer == 0.0:
102 back_calc[i] = r1rho_prime
103 continue
104
105
106 denom = kex2_pA2dw2 + spin_lock_fields2[i]
107
108
109 if denom == 0.0:
110 back_calc[i] = 1e100
111 continue
112
113
114 back_calc[i] = r1rho_prime + numer / denom
115