Changeset 3c56da87 in sasmodels for sasmodels/model_test.py


Ignore:
Timestamp:
Mar 5, 2015 12:55:38 AM (9 years ago)
Author:
Paul Kienzle <pkienzle@…>
Branches:
master, core_shell_microgels, costrafo411, magnetic_model, release_v0.94, release_v0.95, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
Children:
3a45c2c
Parents:
b89f519
Message:

lint cleanup

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/model_test.py

    rd6adfbe r3c56da87  
    55Usage:: 
    66 
    7      python -m sasmodels.model_test [opencl|dll|opencl_and_dll] model1 model2 ... 
    8  
    9      if model1 is 'all', then all except the remaining models will be tested 
     7    python -m sasmodels.model_test [opencl|dll|opencl_and_dll] model1 model2 ... 
     8 
     9    if model1 is 'all', then all except the remaining models will be tested 
    1010 
    1111Each model is tested using the default parameters at q=0.1, (qx,qy)=(0.1,0.1), 
     
    6060    Example:: 
    6161        >>> D = {} 
    62         >>> try:  
     62        >>> try: 
    6363        ...    print D['hello'] 
    64         ... except Exception,exc:  
     64        ... except Exception,exc: 
    6565        ...    annotate_exception(exc, "while accessing 'D'") 
    6666        ...    raise 
     
    7878        except: 
    7979            exc.args = (" ".join((str(exc),msg)),) 
    80      
    81 def suite(loaders, models): 
     80 
     81def make_suite(loaders, models): 
    8282 
    8383    ModelTestCase = _hide_model_case_from_nosetests() 
     
    100100            ] 
    101101        tests = smoke_tests + getattr(model_definition, 'tests', []) 
    102          
     102 
    103103        if tests: # in case there are no smoke tests... 
    104104            #print '------' 
     
    143143                model = self.loader(self.definition) 
    144144                for test in self.tests: 
    145                     pars, Q, I = test 
    146  
    147                     if not isinstance(I, list): 
    148                         I = [I] 
    149                     if not isinstance(Q, list): 
    150                         Q = [Q] 
    151  
    152                     self.assertEqual(len(I), len(Q)) 
    153  
    154                     if Q[0] == 'ER': 
    155                         Iq = [call_ER(kernel, pars)] 
    156                     elif Q[0] == 'VR': 
    157                         Iq = [call_VR(kernel, pars)] 
    158                     elif isinstance(Q[0], tuple): 
    159                         Qx,Qy = zip(*Q) 
    160                         Q_vectors = [np.array(Qx), np.array(Qy)] 
    161                         kernel = make_kernel(model, Q_vectors) 
    162                         Iq = call_kernel(kernel, pars) 
    163                     else: 
    164                         Q_vectors = [np.array(Q)] 
    165                         kernel = make_kernel(model, Q_vectors) 
    166                         Iq = call_kernel(kernel, pars) 
    167  
    168                     self.assertGreater(len(Iq), 0) 
    169                     self.assertEqual(len(I), len(Iq)) 
    170  
    171                     for q, i, iq in zip(Q, I, Iq): 
    172                         if i is None: 
    173                             # smoke test --- make sure it runs and produces a value 
    174                             self.assertTrue(np.isfinite(iq), 'q:%s; not finite; actual:%s' % (q, iq)) 
    175                         else: 
    176                             err = abs(i - iq) 
    177                             nrm = abs(i) 
    178                             self.assertLess(err * 10**5, nrm, 'q:%s; expected:%s; actual:%s' % (q, i, iq)) 
     145                    self._run_one_test(model, test) 
    179146 
    180147            except Exception,exc: 
     
    182149                raise 
    183150 
     151        def _run_one_test(self, model, test): 
     152            pars, x, y = test 
     153 
     154            if not isinstance(y, list): 
     155                y = [y] 
     156            if not isinstance(x, list): 
     157                x = [x] 
     158 
     159            self.assertEqual(len(y), len(x)) 
     160 
     161            if x[0] == 'ER': 
     162                actual = [call_ER(model.info, pars)] 
     163            elif x[0] == 'VR': 
     164                actual = [call_VR(model.info, pars)] 
     165            elif isinstance(x[0], tuple): 
     166                Qx,Qy = zip(*x) 
     167                q_vectors = [np.array(Qx), np.array(Qy)] 
     168                kernel = make_kernel(model, q_vectors) 
     169                actual = call_kernel(kernel, pars) 
     170            else: 
     171                q_vectors = [np.array(x)] 
     172                kernel = make_kernel(model, q_vectors) 
     173                actual = call_kernel(kernel, pars) 
     174 
     175            self.assertGreater(len(actual), 0) 
     176            self.assertEqual(len(y), len(actual)) 
     177 
     178            for xi, yi, actual_yi in zip(x, y, actual): 
     179                if yi is None: 
     180                    # smoke test --- make sure it runs and produces a value 
     181                    self.assertTrue(np.isfinite(actual_yi), 
     182                        'invalid f(%s): %s' % (xi, actual_yi)) 
     183                else: 
     184                    err = abs(yi - actual_yi) 
     185                    nrm = abs(yi) 
     186                    self.assertLess(err * 10**5, nrm, 
     187                        'f(%s); expected:%s; actual:%s' % (xi, yi, actual_yi)) 
     188 
    184189    return ModelTestCase 
    185190 
     
    187192# let nosetests sniff out the tests 
    188193def model_tests(): 
    189     tests = suite(['opencl','dll'],['all']) 
     194    tests = make_suite(['opencl','dll'],['all']) 
    190195    for test_i in tests: 
    191196        yield test_i.runTest 
     
    218223    #run_tests(loaders, models) 
    219224    runner = unittest.TextTestRunner() 
    220     result = runner.run(suite(loaders, models)) 
     225    result = runner.run(make_suite(loaders, models)) 
    221226    return 1 if result.failures or result.errors else 0 
    222227 
Note: See TracChangeset for help on using the changeset viewer.