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