Changeset 0880966 in sasmodels for sasmodels/core.py


Ignore:
Timestamp:
Mar 21, 2016 12:34:51 PM (8 years ago)
Author:
wojciech
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:
839283a
Parents:
9f4409a
Message:

Mono and poly reading fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/core.py

    r39cc3be r0880966  
    183183    value = values.get(parameter.name, parameter.default) 
    184184    if parameter.type not in ('volume', 'orientation'): 
    185         return [value], [] 
     185        return np.array([value]), np.array([1.0]) 
    186186    relative = parameter.type == 'volume' 
    187187    limits = parameter.limits 
     
    208208    return value, weight 
    209209 
    210 def call_kernel(kernel, values, cutoff=0, mono=False): 
     210def call_kernel(kernel, pars, cutoff=0, mono=False): 
    211211    """ 
    212212    Call *kernel* returned from :func:`make_kernel` with parameters *pars*. 
     
    221221    *mono* is True if polydispersity should be set to none on all parameters. 
    222222    """ 
    223     if mono or True: 
    224         pars = np.array([values.get(p.name, p.default) 
    225                          for p in kernel.info['parameters']], 
    226                         dtype=kernel.dtype) 
    227         weights = np.array([1.0], dtype=kernel.dtype) 
     223    if mono: 
     224        values = [pars.get(p.name, p.default) for p in kernel.info['parameters']] 
     225        weights = [1.0]*len(values) 
     226    else: 
     227        wv_pairs = [get_weights(p, pars) for p in kernel.info['parameters']] 
     228        weights, values = [v for v in zip(*wv_pairs)] 
     229 
     230    #TODO: This is what we thought to do if max([len(w) for w in weights]) > 1: 
     231    if max([w for w in weights]) > 1: 
     232        details = generate.poly_details(kernel.info, weights) 
     233    else: 
    228234        details = kernel.info['mono_details'] 
    229         return kernel(details,  weights, pars, cutoff) 
    230     else: 
    231         pairs = [get_weights(p, values) for p in kernel.info['parameters']] 
    232         weights, pars = [v for v in zip(*pairs)] 
    233         details = generate.poly_details(kernel.info, weights, pars) 
    234         weights, pars = [np.hstack(v) for v in (weights, pars)] 
    235         return kernel(details, weights, pars, cutoff) 
     235 
     236    weights, values = [np.hstack(v) for v in (weights, values)] 
     237 
     238    weights = weights.astype(dtype=kernel.dtype) 
     239    values = values.astype(dtype=kernel.dtype) 
     240 
     241    return kernel(details, weights, values, cutoff) 
    236242 
    237243def call_ER_VR(model_info, vol_pars): 
Note: See TracChangeset for help on using the changeset viewer.