Changeset 04045f4 in sasmodels for sasmodels/sasview_model.py


Ignore:
Timestamp:
Apr 12, 2016 8:02:40 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:
793beb3
Parents:
fa5fd8d
Message:

support for rpa style variant models

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/sasview_model.py

    rfa5fd8d r04045f4  
    124124    #self.is_multifunc = False 
    125125    non_fittable = []  # type: List[str] 
     126    xlabel = model_info.profile_axes[0] if model_info.profile is not None else "" 
     127    variants = MultiplicityInfo(0, "", [], xlabel) 
    126128    for p in parameters.kernel_parameters: 
    127         if p.is_control: 
     129        if p.name == model_info.control: 
    128130            non_fittable.append(p.name) 
    129             profile_axes = model_info.profile_axes 
    130             multiplicity_info = MultiplicityInfo( 
    131                 p.limits[1], p.name, p.choices, profile_axes[0] 
     131            variants = MultiplicityInfo( 
     132                len(p.choices), p.name, p.choices, xlabel 
    132133            ) 
    133134            break 
    134     else: 
    135         multiplicity_info = MultiplicityInfo(0, "", [], "") 
     135        elif p.is_control: 
     136            non_fittable.append(p.name) 
     137            variants = MultiplicityInfo( 
     138                int(p.limits[1]), p.name, p.choices, xlabel 
     139            ) 
     140            break 
    136141 
    137142    attrs['is_structure_factor'] = model_info.structure_factor 
    138143    attrs['is_form_factor'] = model_info.ER is not None 
    139     attrs['is_multiplicity_model'] = multiplicity_info[0] > 1 
    140     attrs['multiplicity_info'] = multiplicity_info 
    141  
     144    attrs['is_multiplicity_model'] = variants[0] > 1 
     145    attrs['multiplicity_info'] = variants 
    142146 
    143147    orientation_params = [] 
     
    228232        ## _persistency_dict is used by sas.perspectives.fitting.basepage 
    229233        ## to store dispersity reference. 
    230         ## TODO: _persistency_dict to persistency_dict throughout sasview 
    231234        self._persistency_dict = {} 
    232235 
     236        # TODO: _persistency_dict to persistency_dict throughout sasview 
     237        # TODO: refactor multiplicity to encompass variants 
     238        # TODO: dispersion should be a class 
    233239        # TODO: refactor multiplicity info 
    234240        # TODO: separate profile view from multiplicity 
     
    240246        # and lines to plot. 
    241247 
    242         # TODO: refactor multiplicity to encompass variants 
    243         # TODO: dispersion should be a class 
     248        # Get the list of hidden parameters given the mulitplicity 
     249        # Don't include multiplicity in the list of parameters 
    244250        self.multiplicity = multiplicity 
     251        if multiplicity is not None: 
     252            hidden = self._model_info.get_hidden_parameters(multiplicity) 
     253            hidden |= set([self.multiplicity_info.control]) 
     254        else: 
     255            hidden = set() 
     256 
    245257        self.params = collections.OrderedDict() 
    246258        self.dispersion = {} 
    247259        self.details = {} 
    248         config = ({self.multiplicity_info.control: multiplicity} 
    249                   if multiplicity is not None else {}) 
    250         for p in self._model_info.parameters.user_parameters(config): 
    251             # Don't include multiplicity in the list of parameters 
    252             if p.name == self.multiplicity_info.control: 
     260        for p in self._model_info.parameters.user_parameters(): 
     261            if p.name in hidden: 
    253262                continue 
    254263            self.params[p.name] = p.default 
     
    601610    return cylinder.evalDistribution([0.1,0.1]) 
    602611 
     612def test_rpa(): 
     613    # type: () -> float 
     614    """ 
     615    Test that a sasview model (cylinder) can be run. 
     616    """ 
     617    RPA = _make_standard_model('rpa') 
     618    rpa = RPA(3) 
     619    return rpa.evalDistribution([0.1,0.1]) 
     620 
    603621 
    604622def test_model_list(): 
Note: See TracChangeset for help on using the changeset viewer.