Changeset df776db in sasmodels for sasmodels/kerneldll.py
- Timestamp:
- Jul 27, 2016 3:56:54 PM (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:
- 739aad4
- Parents:
- 8357f66 (diff), 63c6a08 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/kerneldll.py
r8357f66 rdf776db 272 272 # int, int, int, int*, double*, double*, double*, double*, double 273 273 argtypes = [c_int32]*3 + [c_void_p]*4 + [fp] 274 self._Iq = self._dll[generate.kernel_name(self.info, is_2d=False)] 275 self._Iqxy = self._dll[generate.kernel_name(self.info, is_2d=True)] 276 self._Iq.argtypes = argtypes 277 self._Iqxy.argtypes = argtypes 274 names = [generate.kernel_name(self.info, variant) 275 for variant in ("Iq", "Iqxy", "Imagnetic")] 276 self._kernels = [self._dll[name] for name in names] 277 for k in self._kernels: 278 k.argtypes = argtypes 278 279 279 280 def __getstate__(self): … … 292 293 if self._dll is None: 293 294 self._load_dll() 294 kernel = self._Iqxy if q_input.is_2d else self._Iq 295 is_2d = len(q_vectors) == 2 296 kernel = self._kernels[1:3] if is_2d else [self._kernels[0]]*2 295 297 return DllKernel(kernel, self.info, q_input) 296 298 … … 343 345 else np.float128) 344 346 345 def __call__(self, call_details, values, cutoff): 346 # type: (CallDetails, np.ndarray, np.ndarray, float) -> np.ndarray 347 348 #print("in kerneldll") 349 #print("values", values) 350 start, stop = 0, call_details.pd_prod 347 def __call__(self, call_details, values, cutoff, magnetic): 348 # type: (CallDetails, np.ndarray, np.ndarray, float, bool) -> np.ndarray 349 350 kernel = self.kernel[1 if magnetic else 0] 351 351 args = [ 352 352 self.q_input.nq, # nq 353 start, # pd_start354 stop, # pd_stop pd_stride[MAX_PD]353 None, # pd_start 354 None, # pd_stop pd_stride[MAX_PD] 355 355 call_details.buffer.ctypes.data, # problem 356 356 values.ctypes.data, #pars … … 358 358 self.result.ctypes.data, # results 359 359 self.real(cutoff), # cutoff 360 ] 361 #print("calling DLL") 362 self.kernel(*args) # type: ignore 363 return self.result[:-1] 360 ] 361 #print("kerneldll values", values) 362 step = 100 363 for start in range(0, call_details.pd_prod, step): 364 stop = min(start+step, call_details.pd_prod) 365 args[1:3] = [start, stop] 366 #print("calling DLL") 367 kernel(*args) # type: ignore 368 369 #print("returned",self.q_input.q, self.result) 370 scale = values[0]/self.result[self.q_input.nq] 371 background = values[1] 372 #print("scale",scale,background) 373 return scale*self.result[:self.q_input.nq] + background 364 374 365 375 def release(self):
Note: See TracChangeset
for help on using the changeset viewer.