Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/sasgui/perspectives/fitting/pagestate.py

    rc8e1996 r0b1d7d3  
    2525from lxml import etree 
    2626 
     27from sasmodels import convert 
    2728import sasmodels.weights 
    2829 
     
    355356            obj.saved_states[copy_name] = copy_state 
    356357        return obj 
     358 
     359    def _is_sasmodels(self): 
     360        """ 
     361        A check to see if the loaded save state was saved in SasView v4_0+ 
     362        :return: None 
     363        """ 
     364        newname = convert._conversion_target(self.formfactorcombobox) 
     365        if newname == None: 
     366            return True 
     367        else: 
     368            return False 
     369 
     370    def _convert_to_sasmodels(self): 
     371        """ 
     372        Convert parameters to a form usable by sasmodels converter 
     373 
     374        :return: None 
     375        """ 
     376        # Create conversion dictionary to send to sasmodels 
     377        p = dict() 
     378        for fittable, name, value, _, uncert, lower, upper, units in \ 
     379                self.parameters: 
     380            if not value: 
     381                value = numpy.nan 
     382            if not uncert or uncert[1] == '': 
     383                uncert[0] = False 
     384                uncert[1] = numpy.nan 
     385            if not upper or upper[1] == '': 
     386                upper[0] = False 
     387                upper[1] = numpy.nan 
     388            if not lower or lower[1] == '': 
     389                lower[0] = False 
     390                lower[1] = numpy.nan 
     391            p[name] = float(value) 
     392            p[name + ".fittable"] = bool(fittable) 
     393            p[name + ".std"] = float(uncert[1]) 
     394            p[name + ".upper"] = float(upper[1]) 
     395            p[name + ".lower"] = float(lower[1]) 
     396            p[name + ".units"] = units 
     397 
     398        structurefactor, params = \ 
     399            convert.convert_model(self.structurecombobox, p) 
     400        formfactor, params = \ 
     401            convert.convert_model(self.formfactorcombobox, params) 
     402        # if len(self.str_parameters) > 0: 
     403        #     formfactor, str_params = \ 
     404        #         convert.convert_model(formfactor, self.str_parameters) 
     405 
     406        # Only convert if old != new, otherwise all the same 
     407        if formfactor != self.formfactorcombobox or \ 
     408                        structurefactor != self.structurecombobox: 
     409            self.formfactorcombobox = formfactor 
     410            self.structurecombobox = structurefactor 
     411            self.parameters = [] 
     412            for name, info in params.iteritems(): 
     413                if ".fittable" in name or ".std" in name or ".upper" in name or\ 
     414                        ".lower" in name or ".units" in name: 
     415                    pass 
     416                else: 
     417                    fittable = params.get(name + ".fittable", True) 
     418                    std = params.get(name + ".std", '0.0') 
     419                    upper = params.get(name + ".upper", 'inf') 
     420                    lower = params.get(name + ".lower", '-inf') 
     421                    units = params.get(name + ".units") 
     422                    if std is not None and std is not numpy.nan: 
     423                        std = [True, str(std)] 
     424                    else: 
     425                        std = [False, ''] 
     426                    if lower is not None and lower is not numpy.nan: 
     427                        lower = [True, str(lower)] 
     428                    else: 
     429                        lower = [True, '-inf'] 
     430                    if upper is not None and upper is not numpy.nan: 
     431                        upper = [True, str(upper)] 
     432                    else: 
     433                        upper = [True, 'inf'] 
     434                    param_list = [bool(fittable), str(name), str(info), 
     435                                  "+/-", std, lower, upper, str(units)] 
     436                    self.parameters.append(param_list) 
     437 
    357438 
    358439    def _repr_helper(self, list, rep): 
Note: See TracChangeset for help on using the changeset viewer.