mailr24119 - in /branches/disp_spin_speed: lib/dispersion/ns_mmq_3site.py target_functions/relax_disp.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by tlinnet on June 18, 2014 - 18:52:
Author: tlinnet
Date: Wed Jun 18 18:52:37 2014
New Revision: 24119

URL: http://svn.gna.org/viewcvs/relax?rev=24119&view=rev
Log:
Moved the parameter conversion for ns mmq 3site into lib function.

Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion 
models for Clustered analysis.

Modified:
    branches/disp_spin_speed/lib/dispersion/ns_mmq_3site.py
    branches/disp_spin_speed/target_functions/relax_disp.py

Modified: branches/disp_spin_speed/lib/dispersion/ns_mmq_3site.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/disp_spin_speed/lib/dispersion/ns_mmq_3site.py?rev=24119&r1=24118&r2=24119&view=diff
==============================================================================
--- branches/disp_spin_speed/lib/dispersion/ns_mmq_3site.py     (original)
+++ branches/disp_spin_speed/lib/dispersion/ns_mmq_3site.py     Wed Jun 18 
18:52:37 2014
@@ -110,7 +110,7 @@
     matrix[2, 2] = -k_CB - k_CA + 1.j*dw_AC - R20C
 
 
-def r2eff_ns_mmq_3site_mq(M0=None, F_vector=array([1, 0, 0], float64), 
m1=None, m2=None, R20A=None, R20B=None, R20C=None, pA=None, pB=None, pC=None, 
dw_AB=None, dw_AC=None, dwH_AB=None, dwH_AC=None, k_AB=None, k_BA=None, 
k_BC=None, k_CB=None, k_AC=None, k_CA=None, inv_tcpmg=None, tcp=None, 
back_calc=None, num_points=None, power=None):
+def r2eff_ns_mmq_3site_mq(M0=None, F_vector=array([1, 0, 0], float64), 
m1=None, m2=None, R20A=None, R20B=None, R20C=None, pA=None, pB=None, 
dw_AB=None, dw_AC=None, dwH_AB=None, dwH_AC=None, kex_AB=None, kex_BC=None, 
kex_AC=None, inv_tcpmg=None, tcp=None, back_calc=None, num_points=None, 
power=None):
     """The 3-site numerical solution to the Bloch-McConnell equation for MQ 
data.
 
     The notation used here comes from:
@@ -142,8 +142,6 @@
     @type pA:               float
     @keyword pB:            The population of state B.
     @type pB:               float
-    @keyword pC:            The population of state C.
-    @type pC:               float
     @keyword dw_AB:         The chemical exchange difference between states 
A and B in rad/s.
     @type dw_AB:            numpy float array of rank [NS][NM][NO][ND]
     @keyword dw_AC:         The chemical exchange difference between states 
A and C in rad/s.
@@ -152,18 +150,12 @@
     @type dwH_AB:           numpy float array of rank [NS][NM][NO][ND]
     @keyword dwH_AC:        The proton chemical exchange difference between 
states A and C in rad/s.
     @type dwH_AC:           numpy float array of rank [NS][NM][NO][ND]
-    @keyword k_AB:          The rate of exchange from site A to B (rad/s).
-    @type k_AB:             float
-    @keyword k_BA:          The rate of exchange from site B to A (rad/s).
-    @type k_BA:             float
-    @keyword k_BC:          The rate of exchange from site B to C (rad/s).
-    @type k_BC:             float
-    @keyword k_CB:          The rate of exchange from site C to B (rad/s).
-    @type k_CB:             float
-    @keyword k_AC:          The rate of exchange from site A to C (rad/s).
-    @type k_AC:             float
-    @keyword k_CA:          The rate of exchange from site C to A (rad/s).
-    @type k_CA:             float
+    @keyword kex_AB:        The exchange rate between sites A and B for 
3-site exchange with kex_AB = k_AB + k_BA (rad.s^-1)
+    @type kex_AB:           float
+    @keyword kex_BC:        The exchange rate between sites A and C for 
3-site exchange with kex_AC = k_AC + k_CA (rad.s^-1)
+    @type kex_BC:           float
+    @keyword kex_AC:        The exchange rate between sites B and C for 
3-site exchange with kex_BC = k_BC + k_CB (rad.s^-1)
+    @type kex_AC:           float
     @keyword inv_tcpmg:     The inverse of the total duration of the CPMG 
element (in inverse seconds).
     @type inv_tcpmg:        float
     @keyword tcp:           The tau_CPMG times (1 / 4.nu1).
@@ -176,6 +168,23 @@
     @type power:            numpy int array of rank [NS][NM][NO][ND]
     """
 
