Changeset d19962c in sasmodels for sasmodels/core.py


Ignore:
Timestamp:
Mar 27, 2016 4:57:03 PM (8 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:
5c028e3
Parents:
c499331
Message:

working vector parameter example using dll engine

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/core.py

    rc499331 rd19962c  
    2424    HAVE_OPENCL = False 
    2525 
    26 __all__ = [ 
    27     "list_models", "load_model_info", "precompile_dll", 
    28     "build_model", "call_kernel", "call_ER_VR", 
    29 ] 
    30  
    3126try: 
    3227    # Python 3.5 and up 
     
    4439        return module 
    4540 
     41 
     42 
     43__all__ = [ 
     44    "list_models", "load_model_info", "precompile_dll", 
     45    "build_model", "call_kernel", "call_ER_VR", 
     46] 
     47 
    4648def list_models(): 
    4749    """ 
     
    6567    Load model info and build model. 
    6668    """ 
    67     if model_name.endswith('.py'): 
    68         model_info = load_model_info_from_path(model_name) 
    69     else: 
    70         model_info = load_model_info(model_name) 
    71     return build_model(model_info, **kw) 
    72  
    73 def load_model_info_from_path(path): 
    74     # Pull off the last .ext if it exists; there may be others 
    75     name = basename(splitext(path)[0]) 
    76  
    77     # Not cleaning name since don't need to be able to reload this 
    78     # model later 
    79     # Should probably turf the model from sys.modules after we are done... 
    80  
    81     # Placing the model in the 'sasmodels.custom' name space, even 
    82     # though it doesn't actually exist.  imp.load_source doesn't seem 
    83     # to care. 
    84     import sasmodels.custom 
    85     kernel_module = load_module('sasmodels.custom.'+name, path) 
    86  
    87     # Now that we have the module, we can load it as usual 
    88     model_info = generate.make_model_info(kernel_module) 
    89     return model_info 
     69    return build_model(load_model_info(model_name), **kw) 
    9070 
    9171def load_model_info(model_name): 
     
    11090        return product.make_product_info(P_info, Q_info) 
    11191 
     92    return make_model_by_name(model_name) 
     93 
     94 
     95def make_model_by_name(model_name): 
     96    if model_name.endswith('.py'): 
     97        path = model_name 
     98        # Pull off the last .ext if it exists; there may be others 
     99        name = basename(splitext(path)[0]) 
     100        # Placing the model in the 'sasmodels.custom' name space. 
     101        from sasmodels import custom 
     102        kernel_module = load_module('sasmodels.custom.'+name, path) 
     103    else: 
     104        from sasmodels import models 
     105        __import__('sasmodels.models.'+model_name) 
     106        kernel_module = getattr(models, model_name, None) 
    112107    #import sys; print "\n".join(sys.path) 
    113     __import__('sasmodels.models.'+model_name) 
    114     kernel_module = getattr(models, model_name, None) 
    115108    return generate.make_model_info(kernel_module) 
    116109 
     
    196189    """ 
    197190    value = values.get(parameter.name, parameter.default) 
    198     if parameter.type not in ('volume', 'orientation'): 
    199         return [value], [] 
    200     relative = parameter.type == 'volume' 
     191    relative = parameter.relative_pd 
    201192    limits = parameter.limits 
    202193    disperser = values.get(parameter.name+'_pd_type', 'gaussian') 
     
    204195    width = values.get(parameter.name+'_pd', 0.0) 
    205196    nsigma = values.get(parameter.name+'_pd_nsigma', 3.0) 
     197    if npts == 0 or width == 0: 
     198        return [value], [] 
    206199    value, weight = weights.get_weights( 
    207200        disperser, npts, width, nsigma, value, limits, relative) 
     
    235228    *mono* is True if polydispersity should be set to none on all parameters. 
    236229    """ 
     230    parameters = kernel.info['parameters'] 
    237231    if mono: 
    238232        active = lambda name: False 
    239233    elif kernel.dim == '1d': 
    240         pars_1d = set(p.name for p in kernel.info['parameters'].type['1d']) 
    241         active = lambda name: name in pars_1d 
     234        active = lambda name: name in parameters.pd_1d 
    242235    elif kernel.dim == '2d': 
    243         pars_2d = set(p.name for p in kernel.info['parameters'].type['2d']) 
    244         active = lambda name: name in pars_2d 
     236        active = lambda name: name in parameters.pd_2d 
    245237    else: 
    246238        active = lambda name: True 
    247239 
    248     vw_pairs = [(get_weights(p, pars) if active(p.name) else ([p.default], [])) 
    249                 for p in kernel.info['parameters']] 
     240    vw_pairs = [(get_weights(p, pars) if active(p.name) 
     241                 else ([pars.get(p.name, p.default)], [])) 
     242                for p in parameters.call_parameters] 
    250243    values, weights = zip(*vw_pairs) 
    251244 
Note: See TracChangeset for help on using the changeset viewer.