- Timestamp:
- Jun 13, 2014 7:19:28 PM (10 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 1790664
- Parents:
- 249a7c6
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sans/fit/BumpsFitting.py
r249a7c6 r191c648 191 191 # resynth_data/restore_data/save/plot 192 192 193 class ParameterExpressions(object): 194 def __init__(self, models): 195 self.models = models 196 self._setup() 197 198 def _setup(self): 199 exprs = {} 200 for M in self.models: 201 exprs.update((".".join((M.name, k)), v) for k, v in M.constraints.items()) 202 if exprs: 203 symtab = dict((".".join((M.name, k)), p) 204 for M in self.models 205 for k,p in M.parameters().items()) 206 self.update = compile_constraints(symtab, exprs) 207 else: 208 self.update = lambda: 0 209 210 def __call__(self): 211 self.update() 212 213 def __getstate__(self): 214 return self.models 215 216 def __setstate__(self, state): 217 self.models = state 218 self._setup() 219 193 220 class BumpsFit(FitEngine): 194 221 """ … … 218 245 problem = FitProblem(models) 219 246 220 221 # Build constraint expressions 222 exprs = {} 223 for M in models: 224 exprs.update((".".join((M.name, k)), v) for k, v in M.constraints.items()) 225 if exprs: 226 symtab = dict((".".join((M.name, k)), p) 227 for M in models 228 for k,p in M.parameters().items()) 229 constraints = compile_constraints(symtab, exprs) 230 else: 231 constraints = lambda: 0 232 233 # Override model update so that parameter constraints are applied 234 problem._model_update = problem.model_update 235 def model_update(): 236 constraints() 237 problem._model_update() 238 problem.model_update = model_update 247 # TODO: need better handling of parameter expressions and bounds constraints 248 # so that they are applied during polydispersity calculations. This 249 # will remove the immediate need for the setp_hook in bumps, though 250 # bumps may still need something similar, such as a sane class structure 251 # which allows a subclass to override setp. 252 problem.setp_hook = ParameterExpressions(models) 239 253 240 254 # Run the fit
Note: See TracChangeset
for help on using the changeset viewer.