+    # Once off parameter conversions.
+    pC = 1.0 - pA - pB
+    pA_pB = pA + pB
+    pA_pC = pA + pC
+    pB_pC = pB + pC
+    k_BA = pA * kex_AB / pA_pB
+    k_AB = pB * kex_AB / pA_pB
+    k_CB = pB * kex_BC / pB_pC
+    k_BC = pC * kex_BC / pB_pC
+    k_CA = pA * kex_AC / pA_pC
+    k_AC = pC * kex_AC / pA_pC
+
+    # This is a vector that contains the initial magnetizations 
corresponding to the A and B state transverse magnetizations.
+    M0[0] = pA
+    M0[1] = pB
+    M0[2] = pC
+
     # Extract shape of experiment.
     NS, NM, NO = num_points.shape
 
@@ -283,7 +292,7 @@
                         back_calc[si, mi, oi, i]= -inv_tcpmg[si, mi, oi, i] 
* log(Mx / pA)
 
 
-def r2eff_ns_mmq_3site_sq_dq_zq(M0=None, F_vector=array([1, 0, 0], float64), 
m1=None, m2=None, R20A=None, R20B=None, R20C=None, pA=None, pB=None, pC=None, 
dw_AB=None, dw_AC=None, dwH_AB=None, dwH_AC=None, k_AB=None, k_BA=None, 
k_BC=None, k_CB=None, k_AC=None, k_CA=None, inv_tcpmg=None, tcp=None, 
back_calc=None, num_points=None, power=None):
+def r2eff_ns_mmq_3site_sq_dq_zq(M0=None, F_vector=array([1, 0, 0], float64), 
m1=None, m2=None, R20A=None, R20B=None, R20C=None, pA=None, pB=None, 
dw_AB=None, dw_AC=None, dwH_AB=None, dwH_AC=None, kex_AB=None, kex_BC=None, 
kex_AC=None, inv_tcpmg=None, tcp=None, back_calc=None, num_points=None, 
power=None):
     """The 3-site numerical solution to the Bloch-McConnell equation for SQ, 
ZQ, and DQ data.
 
     The notation used here comes from:
@@ -311,8 +320,6 @@
     @type pA:               float
     @keyword pB:            The population of state B.
     @type pB:               float
-    @keyword pC:            The population of state C.
-    @type pC:               float
     @keyword dw_AB:         The combined chemical exchange difference 
between states A and B in rad/s.  It should be set to dwH for 1H SQ data, dw 
for heteronuclear SQ data, dwH-dw for ZQ data, and dwH+dw for DQ data.
     @type dw_AB:            numpy float array of rank [NS][NM][NO][ND]
     @keyword dw_AC:         The combined chemical exchange difference 
between states A and C in rad/s.  It should be set to dwH for 1H SQ data, dw 
for heteronuclear SQ data, dwH-dw for ZQ data, and dwH+dw for DQ data.
@@ -321,10 +328,12 @@
     @type dwH_AB:           numpy float array of rank [NS][NM][NO][ND]
     @keyword dwH_AC:        Unused - this is simply to match the 
r2eff_mmq_3site_mq() function arguments.
     @type dwH_AC:           numpy float array of rank [NS][NM][NO][ND]
-    @keyword k_AB:          The rate of exchange from site A to B (rad/s).
-    @type k_AB:             float
-    @keyword k_BA:          The rate of exchange from site B to A (rad/s).
-    @type k_BA:             float
+    @keyword kex_AB:        The exchange rate between sites A and B for 
3-site exchange with kex_AB = k_AB + k_BA (rad.s^-1)
+    @type kex_AB:           float
+    @keyword kex_BC:        The exchange rate between sites A and C for 
3-site exchange with kex_AC = k_AC + k_CA (rad.s^-1)
+    @type kex_BC:           float
+    @keyword kex_AC:        The exchange rate between sites B and C for 
3-site exchange with kex_BC = k_BC + k_CB (rad.s^-1)
+    @type kex_AC:           float
     @keyword inv_tcpmg:     The inverse of the total duration of the CPMG 
element (in inverse seconds).
     @type inv_tcpmg:        numpy float array of rank [NS][NM][NO][ND]
     @keyword tcp:           The tau_CPMG times (1 / 4.nu1).
@@ -337,6 +346,23 @@
     @type power:            numpy int array of rank [NS][NM][NO][ND]
     """
 
