Hi Troels,

Due to the problem I mentioned of either dw or dwH being zero but
still seeing exchange
(http://article.gmane.org/gmane.science.nmr.relax.devel/5940), I would
recommend that you modify these tests as follows.  I would modify all
the tests where dw = 0.0 to be where both dw and dwH are zero at the
same time.  Then the test_mmq_cr72_no_rex9() test is not needed.

Cheers,

Edward



On 26 May 2014 23:09,  <[email protected]> wrote:
> Author: tlinnet
> Date: Mon May 26 23:09:40 2014
> New Revision: 23438
>
> URL: http://svn.gna.org/viewcvs/relax?rev=23438&view=rev
> Log:
> Added 9 unit tests demonstrating edge case 'no Rex' failures of the model 
> 'MMQ CR72'.
>
> 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 = 1e5,
>     - dwH = 0.0,
>
> Modified:
>     
> branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_mmq_cr72.py
>
> Modified: 
> branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_mmq_cr72.py
> URL: 
> http://svn.gna.org/viewcvs/relax/branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_mmq_cr72.py?rev=23438&r1=23437&r2=23438&view=diff
> ==============================================================================
> --- 
> branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_mmq_cr72.py 
> (original)
> +++ 
> branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_mmq_cr72.py 
> Mon May 26 23:09:40 2014
> @@ -24,48 +24,49 @@
>  from unittest import TestCase
>
>  # relax module imports.
> -from lib.dispersion.b14 import r2eff_B14
> +from lib.dispersion.mmq_cr72 import r2eff_mmq_cr72
>
>
> -class Test_b14(TestCase):
> -    """Unit tests for the lib.dispersion.b14 relax module."""
> +class Test_mmq_cr72(TestCase):
> +    """Unit tests for the lib.dispersion.mmq_cr72 relax module."""
>
>      def setUp(self):
>          """Set up for all unit tests."""
>
>          # Default parameter values.
> -        self.r20a = 2.0
> -        self.r20b = 2.0
> +        self.r20 = 2.0
>          self.pA = 0.99
>          self.dw = 2.0
> +        self.dwH = 0.5
>          self.kex = 1000.0
>
>          # Required data structures.
>          self.num_points = 7
> -        self.ncyc = array([2, 4, 8, 10, 20, 40, 500])
> +        self.ncyc = array([2, 4, 8, 10, 20, 40])
>          relax_times = 0.04
> -        cpmg_frqs = self.ncyc / relax_times
> +        self.cpmg_frqs = self.ncyc / relax_times
>          self.inv_relax_times = 1.0 / relax_times
> -        self.tau_cpmg = 0.25 / cpmg_frqs
> +        self.tau_cpmg = 0.25 / self.cpmg_frqs
>
>          # The spin Larmor frequencies.
>          self.sfrq = 200. * 1E6
> +
>
>      def calc_r2eff(self):
>          """Calculate and check the R2eff values."""
>
>          # Parameter conversions.
> -        k_AB, k_BA, pB, dw_frq  = self.param_conversion(pA=self.pA, 
> kex=self.kex, dw=self.dw, sfrq=self.sfrq)
> +        k_AB, k_BA, pB, dw_frq, dwH_frq  = self.param_conversion(pA=self.pA, 
> kex=self.kex, dw=self.dw, dwH=self.dwH, sfrq=self.sfrq)
>
>          # Calculate the R2eff values.
> -        R2eff = r2eff_B14(r20a=self.r20a, r20b=self.r20b, pA=self.pA, pB=pB, 
> dw=dw_frq, kex=self.kex, k_AB=k_AB, k_BA=k_BA, ncyc=self.ncyc, 
> inv_tcpmg=self.inv_relax_times, tcp=self.tau_cpmg, num_points=self.num_points)
> +        R2eff = r2eff_mmq_cr72(r20=self.r20, pA=self.pA, pB=pB, dw=dw_frq, 
> dwH=dwH_frq, kex=self.kex, k_AB=k_AB, k_BA=k_BA, cpmg_frqs=self.cpmg_frqs, 
> inv_tcpmg=self.inv_relax_times, tcp=self.tau_cpmg, 
> num_points=self.num_points, power=self.ncyc)
>
>          # Check all R2eff values.
>          for i in range(self.num_points):
> -            self.assertAlmostEqual(R2eff[i], self.r20a)
> +            self.assertAlmostEqual(R2eff[i], self.r20)
>
>
> -    def param_conversion(self, pA=None, kex=None, dw=None, sfrq=None):
> +    def param_conversion(self, pA=None, kex=None, dw=None, dwH=None, 
> sfrq=None):
>          """Convert the parameters.
>
>          @keyword pA:    The population of state A.
> @@ -74,6 +75,8 @@
>          @type kex:      float
>          @keyword dw:    The chemical exchange difference between states A 
> and B in ppm.
>          @type dw:       float
> +        @keyword dwH:   The proton chemical exchange difference between 
> states A and B in ppm.
> +        @type dwH:      float
>          @keyword sfrq:  The spin Larmor frequencies in Hz.
>          @type sfrq:     float
>          @return:        The parameters {k_AB, k_BA, pB, dw_frq}.
> @@ -93,12 +96,15 @@
>          # Convert dw from ppm to rad/s.
>          dw_frq = dw * frqs
>
> +        # Convert dwH from ppm to rad/s.
> +        dwH_frq = dwH * frqs
> +
>          # Return all values.
> -        return k_AB, k_BA, pB, dw_frq
> +        return k_AB, k_BA, pB, dw_frq, dwH_frq
>
>
> -    def test_b14_no_rex1(self):
> -        """Test the r2eff_b14() function for no exchange when dw = 0.0."""
> +    def test_mmq_cr72_no_rex1(self):
> +        """Test the r2eff_mmq_cr72() function for no exchange when dw = 
> 0.0."""
>
>          # Parameter reset.
>          self.dw = 0.0
> @@ -107,8 +113,8 @@
>          self.calc_r2eff()
>
>
> -    def test_b14_no_rex2(self):
> -        """Test the r2eff_b14() function for no exchange when pA = 1.0."""
> +    def test_mmq_cr72_no_rex2(self):
> +        """Test the r2eff_mmq_cr72() function for no exchange when pA = 
> 1.0."""
>
>          # Parameter reset.
>          self.pA = 1.0
> @@ -117,8 +123,8 @@
>          self.calc_r2eff()
>
>
> -    def test_b14_no_rex3(self):
> -        """Test the r2eff_b14() function for no exchange when kex = 0.0."""
> +    def test_mmq_cr72_no_rex3(self):
> +        """Test the r2eff_mmq_cr72() function for no exchange when kex = 
> 0.0."""
>
>          # Parameter reset.
>          self.kex = 0.0
> @@ -127,8 +133,8 @@
>          self.calc_r2eff()
>
>
> -    def test_b14_no_rex4(self):
> -        """Test the r2eff_b14() function for no exchange when dw = 0.0 and 
> pA = 1.0."""
> +    def test_mmq_cr72_no_rex4(self):
> +        """Test the r2eff_mmq_cr72() function for no exchange when dw = 0.0 
> and pA = 1.0."""
>
>          # Parameter reset.
>          self.pA = 1.0
> @@ -138,8 +144,8 @@
>          self.calc_r2eff()
>
>
> -    def test_b14_no_rex5(self):
> -        """Test the r2eff_b14() function for no exchange when dw = 0.0 and 
> kex = 0.0."""
> +    def test_mmq_cr72_no_rex5(self):
> +        """Test the r2eff_mmq_cr72() function for no exchange when dw = 0.0 
> and kex = 0.0."""
>
>          # Parameter reset.
>          self.dw = 0.0
> @@ -149,8 +155,8 @@
>          self.calc_r2eff()
>
>
> -    def test_b14_no_rex6(self):
> -        """Test the r2eff_b14() function for no exchange when pA = 1.0 and 
> kex = 0.0."""
> +    def test_mmq_cr72_no_rex6(self):
> +        """Test the r2eff_mmq_cr72() function for no exchange when pA = 1.0 
> and kex = 0.0."""
>
>          # Parameter reset.
>          self.pA = 1.0
> @@ -160,8 +166,8 @@
>          self.calc_r2eff()
>
>
> -    def test_b14_no_rex7(self):
> -        """Test the r2eff_b14() function for no exchange when dw = 0.0, pA = 
> 1.0, and kex = 0.0."""
> +    def test_mmq_cr72_no_rex7(self):
> +        """Test the r2eff_mmq_cr72() function for no exchange when dw = 0.0, 
> pA = 1.0, and kex = 0.0."""
>
>          # Parameter reset.
>          self.dw = 0.0
> @@ -169,3 +175,23 @@
>
>          # Calculate and check the R2eff values.
>          self.calc_r2eff()
> +
> +
> +    def test_mmq_cr72_no_rex8(self):
> +        """Test the r2eff_mmq_cr72() function for no exchange when kex = 
> 1e5."""
> +
> +        # Parameter reset.
> +        self.kex = 1e5
> +
> +        # Calculate and check the R2eff values.
> +        self.calc_r2eff()
> +
> +
> +    def test_mmq_cr72_no_rex9(self):
> +        """Test the r2eff_mmq_cr72() function for no exchange when dwH = 
> 0.0."""
> +
> +        # Parameter reset.
> +        self.dwH = 0.0
> +
> +        # Calculate and check the R2eff values.
> +        self.calc_r2eff()
>
>
> _______________________________________________
> relax (http://www.nmr-relax.com)
>
> This is the relax-commits mailing list
> [email protected]
>
> 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

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

This is the relax-devel mailing list
[email protected]

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-devel

Reply via email to