Changeset 6d6508e in sasmodels for sasmodels/sasview_model.py


Ignore:
Timestamp:
Apr 7, 2016 6:57:33 PM (8 years ago)
Author:
Paul Kienzle <pkienzle@…>
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:
d2fc9a4
Parents:
3707eee
Message:

refactor model_info from dictionary to class

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/sasview_model.py

    ree8f734 r6d6508e  
    2727from . import generate 
    2828from . import weights 
     29from . import details 
     30from . import modelinfo 
    2931 
    3032def load_standard_models(): 
     
    4951    """ 
    5052    kernel_module = custom.load_custom_kernel_module(path) 
    51     model_info = generate.make_model_info(kernel_module) 
     53    model_info = modelinfo.make_model_info(kernel_module) 
    5254    return _make_model_from_info(model_info) 
    5355 
     
    6264    """ 
    6365    kernel_module = generate.load_kernel_module(name) 
    64     model_info = generate.make_model_info(kernel_module) 
     66    model_info = modelinfo.make_model_info(kernel_module) 
    6567    return _make_model_from_info(model_info) 
    6668 
     
    7375        SasviewModel.__init__(self) 
    7476    attrs = dict(__init__=__init__, _model_info=model_info) 
    75     ConstructedModel = type(model_info['name'], (SasviewModel,), attrs) 
     77    ConstructedModel = type(model_info.name, (SasviewModel,), attrs) 
    7678    return ConstructedModel 
    7779 
     
    8587        self._model = None 
    8688        model_info = self._model_info 
    87         parameters = model_info['parameters'] 
    88  
    89         self.name = model_info['name'] 
    90         self.description = model_info['description'] 
     89        parameters = model_info.parameters 
     90 
     91        self.name = model_info.name 
     92        self.description = model_info.description 
    9193        self.category = None 
    9294        #self.is_multifunc = False 
    9395        for p in parameters.kernel_parameters: 
    9496            if p.is_control: 
    95                 profile_axes = model_info['profile_axes'] 
     97                profile_axes = model_info.profile_axes 
    9698                self.multiplicity_info = [ 
    9799                    p.limits[1], p.name, p.choices, profile_axes[0] 
     
    132134 
    133135        ## independent parameter name and unit [string] 
    134         self.input_name = model_info.get("input_name", "Q") 
    135         self.input_unit = model_info.get("input_unit", "A^{-1}") 
    136         self.output_name = model_info.get("output_name", "Intensity") 
    137         self.output_unit = model_info.get("output_unit", "cm^{-1}") 
     136        self.input_name = "Q", #model_info.get("input_name", "Q") 
     137        self.input_unit = "A^{-1}" #model_info.get("input_unit", "A^{-1}") 
     138        self.output_name = "Intensity" #model_info.get("output_name", "Intensity") 
     139        self.output_unit = "cm^{-1}" #model_info.get("output_unit", "cm^{-1}") 
    138140 
    139141        ## _persistency_dict is used by sas.perspectives.fitting.basepage 
     
    248250        # TODO: fix test so that parameter order doesn't matter 
    249251        ret = ['%s.%s' % (p.name.lower(), ext) 
    250                for p in self._model_info['parameters'].user_parameters() 
     252               for p in self._model_info.parameters.user_parameters() 
    251253               for ext in ('npts', 'nsigmas', 'width') 
    252254               if p.polydisperse] 
     
    323325            # Check whether we have a list of ndarrays [qx,qy] 
    324326            qx, qy = qdist 
    325             if not self._model_info['parameters'].has_2d: 
     327            if not self._model_info.parameters.has_2d: 
    326328                return self.calculate_Iq(np.sqrt(qx ** 2 + qy ** 2)) 
    327329            else: 
     
    350352        kernel = self._model.make_kernel(q_vectors) 
    351353        pairs = [self._get_weights(p) 
    352                  for p in self._model_info['parameters'].call_parameters] 
    353         details, weights, values = core.build_details(kernel, pairs) 
    354         result = kernel(details, weights, values, cutoff=self.cutoff) 
     354                 for p in self._model_info.parameters.call_parameters] 
     355        call_details, weights, values = details.build_details(kernel, pairs) 
     356        result = kernel(call_details, weights, values, cutoff=self.cutoff) 
    355357        kernel.q_input.release() 
    356358        kernel.release() 
     
    363365        :return: the value of the effective radius 
    364366        """ 
    365         ER = self._model_info.get('ER', None) 
    366         if ER is None: 
     367        if model_info.ER is None: 
    367368            return 1.0 
    368369        else: 
    369370            values, weights = self._dispersion_mesh() 
    370             fv = ER(*values) 
     371            fv = model_info.ER(*values) 
    371372            #print(values[0].shape, weights.shape, fv.shape) 
    372373            return np.sum(weights * fv) / np.sum(weights) 
     
    378379        :return: the value of the volf ratio 
    379380        """ 
    380         VR = self._model_info.get('VR', None) 
    381         if VR is None: 
     381        if model_info.VR is None: 
    382382            return 1.0 
    383383        else: 
    384384            values, weights = self._dispersion_mesh() 
    385             whole, part = VR(*values) 
     385            whole, part = model_info.VR(*values) 
    386386            return np.sum(weights * part) / np.sum(weights * whole) 
    387387 
     
    422422        parameter set in the vector. 
    423423        """ 
    424         pars = self._model_info['partype']['volume'] 
    425         return core.dispersion_mesh([self._get_weights(p) for p in pars]) 
     424        pars = self._model_info.partype['volume'] 
     425        return details.dispersion_mesh([self._get_weights(p) for p in pars]) 
    426426 
    427427    def _get_weights(self, par): 
Note: See TracChangeset for help on using the changeset viewer.