Changeset 60eab2a in sasmodels for sasmodels/modelinfo.py
- Timestamp:
- Mar 24, 2016 8:12:07 AM (8 years ago)
- 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:
- 380e8c9
- Parents:
- e69b36f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/modelinfo.py
r69aa451 r60eab2a 30 30 processed.append(parse_parameter(*p)) 31 31 partable = ParameterTable(processed) 32 set_vector_length_from_reference(partable)33 32 return partable 34 35 def set_vector_length_from_reference(partable):36 # Sort out the length of the vector parameters such as thickness[n]37 for p in partable:38 if p.length_control:39 ref = partable[p.length_control]40 low, high = ref.limits41 if int(low) != low or int(high) != high or low<0 or high>20:42 raise ValueError("expected limits on %s to be within [0, 20]"%ref.name)43 p.length = low44 33 45 34 def parse_parameter(name, units='', default=None, … … 172 161 def __init__(self, name, units='', default=None, limits=(-np.inf, np.inf), 173 162 type='', description=''): 174 self.id = name 163 self.id = name.split('[')[0].strip() 175 164 self.name = name 176 165 self.default = default … … 235 224 self._name_table= dict((p.name, p) for p in parameters) 236 225 self._categorize_parameters() 226 227 self._set_vector_lengths() 228 self._set_defaults() 229 230 def _set_vector_lengths(self): 231 # Sort out the length of the vector parameters such as thickness[n] 232 for p in self.parameters: 233 if p.length_control: 234 ref = self._name_table[p.length_control] 235 low, high = ref.limits 236 if int(low) != low or int(high) != high or low<0 or high>20: 237 raise ValueError("expected limits on %s to be within [0, 20]"%ref.name) 238 p.length = low 239 240 def _set_defaults(self): 241 # Construct default values, including vector defaults 242 defaults = {} 243 for p in self.parameters: 244 if p.length == 1: 245 defaults[p.id] = p.default 246 else: 247 for k in range(p.length): 248 defaults["%s[%d]"%(p.id, k)] = p.default 249 self.defaults = defaults 237 250 238 251 def __getitem__(self, k): … … 289 302 par_type['1d'] = [p for p in pars if p.type not in ('orientation', 'magnetic')] 290 303 par_type['2d'] = [p for p in pars if p.type != 'magnetic'] 291 par_type['magnetic'] = [p for p in pars]292 304 par_type['pd'] = [p for p in pars if p.polydisperse] 293 305 par_type['pd_relative'] = [p for p in pars if p.relative_pd] … … 304 316 305 317 @property 306 def defaults(self):307 return dict((p.name, p.default) for p in self.parameters)308 309 @property310 318 def num_pd(self): 311 319 """ … … 313 321 shape dimensions and orientational distributions). 314 322 """ 315 return len(self.type['pd'])323 return sum(p.length for p in self.type['pd']) 316 324 317 325 @property
Note: See TracChangeset
for help on using the changeset viewer.