Changeset cd3dba0 in sasmodels for sasmodels/compare.py
- Timestamp:
- Nov 23, 2015 7:14:54 PM (8 years ago)
- 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:
- 0e9048f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/compare.py
r73a3e22 rcd3dba0 16 16 from . import core 17 17 from . import kerneldll 18 from . import models18 from . import generate 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( name,pars, seed=None):118 def randomize_model(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 # The capped cylinder model has a constraint on its parameters 124 125 return pars, seed 126 127 def constrain_pars(model_definition, pars): 128 name = model_definition.name 125 129 if name == 'capped_cylinder' and pars['cap_radius'] < pars['radius']: 126 130 pars['radius'],pars['cap_radius'] = pars['cap_radius'],pars['radius'] 127 return pars, seed 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 128 140 129 141 def parlist(pars): … … 209 221 210 222 def compare(name, pars, Ncpu, Nocl, opts, set_pars): 223 model_definition = core.load_model_definition(name) 224 211 225 view = 'linear' if '-linear' in opts else 'log' if '-log' in opts else 'q4' if '-q4' in opts else 'log' 212 226 … … 231 245 if '-random' in opts or '-random' in opt_values: 232 246 seed = int(opt_values['-random']) if '-random' in opt_values else None 233 pars, seed = randomize_model(name, pars, seed=seed) 247 pars, seed = randomize_model(pars, seed=seed) 248 constrain_pars(model_definition, pars) 234 249 print "Randomize using -random=%i"%seed 235 250 pars.update(set_pars) # set value after random to control value … … 241 256 print "pars",parlist(pars) 242 257 243 model_definition = core.load_model_definition(name)244 258 # OpenCl calculation 245 259 if Nocl > 0: … … 247 261 dtype=dtype, cutoff=cutoff, Nevals=Nocl) 248 262 print "opencl t=%.1f ms, intensity=%.0f"%(ocl_time, sum(ocl)) 263 #print "ocl", ocl 249 264 #print max(ocl), min(ocl) 250 265 … … 261 276 #print "ocl/sasview", (ocl-pars['background'])/(cpu-pars['background']) 262 277 print "sasview t=%.1f ms, intensity=%.0f"%(cpu_time, sum(cpu)) 278 #print "sasview",cpu 263 279 except ImportError: 264 280 Ncpu = 0 … … 396 412 397 413 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) 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']) 403 418 return pars 404 419 … … 425 440 # if model does not define demo parameters 426 441 name = args[0] 427 pars = get_demo_pars(name) 442 model_definition = core.load_model_definition(name) 443 pars = get_demo_pars(model_definition) 428 444 429 445 Nopencl = int(args[1]) if len(args) > 1 else 5
Note: See TracChangeset
for help on using the changeset viewer.