In my recent post, I extolled the virtues of SciPy 0.19's
LowLevelCallable. I did lament, however, that for
LowLevelCallable interface is a good deal uglier than the standard function interface. In the latter, you merely need to provide a function that takes the values within a pixel neighbourhood, and outputs a single value — an arbitrary function of the input values. That is a Wholesome and Good filter function, the way God intended.
In contrast, a LowLevelCallable takes the following signature:
>>> from llc import jit_filter_function
The source code is on GitHub. Currently it only covers
ndi.generic_filter's signature, and only with Numba, but I hope to gradually expand it to cover all the functions that take
LowLevelCallables in SciPy, as well as support Cython. Pull requests are welcome!