15. Python model evaluator¶
sasmodels.kernelpy
¶
Python driver for python kernels
Calls the kernel with a vector of \(q\) values for a single parameter set.
Polydispersity is supported by looping over different parameter sets and
summing the results. The interface to PyModel
matches those for
kernelcl.GpuModel
and kerneldll.DllModel
.
-
class
sasmodels.kernelpy.
PyInput
(q_vectors, dtype)¶ Bases:
object
Make q data available to the gpu.
q_vectors is a list of q vectors, which will be [q] for 1-D data, and [qx, qy] for 2-D data. Internally, the vectors will be reallocated to get the best performance on OpenCL, which may involve shifting and stretching the array to better match the memory architecture. Additional points will be evaluated with q=1e-3.
dtype is the data type for the q vectors. The data type should be set to match that of the kernel, which is an attribute of
GpuProgram
. Note that not all kernels support double precision, so even if the program was created for double precision, the GpuProgram.dtype may be single precision.Call
release()
when complete. Even if not called directly, the buffer will be released when the data object is freed.-
release
()¶ Free resources associated with the model inputs.
-
-
class
sasmodels.kernelpy.
PyKernel
(kernel, model_info, q_input)¶ Bases:
sasmodels.kernel.Kernel
Callable SAS kernel.
kernel is the DllKernel object to call.
model_info is the module information
q_input is the DllInput q vectors at which the kernel should be evaluated.
The resulting call method takes the pars, a list of values for the fixed parameters to the kernel, and pd_pars, a list of (value,weight) vectors for the polydisperse parameters. cutoff determines the integration limits: any points with combined weight less than cutoff will not be calculated.
Call
release()
when done with the kernel instance.-
release
()¶ Free resources associated with the kernel.
-
dim
= None¶
-
dtype
= None¶
-
info
= None¶
-
results
= None¶
-