Changes in sasmodels/compare.py [cd3dba0:73a3e22] in sasmodels
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/compare.py
rcd3dba0 r73a3e22 16 16 from . import core 17 17 from . import kerneldll 18 from . import generate18 from . import models 19 19 from .data import plot_theory, empty_data1D, empty_data2D 20 20 from .direct_model import DirectModel … … 116 116 return 2*np.random.rand()*(v if v != 0 else 1) 117 117 118 def randomize_model( pars, seed=None):118 def randomize_model(name, pars, seed=None): 119 119 if seed is None: 120 120 seed = np.random.randint(1e9) … … 122 122 # Note: the sort guarantees order of calls to random number generator 123 123 pars = dict((p,randomize(p,v)) for p,v in sorted(pars.items())) 124 125 return pars, seed 126 127 def constrain_pars(model_definition, pars): 128 name = model_definition.name 124 # The capped cylinder model has a constraint on its parameters 129 125 if name == 'capped_cylinder' and pars['cap_radius'] < pars['radius']: 130 126 pars['radius'],pars['cap_radius'] = pars['cap_radius'],pars['radius'] 131 132 # These constraints are only needed for comparison to sasview 133 if name in ('teubner_strey','broad_peak'): 134 del pars['scale'] 135 if name in ('guinier',): 136 del pars['background'] 137 if getattr(model_definition, 'category', None) == 'structure-factor': 138 del pars['scale'], pars['background'] 139 127 return pars, seed 140 128 141 129 def parlist(pars): … … 221 209 222 210 def compare(name, pars, Ncpu, Nocl, opts, set_pars): 223 model_definition = core.load_model_definition(name)224 225 211 view = 'linear' if '-linear' in opts else 'log' if '-log' in opts else 'q4' if '-q4' in opts else 'log' 226 212 … … 245 231 if '-random' in opts or '-random' in opt_values: 246 232 seed = int(opt_values['-random']) if '-random' in opt_values else None 247 pars, seed = randomize_model(pars, seed=seed) 248 constrain_pars(model_definition, pars) 233 pars, seed = randomize_model(name, pars, seed=seed) 249 234 print "Randomize using -random=%i"%seed 250 235 pars.update(set_pars) # set value after random to control value … … 256 241 print "pars",parlist(pars) 257 242 243 model_definition = core.load_model_definition(name) 258 244 # OpenCl calculation 259 245 if Nocl > 0: … … 261 247 dtype=dtype, cutoff=cutoff, Nevals=Nocl) 262 248 print "opencl t=%.1f ms, intensity=%.0f"%(ocl_time, sum(ocl)) 263 #print "ocl", ocl264 249 #print max(ocl), min(ocl) 265 250 … … 276 261 #print "ocl/sasview", (ocl-pars['background'])/(cpu-pars['background']) 277 262 print "sasview t=%.1f ms, intensity=%.0f"%(cpu_time, sum(cpu)) 278 #print "sasview",cpu279 263 except ImportError: 280 264 Ncpu = 0 … … 412 396 413 397 414 def get_demo_pars(model_definition): 415 info = generate.make_info(model_definition) 416 pars = dict((p[0],p[2]) for p in info['parameters']) 417 pars.update(info['demo']) 398 def get_demo_pars(name): 399 __import__('sasmodels.models.'+name) 400 model = getattr(models, name) 401 pars = getattr(model, 'demo', None) 402 if pars is None: pars = dict((p[0],p[2]) for p in model.parameters) 418 403 return pars 419 404 … … 440 425 # if model does not define demo parameters 441 426 name = args[0] 442 model_definition = core.load_model_definition(name) 443 pars = get_demo_pars(model_definition) 427 pars = get_demo_pars(name) 444 428 445 429 Nopencl = int(args[1]) if len(args) > 1 else 5
Note: See TracChangeset
for help on using the changeset viewer.