mailRe: r23444 - /branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_tp02.py


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

Header


Content

Posted by Edward d'Auvergne on May 27, 2014 - 09:57:
Hi Troels,

Again, as this TP02 model is off-resonance
(http://wiki.nmr-relax.com/TP02), please see the unit test bug
described at http://article.gmane.org/gmane.science.nmr.relax.devel/5938.

Cheers,

Edward


On 26 May 2014 23:09,  <tlinnet@xxxxxxxxxxxxx> wrote:
Author: tlinnet
Date: Mon May 26 23:09:54 2014
New Revision: 23444

URL: http://svn.gna.org/viewcvs/relax?rev=23444&view=rev
Log:
Added 8 unit tests demonstrating edge case 'no Rex' failures of the model 
'TP02'.

This follows from the ideas in the post 
http://article.gmane.org/gmane.science.nmr.relax.devel/5858.
This is related to: task #7793: (https://gna.org/task/?7793) Speed-up of 
dispersion models.

This is to implement catching of math domain errors, before they occur.

These tests cover all parameter value combinations which result in no 
exchange:

    - dw = 0.0,
    - pA = 1.0,
    - kex = 0.0,
    - dw = 0.0 and pA = 1.0,
    - dw = 0.0 and kex = 0.0,
    - pA = 1.0 and kex = 0.0,
    - dw = 0.0, pA = 1.0, and kex = 0.0.
    - kex = 1e20,

Modified:
    branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_tp02.py

Modified: 
branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_tp02.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_tp02.py?rev=23444&r1=23443&r2=23444&view=diff
==============================================================================
--- branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_tp02.py 
    (original)
+++ branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_tp02.py 
    Mon May 26 23:09:54 2014
@@ -25,11 +25,11 @@
 from unittest import TestCase

 # relax module imports.
-from lib.dispersion.dpl94 import r1rho_DPL94
+from lib.dispersion.tp02 import r1rho_TP02


-class Test_dpl94(TestCase):
-    """Unit tests for the lib.dispersion.dpl94 relax module."""
+class Test_tp02(TestCase):
+    """Unit tests for the lib.dispersion.tp02 relax module."""

     def setUp(self):
         """Set up for all unit tests."""
@@ -38,7 +38,12 @@


         # The R1rho_prime parameter value (R1rho with no exchange).
-        self.r1rho_prime = 2.5
+        self.r1rho_prime = 5.0
+        # The chemical shifts in rad/s.  This is only used for 
off-resonance R1rho models.
+        self.omega = -35670.44192
+        # The structure of spin-lock or hard pulse offsets in rad/s.
+        self.offset = -35040.3526693
+
         # Population of ground state.
         self.pA = 0.9
         # The chemical exchange difference between states A and B in ppm.
@@ -48,8 +53,6 @@
         self.r1 = 1.0
         # The spin-lock field strengths in Hertz.
         self.spin_lock_nu1 = array([ 1000., 1500., 2000., 2500., 3000., 
3500., 4000., 4500., 5000., 5500., 6000.])
-        # The rotating frame tilt angles for each dispersion point.
-        self.theta = array([1.5707963267948966, 1.5707963267948966, 
1.5707963267948966, 1.5707963267948966, 1.5707963267948966, 
1.5707963267948966, 1.5707963267948966, 1.5707963267948966, 
1.5707963267948966, 1.5707963267948966, 1.5707963267948966])

         # The spin Larmor frequencies.
         self.sfrq = 599.8908617*1E6
@@ -62,14 +65,19 @@
         """Calculate and check the R1rho values."""

         # Parameter conversions.
-        phi_ex_scaled, spin_lock_omega1_squared = 
self.param_conversion(pA=self.pA, dw=self.dw, sfrq=self.sfrq, 
spin_lock_nu1=self.spin_lock_nu1)
+        pB, dw_frq, spin_lock_omega1, spin_lock_omega1_squared = 
self.param_conversion(pA=self.pA, dw=self.dw, sfrq=self.sfrq, 
spin_lock_nu1=self.spin_lock_nu1)

         # Calculate the R1rho values.
-        R1rho = r1rho_DPL94(r1rho_prime=self.r1rho_prime, 
phi_ex=phi_ex_scaled, kex=self.kex, theta=self.theta, R1=self.r1, 
spin_lock_fields2=spin_lock_omega1_squared, num_points=self.num_points)
+        R1rho = r1rho_TP02(r1rho_prime=self.r1rho_prime, omega=self.omega, 
offset=self.offset, pA=self.pA, pB=pB, dw=dw_frq, kex=self.kex, R1=self.r1, 
spin_lock_fields=spin_lock_omega1, 
spin_lock_fields2=spin_lock_omega1_squared, num_points=self.num_points)
+

         # Check all R1rho values.
-        for i in range(self.num_points):
-            self.assertAlmostEqual(R1rho[i], self.r1rho_prime)
+        if self.kex > 1.e5:
+            for i in range(self.num_points):
+                self.assertAlmostEqual(R1rho[i], self.r1, 6)
+        else:
+            for i in range(self.num_points):
+                self.assertAlmostEqual(R1rho[i], self.r1rho_prime)


     def param_conversion(self, pA=None, dw=None, sfrq=None, 
spin_lock_nu1=None):
@@ -83,7 +91,7 @@
         @type sfrq:             float
         @keyword spin_lock_nu1: The spin-lock field strengths in Hertz.
         @type spin_lock_nu1:    float
-        @return:                The parameters {phi_ex_scaled, k_BA}.
+        @return:                The parameters {pB, dw_frq, 
spin_lock_omega1, spin_lock_omega1_squared}.
         @rtype:                 tuple of float
         """

@@ -93,21 +101,21 @@
         # Calculate spin Larmor frequencies in 2pi.
         frqs = sfrq * 2 * pi

-        # The phi_ex parameter value (pA * pB * delta_omega^2).
-        phi_ex = pA * pB * dw**2
+        # Convert dw from ppm to rad/s.
+        dw_frq = dw * frqs

-        # Convert phi_ex from ppm^2 to (rad/s)^2.
-        phi_ex_scaled = phi_ex * frqs**2
+        # The R1rho spin-lock field strengths (in rad.s-1).
+        spin_lock_omega1 = (2. * pi * spin_lock_nu1)

         # The R1rho spin-lock field strengths squared (in rad^2.s^-2).
-        spin_lock_omega1_squared = (2. * pi * spin_lock_nu1)**2
+        spin_lock_omega1_squared = spin_lock_omega1**2

         # Return all values.
-        return phi_ex_scaled, spin_lock_omega1_squared
+        return pB, dw_frq, spin_lock_omega1, spin_lock_omega1_squared


-    def test_dpl94_no_rex1(self):
-        """Test the r1rho_dpl94() function for no exchange when dw = 
0.0."""
+    def test_tp02_no_rex1(self):
+        """Test the r1rho_tp02() function for no exchange when dw = 0.0."""

         # Parameter reset.
         self.dw = 0.0
@@ -116,8 +124,8 @@
         self.calc_r1rho()


-    def test_dpl94_no_rex2(self):
-        """Test the r1rho_dpl94() function for no exchange when pA = 
1.0."""
+    def test_tp02_no_rex2(self):
+        """Test the r1rho_tp02() function for no exchange when pA = 1.0."""

         # Parameter reset.
         self.pA = 1.0
@@ -126,8 +134,8 @@
         self.calc_r1rho()


-    def test_dpl94_no_rex3(self):
-        """Test the r1rho_dpl94() function for no exchange when kex = 
0.0."""
+    def test_tp02_no_rex3(self):
+        """Test the r1rho_tp02() function for no exchange when kex = 
0.0."""

         # Parameter reset.
         self.kex = 0.0
@@ -136,8 +144,8 @@
         self.calc_r1rho()


-    def test_dpl94_no_rex4(self):
-        """Test the r1rho_dpl94() function for no exchange when dw = 0.0 
and pA = 1.0."""
+    def test_tp02_no_rex4(self):
+        """Test the r1rho_tp02() function for no exchange when dw = 0.0 
and pA = 1.0."""

         # Parameter reset.
         self.pA = 1.0
@@ -147,8 +155,8 @@
         self.calc_r1rho()


-    def test_dpl94_no_rex5(self):
-        """Test the r1rho_dpl94() function for no exchange when dw = 0.0 
and kex = 0.0."""
+    def test_tp02_no_rex5(self):
+        """Test the r1rho_tp02() function for no exchange when dw = 0.0 
and kex = 0.0."""

         # Parameter reset.
         self.dw = 0.0
@@ -158,8 +166,8 @@
         self.calc_r1rho()


-    def test_dpl94_no_rex6(self):
-        """Test the r1rho_dpl94() function for no exchange when pA = 1.0 
and kex = 0.0."""
+    def test_tp02_no_rex6(self):
+        """Test the r1rho_tp02() function for no exchange when pA = 1.0 
and kex = 0.0."""

         # Parameter reset.
         self.pA = 1.0
@@ -169,8 +177,8 @@
         self.calc_r1rho()


-    def test_dpl94_no_rex7(self):
-        """Test the r1rho_dpl94() function for no exchange when dw = 0.0, 
pA = 1.0, and kex = 0.0."""
+    def test_tp02_no_rex7(self):
+        """Test the r1rho_tp02() function for no exchange when dw = 0.0, 
pA = 1.0, and kex = 0.0."""

         # Parameter reset.
         self.dw = 0.0
@@ -178,3 +186,13 @@

         # Calculate and check the R1rho values.
         self.calc_r1rho()
+
+
+    def test_tp02_no_rex8(self):
+        """Test the r1rho_tp02() function for no exchange when kex = 
1e20."""
+
+        # Parameter reset.
+        self.kex = 1e20
+
+        # Calculate and check the R2eff values.
+        self.calc_r1rho()


_______________________________________________
relax (http://www.nmr-relax.com)

This is the relax-commits mailing list
relax-commits@xxxxxxx

To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits



Related Messages


Powered by MHonArc, Updated Tue May 27 10:20:15 2014