Hi Troels, These two new tests are problematic in that they are no longer unit tests. Unit tests for the lib.dispersion modules should only check the lib.dispersion module functions. But here this is also checking the specific analysis parameter object API. They are also problematic in that the lower grid search values in test_b14_no_rex9() will not correspond to no exchange as kex = 1.0. What is the aim of the tests? The aim of the grid search is to search over regions where exchange is present, as searching where there is no exchange is a waste of grid points - optimisation will quickly send the parameter to zero exchange values if there is no exchange.
Regards, Edward On 28 May 2014 16:49, <[email protected]> wrote: > Author: tlinnet > Date: Wed May 28 16:49:08 2014 > New Revision: 23531 > > URL: http://svn.gna.org/viewcvs/relax?rev=23531&view=rev > Log: > Added 9th and 10th unit test case for model B14. > > These tests are setup, to check how the function behaves under conditions of > the grid-seach. > > Two tests are setup, which either use the default lower or upper bound of the > parameters for the grid search. > > The return of the values are not checked, but the behaving of the function > can be found when adding the --numpy-raise to run relax. > > This is related to: task #7793: (https://gna.org/task/?7793) Speed-up of > dispersion models. > > These tests are implemented to show bug cases related to: > Bug #22032: (bug #22032: Minimisation explodes when using Grid_INC=None) > Minimisation explodes when using Grid_INC=None > > The function can return nan or inf values, which are not handled by the > minimisation algorithm, causing it to stop. > There needs to be mechanism to catch these cases. > > Modified: > branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_b14.py > > Modified: > branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_b14.py > URL: > http://svn.gna.org/viewcvs/relax/branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_b14.py?rev=23531&r1=23530&r2=23531&view=diff > ============================================================================== > --- branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_b14.py > (original) > +++ branches/disp_speed/test_suite/unit_tests/_lib/_dispersion/test_b14.py > Wed May 28 16:49:08 2014 > @@ -25,6 +25,7 @@ > > # relax module imports. > from lib.dispersion.b14 import r2eff_B14 > +from specific_analyses.relax_disp.parameter_object import Relax_disp_params > > > class Test_b14(TestCase): > @@ -51,6 +52,9 @@ > # The spin Larmor frequencies. > self.sfrq = 200. * 1E6 > > + # This is to test the default grid values. > + self.test_val = True > + > > def calc_r2eff(self): > """Calculate and check the R2eff values.""" > @@ -62,8 +66,9 @@ > 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) > > # Check all R2eff values. > - for i in range(self.num_points): > - self.assertAlmostEqual(R2eff[i], self.r20a) > + if self.test_val: > + for i in range(self.num_points): > + self.assertAlmostEqual(R2eff[i], self.r20a) > > > def param_conversion(self, pA=None, kex=None, dw=None, sfrq=None): > @@ -180,3 +185,38 @@ > > # Calculate and check the R2eff values. > self.calc_r2eff() > + > + > + def test_b14_no_rex9(self): > + """Test the r2eff_b14() function for the default lower grid values. > This is to catch un-discovered numpy-raises in calculations. """ > + > + PARAMS = Relax_disp_params() > + > + # Parameter reset. > + self.r20a = PARAMS.grid_lower('r2a') > + self.r20b = PARAMS.grid_lower('r2b') > + self.pA = PARAMS.grid_lower('pA') > + self.kex = PARAMS.grid_lower('kex') > + > + self.test_val = False > + > + # Calculate and check the R2eff values. > + self.calc_r2eff() > + > + > + def test_b14_no_rex10(self): > + """Test the r2eff_b14() function for the default lower grid values. > This is to catch un-discovered numpy-raises in calculations. """ > + > + PARAMS = Relax_disp_params() > + > + # Parameter reset. > + self.r20a = PARAMS.grid_upper('r2a') > + self.r20b = PARAMS.grid_upper('r2b') > + self.dw = PARAMS.grid_upper('dw') > + self.pA = PARAMS.grid_upper('pA') > + self.kex = PARAMS.grid_upper('kex') > + > + self.test_val = False > + > + # 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

