Changeset 765eb0e in sasmodels for sasmodels/product.py


Ignore:
Timestamp:
Sep 11, 2017 5:42:31 PM (7 years ago)
Author:
Paul Kienzle <pkienzle@…>
Branches:
master, core_shell_microgels, costrafo411, magnetic_model, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
Children:
2ad5d30
Parents:
ce8c388
Message:

allow random generation of parameters for product and mixture models

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/product.py

    r8f04da4 r765eb0e  
    6868    translate_name = dict((old.id, new.id) for old, new 
    6969                          in zip(s_pars.kernel_parameters[1:], s_list)) 
    70     demo = {} 
    71     demo.update(p_info.demo.items()) 
    72     demo.update((translate_name[k], v) for k, v in s_info.demo.items() 
    73                 if k not in ("background", "scale") and not k.startswith(ER_ID)) 
    7470    combined_pars = p_pars.kernel_parameters + s_list 
    7571    parameters = ParameterTable(combined_pars) 
    7672    parameters.max_pd = p_pars.max_pd + s_pars.max_pd 
     73    def random(): 
     74        combined_pars = p_info.random() 
     75        s_names = set(par.id for par in s_pars.kernel_parameters[1:]) 
     76        s = s_info.random() 
     77        combined_pars.update((translate_name[k], v) 
     78                    for k, v in s_info.random().items() 
     79                    if k in s_names) 
     80        return combined_pars 
    7781 
    7882    model_info = ModelInfo() 
     
    8589    model_info.category = "custom" 
    8690    model_info.parameters = parameters 
     91    model_info.random = random 
    8792    #model_info.single = p_info.single and s_info.single 
    8893    model_info.structure_factor = False 
     
    95100    # TODO: delegate random to p_info, s_info 
    96101    #model_info.random = lambda: {} 
    97     model_info.demo = demo 
    98  
    99     ## Show the parameter table with the demo values 
     102 
     103    ## Show the parameter table 
    100104    #from .compare import get_pars, parlist 
    101105    #print("==== %s ====="%model_info.name) 
    102     #values = get_pars(model_info, use_demo=True) 
     106    #values = get_pars(model_info) 
    103107    #print(parlist(model_info, values, is2d=True)) 
    104108    return model_info 
     
    126130        self.P = P 
    127131        self.S = S 
     132        self.dtype = P.dtype 
    128133 
    129134    def make_kernel(self, q_vectors): 
Note: See TracChangeset for help on using the changeset viewer.