|
import numpy as np |
|
import scipy.fft |
|
import threading |
|
|
|
class _MockFunction: |
|
def __init__(self, return_value = None): |
|
self.number_calls = threading.local() |
|
self.return_value = return_value |
|
self.last_args = threading.local() |
|
|
|
def __call__(self, *args, **kwargs): |
|
if not hasattr(self.number_calls, 'c'): |
|
self.number_calls.c = 0 |
|
|
|
self.number_calls.c += 1 |
|
self.last_args.l = (args, kwargs) |
|
return self.return_value |
|
|
|
|
|
fft = _MockFunction(np.random.random(10)) |
|
fft2 = _MockFunction(np.random.random(10)) |
|
fftn = _MockFunction(np.random.random(10)) |
|
|
|
ifft = _MockFunction(np.random.random(10)) |
|
ifft2 = _MockFunction(np.random.random(10)) |
|
ifftn = _MockFunction(np.random.random(10)) |
|
|
|
rfft = _MockFunction(np.random.random(10)) |
|
rfft2 = _MockFunction(np.random.random(10)) |
|
rfftn = _MockFunction(np.random.random(10)) |
|
|
|
irfft = _MockFunction(np.random.random(10)) |
|
irfft2 = _MockFunction(np.random.random(10)) |
|
irfftn = _MockFunction(np.random.random(10)) |
|
|
|
hfft = _MockFunction(np.random.random(10)) |
|
hfft2 = _MockFunction(np.random.random(10)) |
|
hfftn = _MockFunction(np.random.random(10)) |
|
|
|
ihfft = _MockFunction(np.random.random(10)) |
|
ihfft2 = _MockFunction(np.random.random(10)) |
|
ihfftn = _MockFunction(np.random.random(10)) |
|
|
|
dct = _MockFunction(np.random.random(10)) |
|
idct = _MockFunction(np.random.random(10)) |
|
dctn = _MockFunction(np.random.random(10)) |
|
idctn = _MockFunction(np.random.random(10)) |
|
|
|
dst = _MockFunction(np.random.random(10)) |
|
idst = _MockFunction(np.random.random(10)) |
|
dstn = _MockFunction(np.random.random(10)) |
|
idstn = _MockFunction(np.random.random(10)) |
|
|
|
fht = _MockFunction(np.random.random(10)) |
|
ifht = _MockFunction(np.random.random(10)) |
|
|
|
|
|
__ua_domain__ = "numpy.scipy.fft" |
|
|
|
|
|
_implements = { |
|
scipy.fft.fft: fft, |
|
scipy.fft.fft2: fft2, |
|
scipy.fft.fftn: fftn, |
|
scipy.fft.ifft: ifft, |
|
scipy.fft.ifft2: ifft2, |
|
scipy.fft.ifftn: ifftn, |
|
scipy.fft.rfft: rfft, |
|
scipy.fft.rfft2: rfft2, |
|
scipy.fft.rfftn: rfftn, |
|
scipy.fft.irfft: irfft, |
|
scipy.fft.irfft2: irfft2, |
|
scipy.fft.irfftn: irfftn, |
|
scipy.fft.hfft: hfft, |
|
scipy.fft.hfft2: hfft2, |
|
scipy.fft.hfftn: hfftn, |
|
scipy.fft.ihfft: ihfft, |
|
scipy.fft.ihfft2: ihfft2, |
|
scipy.fft.ihfftn: ihfftn, |
|
scipy.fft.dct: dct, |
|
scipy.fft.idct: idct, |
|
scipy.fft.dctn: dctn, |
|
scipy.fft.idctn: idctn, |
|
scipy.fft.dst: dst, |
|
scipy.fft.idst: idst, |
|
scipy.fft.dstn: dstn, |
|
scipy.fft.idstn: idstn, |
|
scipy.fft.fht: fht, |
|
scipy.fft.ifht: ifht |
|
} |
|
|
|
|
|
def __ua_function__(method, args, kwargs): |
|
fn = _implements.get(method) |
|
return (fn(*args, **kwargs) if fn is not None |
|
else NotImplemented) |
|
|