Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/qtgui/Perspectives/Fitting/FittingUtilities.py

    rf3cc979 r70f4458  
    88from sas.qtgui.Plotting.PlotterData import Data1D 
    99from sas.qtgui.Plotting.PlotterData import Data2D 
    10  
    11 from sas.qtgui.Perspectives.Fitting.AssociatedComboBox import AssociatedComboBox 
    1210 
    1311model_header_captions = ['Parameter', 'Value', 'Min', 'Max', 'Units'] 
     
    6361    return (param_name, param_length) 
    6462 
    65 def createFixedChoiceComboBox(param, item_row): 
    66     """ 
    67     Determines whether param is a fixed-choice parameter, modifies items in item_row appropriately and returns a combo 
    68     box containing the fixed choices. Returns None if param is not fixed-choice. 
    69      
    70     item_row is a list of QStandardItem objects for insertion into the parameter table.  
    71     """ 
    72  
    73     # Determine whether this is a fixed-choice parameter. There are lots of conditionals, simply because the 
    74     # implementation is not yet concrete; there are several possible indicators that the parameter is fixed-choice. 
    75     # TODO: (when the sasmodels implementation is concrete, clean this up) 
    76     choices = None 
    77     if isinstance(param.choices, (list, tuple)) and len(param.choices) > 0: 
    78         # The choices property is concrete in sasmodels, probably will use this 
    79         choices = param.choices 
    80     elif isinstance(param.units, (list, tuple)): 
    81         choices = [str(x) for x in param.units] 
    82  
    83     cbox = None 
    84     if choices is not None: 
    85         # Use combo box for input, if it is fixed-choice 
    86         cbox = AssociatedComboBox(item_row[1], idx_as_value=True) 
    87         cbox.addItems(choices) 
    88         item_row[2].setEditable(False) 
    89         item_row[3].setEditable(False) 
    90  
    91     return cbox 
    92  
    93 def addParametersToModel(parameters, kernel_module, is2D, model=None, view=None): 
    94     """ 
    95     Update local ModelModel with sasmodel parameters. 
    96     Actually appends to model, if model and view params are not None. 
    97     Always returns list of lists of QStandardItems. 
     63def addParametersToModel(parameters, kernel_module, is2D): 
     64    """ 
     65    Update local ModelModel with sasmodel parameters 
    9866    """ 
    9967    multishell_parameters = getIterParams(parameters) 
     
    10472    else: 
    10573        params = parameters.iq_parameters 
    106  
    107     rows = [] 
     74    item = [] 
    10875    for param in params: 
    10976        # don't include shell parameters 
    11077        if param.name == multishell_param_name: 
    11178            continue 
    112  
    11379        # Modify parameter name from <param>[n] to <param>1 
    11480        item_name = param.name 
    11581        if param in multishell_parameters: 
    11682            continue 
     83        #    item_name = replaceShellName(param.name, 1) 
    11784 
    11885        item1 = QtGui.QStandardItem(item_name) 
    11986        item1.setCheckable(True) 
    12087        item1.setEditable(False) 
    121  
     88        # item_err = QtGui.QStandardItem() 
    12289        # check for polydisp params 
    12390        if param.polydisperse: 
     
    12693            item1_1 = QtGui.QStandardItem("Distribution") 
    12794            item1_1.setEditable(False) 
    128  
    12995            # Find param in volume_params 
    130             poly_pars = parameters.form_volume_parameters 
    131             if is2D: 
    132                 poly_pars += parameters.orientation_parameters 
    133             for p in poly_pars: 
     96            for p in parameters.form_volume_parameters: 
    13497                if p.name != param.name: 
    13598                    continue 
    13699                width = kernel_module.getParam(p.name+'.width') 
    137100                ptype = kernel_module.getParam(p.name+'.type') 
     101 
    138102                item1_2 = QtGui.QStandardItem(str(width)) 
    139103                item1_2.setEditable(False) 
     
    146110                poly_item.appendRow([item1_1, item1_2, item1_3, item1_4, item1_5]) 
    147111                break 
    148  
    149112            # Add the polydisp item as a child 
    150113            item1.appendRow([poly_item]) 
    151  
    152114        # Param values 
    153115        item2 = QtGui.QStandardItem(str(param.default)) 
     116        # TODO: the error column. 
     117        # Either add a proxy model or a custom view delegate 
     118        #item_err = QtGui.QStandardItem() 
    154119        item3 = QtGui.QStandardItem(str(param.limits[0])) 
    155120        item4 = QtGui.QStandardItem(str(param.limits[1])) 
    156         item5 = QtGui.QStandardItem(str(param.units)) 
     121        item5 = QtGui.QStandardItem(param.units) 
    157122        item5.setEditable(False) 
    158  
    159         # Check if fixed-choice (returns combobox, if so, also makes some items uneditable) 
    160         row = [item1, item2, item3, item4, item5] 
    161         cbox = createFixedChoiceComboBox(param, row) 
    162  
    163         # Append to the model and use the combobox, if required 
    164         if None not in (model, view): 
    165             model.appendRow(row) 
    166             if cbox: 
    167                 view.setIndexWidget(item2.index(), cbox) 
    168         rows.append(row) 
    169  
    170     return rows 
    171  
    172 def addSimpleParametersToModel(parameters, is2D, parameters_original=None, model=None, view=None, row_num=None): 
    173     """ 
    174     Update local ModelModel with sasmodel parameters (non-dispersed, non-magnetic) 
    175     Actually appends to model, if model and view params are not None. 
    176     Always returns list of lists of QStandardItems. 
    177  
    178     parameters_original: list of parameters before any tagging on their IDs, e.g. for product model (so that those are 
    179     the display names; see below) 
     123        item.append([item1, item2, item3, item4, item5]) 
     124    return item 
     125 
     126def addSimpleParametersToModel(parameters, is2D, parameters_original=None): 
     127    """ 
     128    Update local ModelModel with sasmodel parameters 
     129    parameters_original: list of parameters before any tagging on their IDs, e.g. for product model 
     130    (so that those are the display names; see below) 
    180131    """ 
    181132    if is2D: 
     
    196147        params_orig = params 
    197148 
    198     rows = [] 
     149    item = [] 
    199150    for param, param_orig in zip(params, params_orig): 
    200151        # Create the top level, checkable item 
     
    204155        item1.setCheckable(True) 
    205156        item1.setEditable(False) 
    206  
    207157        # Param values 
    208158        # TODO: add delegate for validation of cells 
    209159        item2 = QtGui.QStandardItem(str(param.default)) 
    210         item3 = QtGui.QStandardItem(str(param.limits[0])) 
    211         item4 = QtGui.QStandardItem(str(param.limits[1])) 
    212         item5 = QtGui.QStandardItem(str(param.units)) 
    213         item5.setEditable(False) 
    214  
    215         # Check if fixed-choice (returns combobox, if so, also makes some items uneditable) 
    216         row = [item1, item2, item3, item4, item5] 
    217         cbox = createFixedChoiceComboBox(param, row) 
    218  
    219         # Append to the model and use the combobox, if required 
    220         if None not in (model, view): 
    221             if row_num is None: 
    222                 model.appendRow(row) 
    223             else: 
    224                 model.insertRow(row_num, row) 
    225                 row_num += 1 
    226  
    227             if cbox: 
    228                 view.setIndexWidget(item2.index(), cbox) 
    229  
    230         rows.append(row) 
    231  
    232     return rows 
     160        item4 = QtGui.QStandardItem(str(param.limits[0])) 
     161        item5 = QtGui.QStandardItem(str(param.limits[1])) 
     162        item6 = QtGui.QStandardItem(str(param.units)) 
     163        item6.setEditable(False) 
     164        item.append([item1, item2, item4, item5, item6]) 
     165    return item 
    233166 
    234167def markParameterDisabled(model, row): 
     
    326259    model.header_tooltips = copy.copy(poly_header_error_tooltips) 
    327260 
    328 def addShellsToModel(parameters, model, index, row_num=None, view=None): 
     261def addShellsToModel(parameters, model, index, row_num=None): 
    329262    """ 
    330263    Find out multishell parameters and update the model with the requested number of them. 
    331264    Inserts them after the row at row_num, if not None; otherwise, appends to end. 
    332     If view param is not None, supports fixed-choice params. 
    333265    Returns a list of lists of QStandardItem objects. 
    334266    """ 
     
    353285                    item1_3 = QtGui.QStandardItem(str(p.limits[0])) 
    354286                    item1_4 = QtGui.QStandardItem(str(p.limits[1])) 
    355                     item1_5 = QtGui.QStandardItem(str(p.units)) 
     287                    item1_5 = QtGui.QStandardItem(p.units) 
    356288                    poly_item.appendRow([item1_1, item1_2, item1_3, item1_4, item1_5]) 
    357289                    break 
     
    361293            item3 = QtGui.QStandardItem(str(par.limits[0])) 
    362294            item4 = QtGui.QStandardItem(str(par.limits[1])) 
    363             item5 = QtGui.QStandardItem(str(par.units)) 
    364             item5.setEditable(False) 
    365  
    366             # Check if fixed-choice (returns combobox, if so, also makes some items uneditable) 
     295            item5 = QtGui.QStandardItem(par.units) 
    367296            row = [item1, item2, item3, item4, item5] 
    368             cbox = createFixedChoiceComboBox(par, row) 
    369  
    370             # Always add to the model 
     297            rows.append(row) 
     298 
    371299            if row_num is None: 
    372300                model.appendRow(row) 
     
    374302                model.insertRow(row_num, row) 
    375303                row_num += 1 
    376  
    377             # Apply combobox if required 
    378             if None not in (view, cbox): 
    379                 view.setIndexWidget(item2.index(), cbox) 
    380  
    381             rows.append(row) 
    382304 
    383305    return rows 
     
    552474 
    553475    theory_name = str(current_data.name.split()[0]) 
    554     res_name = reference_data.filename if reference_data.filename else reference_data.name 
    555     residuals.name = "Residuals for " + str(theory_name) + "[" + res_name + "]" 
     476    residuals.name = "Residuals for " + str(theory_name) + "[" + \ 
     477                    str(reference_data.filename) + "]" 
    556478    residuals.title = residuals.name 
    557479    residuals.ytransform = 'y' 
     
    579501    """ 
    580502    weight = None 
    581     if data is None: 
    582         return [] 
    583503    if is2d: 
    584         if not hasattr(data, 'err_data'): 
    585             return [] 
    586504        dy_data = data.err_data 
    587505        data = data.data 
    588506    else: 
    589         if not hasattr(data, 'dy'): 
    590             return [] 
    591507        dy_data = data.dy 
    592508        data = data.y 
Note: See TracChangeset for help on using the changeset viewer.