Changes in sasmodels/compare.py [cd3dba0:73a3e22] in sasmodels


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/compare.py

    rcd3dba0 r73a3e22  
    1616from . import core 
    1717from . import kerneldll 
    18 from . import generate 
     18from . import models 
    1919from .data import plot_theory, empty_data1D, empty_data2D 
    2020from .direct_model import DirectModel 
     
    116116        return 2*np.random.rand()*(v if v != 0 else 1) 
    117117 
    118 def randomize_model(pars, seed=None): 
     118def randomize_model(name, pars, seed=None): 
    119119    if seed is None: 
    120120        seed = np.random.randint(1e9) 
     
    122122    # Note: the sort guarantees order of calls to random number generator 
    123123    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 
    129125    if name == 'capped_cylinder' and pars['cap_radius'] < pars['radius']: 
    130126        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 
    140128 
    141129def parlist(pars): 
     
    221209 
    222210def compare(name, pars, Ncpu, Nocl, opts, set_pars): 
    223     model_definition = core.load_model_definition(name) 
    224  
    225211    view = 'linear' if '-linear' in opts else 'log' if '-log' in opts else 'q4' if '-q4' in opts else 'log' 
    226212 
     
    245231    if '-random' in opts or '-random' in opt_values: 
    246232        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) 
    249234        print "Randomize using -random=%i"%seed 
    250235    pars.update(set_pars)  # set value after random to control value 
     
    256241        print "pars",parlist(pars) 
    257242 
     243    model_definition = core.load_model_definition(name) 
    258244    # OpenCl calculation 
    259245    if Nocl > 0: 
     
    261247                                    dtype=dtype, cutoff=cutoff, Nevals=Nocl) 
    262248        print "opencl t=%.1f ms, intensity=%.0f"%(ocl_time, sum(ocl)) 
    263         #print "ocl", ocl 
    264249        #print max(ocl), min(ocl) 
    265250 
     
    276261            #print "ocl/sasview", (ocl-pars['background'])/(cpu-pars['background']) 
    277262            print "sasview t=%.1f ms, intensity=%.0f"%(cpu_time, sum(cpu)) 
    278             #print "sasview",cpu 
    279263        except ImportError: 
    280264            Ncpu = 0 
     
    412396 
    413397 
    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']) 
     398def 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) 
    418403    return pars 
    419404 
     
    440425    # if model does not define demo parameters 
    441426    name = args[0] 
    442     model_definition = core.load_model_definition(name) 
    443     pars = get_demo_pars(model_definition) 
     427    pars = get_demo_pars(name) 
    444428 
    445429    Nopencl = int(args[1]) if len(args) > 1 else 5 
Note: See TracChangeset for help on using the changeset viewer.