Changeset 65ceb7d in sasmodels for sasmodels/product.py


Ignore:
Timestamp:
Sep 18, 2017 12:53:23 PM (7 years ago)
Author:
Paul Kienzle <pkienzle@…>
Branches:
costrafo411
Children:
3a45c2c
Parents:
2f9f1ec (diff), 058460c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into costrafo411

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/product.py

    rf88e248 r058460c  
    4545    # structure factor calculator.  Structure factors should not 
    4646    # have any magnetic parameters 
     47    if not len(s_info.parameters.kernel_parameters) >= 2: 
     48        raise TypeError("S needs {} and {} as its first parameters".format(ER_ID, VF_ID)) 
    4749    if not s_info.parameters.kernel_parameters[0].id == ER_ID: 
    48         raise TypeError("S needs %s as first parameter"%ER_ID) 
     50        raise TypeError("S needs {} as first parameter".format(ER_ID)) 
    4951    if not s_info.parameters.kernel_parameters[1].id == VF_ID: 
    50         raise TypeError("S needs %s as second parameter"%VF_ID) 
     52        raise TypeError("S needs {} as second parameter".format(VF_ID)) 
    5153    if not s_info.parameters.magnetism_index == []: 
    5254        raise TypeError("S should not have SLD parameters") 
     
    6870    translate_name = dict((old.id, new.id) for old, new 
    6971                          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)) 
    7472    combined_pars = p_pars.kernel_parameters + s_list 
    7573    parameters = ParameterTable(combined_pars) 
    7674    parameters.max_pd = p_pars.max_pd + s_pars.max_pd 
     75    def random(): 
     76        combined_pars = p_info.random() 
     77        s_names = set(par.id for par in s_pars.kernel_parameters[1:]) 
     78        s = s_info.random() 
     79        combined_pars.update((translate_name[k], v) 
     80                    for k, v in s_info.random().items() 
     81                    if k in s_names) 
     82        return combined_pars 
    7783 
    7884    model_info = ModelInfo() 
    79     model_info.id = '*'.join((p_id, s_id)) 
    80     model_info.name = '*'.join((p_name, s_name)) 
     85    model_info.id = '@'.join((p_id, s_id)) 
     86    model_info.name = '@'.join((p_name, s_name)) 
    8187    model_info.filename = None 
    8288    model_info.title = 'Product of %s and %s'%(p_name, s_name) 
     
    8591    model_info.category = "custom" 
    8692    model_info.parameters = parameters 
     93    model_info.random = random 
    8794    #model_info.single = p_info.single and s_info.single 
    8895    model_info.structure_factor = False 
     
    93100    # Remember the component info blocks so we can build the model 
    94101    model_info.composition = ('product', [p_info, s_info]) 
    95     model_info.demo = demo 
    96  
    97     ## Show the parameter table with the demo values 
     102    # TODO: delegate random to p_info, s_info 
     103    #model_info.random = lambda: {} 
     104 
     105    ## Show the parameter table 
    98106    #from .compare import get_pars, parlist 
    99107    #print("==== %s ====="%model_info.name) 
    100     #values = get_pars(model_info, use_demo=True) 
     108    #values = get_pars(model_info) 
    101109    #print(parlist(model_info, values, is2d=True)) 
    102110    return model_info 
     
    124132        self.P = P 
    125133        self.S = S 
     134        self.dtype = P.dtype 
    126135 
    127136    def make_kernel(self, q_vectors): 
Note: See TracChangeset for help on using the changeset viewer.