Changeset b297ba9 in sasmodels for sasmodels/mixture.py
- Timestamp:
- Mar 20, 2019 7:03:50 PM (5 years ago)
- Branches:
- master, core_shell_microgels, magnetic_model, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
- Children:
- 4e28511
- Parents:
- 0d362b7
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/mixture.py
r39a06c9 rb297ba9 120 120 121 121 def random(): 122 """Random set of model parameters for mixture model""" 122 123 combined_pars = {} 123 124 for k, part in enumerate(parts): … … 149 150 150 151 class MixtureModel(KernelModel): 152 """ 153 Model definition for mixture of models. 154 """ 151 155 def __init__(self, model_info, parts): 152 156 # type: (ModelInfo, List[KernelModel]) -> None … … 165 169 kernels = [part.make_kernel(q_vectors) for part in self.parts] 166 170 return MixtureKernel(self.info, kernels) 171 make_kernel.__doc__ = KernelModel.make_kernel.__doc__ 167 172 168 173 def release(self): 169 174 # type: () -> None 170 """ 171 Free resources associated with the model. 172 """ 175 """Free resources associated with the model.""" 173 176 for part in self.parts: 174 177 part.release() 178 release.__doc__ = KernelModel.release.__doc__ 175 179 176 180 177 181 class MixtureKernel(Kernel): 182 """ 183 Instantiated kernel for mixture of models. 184 """ 178 185 def __init__(self, model_info, kernels): 179 186 # type: (ModelInfo, List[Kernel]) -> None … … 185 192 self.results = [] # type: List[np.ndarray] 186 193 187 def __call__(self, call_details, values, cutoff, magnetic):194 def Iq(self, call_details, values, cutoff, magnetic): 188 195 # type: (CallDetails, np.ndarray, np.ndarry, float, bool) -> np.ndarray 189 196 scale, background = values[0:2] … … 191 198 # remember the parts for plotting later 192 199 self.results = [] # type: List[np.ndarray] 193 parts = MixtureParts(self.info, self.kernels, call_details, values)200 parts = _MixtureParts(self.info, self.kernels, call_details, values) 194 201 for kernel, kernel_details, kernel_values in parts: 195 202 #print("calling kernel", kernel.info.name) … … 208 215 return scale*total + background 209 216 217 Iq.__doc__ = Kernel.Iq.__doc__ 218 __call__ = Iq 219 210 220 def release(self): 211 221 # type: () -> None 222 """Free resources associated with the kernel.""" 212 223 for k in self.kernels: 213 224 k.release() 214 225 215 226 216 class MixtureParts(object): 227 # Note: _MixtureParts doesn't implement iteration correctly, and only allows 228 # a single iterator to be active at once. It doesn't matter in this case 229 # since _MixtureParts is only used in one place, but it is not clean style. 230 class _MixtureParts(object): 231 """ 232 Mixture component iterator. 233 """ 217 234 def __init__(self, model_info, kernels, call_details, values): 218 235 # type: (ModelInfo, List[Kernel], CallDetails, np.ndarray) -> None … … 223 240 self.values = values 224 241 self.spin_index = model_info.parameters.npars + 2 242 # The following are redefined by __iter__, but set them here so that 243 # lint complains a little less. 244 self.part_num = -1 245 self.par_index = -1 246 self.mag_index = -1 225 247 #call_details.show(values) 226 248
Note: See TracChangeset
for help on using the changeset viewer.