Changes in sasmodels/compare_many.py [e922c5d:cd3dba0] in sasmodels
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/compare_many.py
re922c5d rcd3dba0 9 9 from .compare import (MODELS, randomize_model, suppress_pd, eval_sasview, 10 10 eval_opencl, eval_ctypes, make_data, get_demo_pars, 11 columnize )11 columnize, constrain_pars) 12 12 13 13 def get_stats(target, value, index): … … 36 36 def compare_instance(name, data, index, N=1, mono=True, cutoff=1e-5): 37 37 model_definition = core.load_model_definition(name) 38 pars = get_demo_pars( name)38 pars = get_demo_pars(model_definition) 39 39 header = '\n"Model","%s","Count","%d"'%(name, N) 40 40 if not mono: header += ',"Cutoff",%g'%(cutoff,) 41 41 print(header) 42 42 43 # Stuff the failure flag into a mutable object so we can update it from44 # within the nested function. Note that the nested function uses "pars"45 # which is dynamically scoped, not lexically scoped in this context. That46 # is, pars is replaced each time in the loop, so don't assume that it is47 # the default values defined above.48 43 def trymodel(fn, *args, **kw): 49 44 try: 50 result, _ = fn(model_definition, pars, data, *args, **kw) 45 result, _ = fn(model_definition, pars_i, data, *args, **kw) 46 except KeyboardInterrupt: 47 raise 51 48 except: 52 result = np.NaN 53 traceback.print_exc() 49 print >>sys.stderr, traceback.format_exc() 50 print >>sys.stderr, "when comparing",name,"for seed",seed 51 if hasattr(data, 'qx_data'): 52 result = np.NaN*data.data 53 else: 54 result = np.NaN*data.x 54 55 return result 55 56 56 57 num_good = 0 57 58 first = True 58 for _ in range(N): 59 pars, seed = randomize_model(name, pars) 60 if mono: suppress_pd(pars) 61 62 # Force parameter constraints on a per-model basis. 63 if name in ('teubner_strey','broad_peak'): 64 pars['scale'] = 1.0 65 #if name == 'parallelepiped': 66 # pars['a_side'],pars['b_side'],pars['c_side'] = \ 67 # sorted([pars['a_side'],pars['b_side'],pars['c_side']]) 68 59 for k in range(N): 60 print >>sys.stderr, name, k 61 pars_i, seed = randomize_model(pars) 62 constrain_pars(model_definition, pars_i) 63 if mono: suppress_pd(pars_i) 69 64 70 65 good = True … … 97 92 good = good and (stats[0] < 1e-14) 98 93 99 columns += [v for _,v in sorted(pars .items())]94 columns += [v for _,v in sorted(pars_i.items())] 100 95 if first: 101 print_column_headers(pars , labels)96 print_column_headers(pars_i, labels) 102 97 first = False 103 98 if good:
Note: See TracChangeset
for help on using the changeset viewer.