+    # Once off parameter conversions.
+    pC = 1.0 - pA - pB
+    pA_pB = pA + pB
+    pA_pC = pA + pC
+    pB_pC = pB + pC
+    k_BA = pA * kex_AB / pA_pB
+    k_AB = pB * kex_AB / pA_pB
+    k_CB = pB * kex_BC / pB_pC
+    k_BC = pC * kex_BC / pB_pC
+    k_CA = pA * kex_AC / pA_pC
+    k_AC = pC * kex_AC / pA_pC
+
+    # This is a vector that contains the initial magnetizations 
corresponding to the A and B state transverse magnetizations.
+    M0[0] = pA
+    M0[1] = pB
+    M0[2] = pC
+
     # Extract shape of experiment.
     NS, NM, NO = num_points.shape
 

Modified: branches/disp_spin_speed/target_functions/relax_disp.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/disp_spin_speed/target_functions/relax_disp.py?rev=24119&r1=24118&r2=24119&view=diff
==============================================================================
--- branches/disp_spin_speed/target_functions/relax_disp.py     (original)
+++ branches/disp_spin_speed/target_functions/relax_disp.py     Wed Jun 18 
18:52:37 2014
@@ -677,23 +677,8 @@
         """
 
         # Once off parameter conversions.
-        pC = 1.0 - pA - pB
-        pA_pB = pA + pB
-        pA_pC = pA + pC
-        pB_pC = pB + pC
-        k_BA = pA * kex_AB / pA_pB
-        k_AB = pB * kex_AB / pA_pB
-        k_CB = pB * kex_BC / pB_pC
-        k_BC = pC * kex_BC / pB_pC
-        k_CA = pA * kex_AC / pA_pC
-        k_AC = pC * kex_AC / pA_pC
         dw_AC = dw_AB + dw_BC
         dwH_AC = dwH_AB + dwH_BC
-
-        # This is a vector that contains the initial magnetizations 
corresponding to the A and B state transverse magnetizations.
-        self.M0[0] = pA
-        self.M0[1] = pB
-        self.M0[2] = pC
 
         # Convert dw from ppm to rad/s. Use the out argument, to pass 
directly to structure.
         multiply( multiply.outer( dw_AB.reshape(1, self.NS), 
self.nm_no_nd_ones ), self.frqs, out=self.dw_AB_struct )
@@ -744,7 +729,7 @@
                 aliased_dwH_AC = dw_AC_frq
 
             # Back calculate the R2eff values for each experiment type.
-            self.r2eff_ns_mmq[ei](M0=self.M0, m1=self.m1, m2=self.m2, 
R20A=r20a, R20B=r20b, R20C=r20c, pA=pA, pB=pB, pC=pC, dw_AB=aliased_dw_AB, 
dw_AC=aliased_dw_AC, dwH_AB=aliased_dwH_AB, dwH_AC=aliased_dwH_AC, k_AB=k_AB, 
k_BA=k_BA, k_BC=k_BC, k_CB=k_CB, k_AC=k_AC, k_CA=k_CA, 
inv_tcpmg=self.inv_relax_times[ei], tcp=self.tau_cpmg[ei], 
back_calc=self.back_calc[ei], num_points=self.num_disp_points[ei], 
power=self.power[ei])
+            self.r2eff_ns_mmq[ei](M0=self.M0, m1=self.m1, m2=self.m2, 
R20A=r20a, R20B=r20b, R20C=r20c, pA=pA, pB=pB, dw_AB=aliased_dw_AB, 
dw_AC=aliased_dw_AC, dwH_AB=aliased_dwH_AB, dwH_AC=aliased_dwH_AC, 
kex_AB=kex_AB, kex_BC=kex_BC, kex_AC=kex_AC, 
inv_tcpmg=self.inv_relax_times[ei], tcp=self.tau_cpmg[ei], 
back_calc=self.back_calc[ei], num_points=self.num_disp_points[ei], 
power=self.power[ei])
 
         # Clean the data for all values, which is left over at the end of 
arrays.
         self.back_calc = self.back_calc*self.disp_struct




Related Messages


Powered by MHonArc, Updated Wed Jun 18 19:00:03 2014