[Scipy-svn] r4354 - branches/refactor_fft/scipy/fftpack

scipy-svn at scipy.org scipy-svn at scipy.org
Fri May 16 01:09:40 EDT 2008


Author: cdavid
Date: 2008-05-16 00:09:35 -0500 (Fri, 16 May 2008)
New Revision: 4354

Modified:
   branches/refactor_fft/scipy/fftpack/basic.py
   branches/refactor_fft/scipy/fftpack/common.py
   branches/refactor_fft/scipy/fftpack/pseudo_diffs.py
Log:
Use backend loader as _fftpack replacement.

Modified: branches/refactor_fft/scipy/fftpack/basic.py
===================================================================
--- branches/refactor_fft/scipy/fftpack/basic.py	2008-05-16 03:31:39 UTC (rev 4353)
+++ branches/refactor_fft/scipy/fftpack/basic.py	2008-05-16 05:09:35 UTC (rev 4354)
@@ -10,7 +10,7 @@
 
 from numpy import asarray, zeros, swapaxes, integer, array
 import numpy
-import _fftpack as fftpack
+import common as fftimpl
 
 def istype(arr, typeclass):
     return issubclass(arr.dtype.type, typeclass)
@@ -79,12 +79,12 @@
     if istype(tmp, numpy.complex128):
         overwrite_x = overwrite_x or (tmp is not x and not \
                                       hasattr(x,'__array__'))
-        work_function = fftpack.zfft_fftpack
+        work_function = fftimpl.zfft
     elif istype(tmp, numpy.complex64):
         raise NotImplementedError
     else:
         overwrite_x = 1
-        work_function = fftpack.zrfft_fftpack
+        work_function = fftimpl.zrfft
 
     #return _raw_fft(tmp,n,axis,1,overwrite_x,work_function)
     if n is None:
@@ -117,12 +117,12 @@
     if istype(tmp, numpy.complex128):
         overwrite_x = overwrite_x or (tmp is not x and not \
                                       hasattr(x,'__array__'))
-        work_function = fftpack.zfft_fftpack
+        work_function = fftimpl.zfft
     elif istype(tmp, numpy.complex64):
         raise NotImplementedError
     else:
         overwrite_x = 1
-        work_function = fftpack.zrfft_fftpack
+        work_function = fftimpl.zrfft
 
     #return _raw_fft(tmp,n,axis,-1,overwrite_x,work_function)
     if n is None:
@@ -169,7 +169,7 @@
     tmp = asarray(x)
     if not numpy.isrealobj(tmp):
         raise TypeError,"1st argument must be real sequence"
-    work_function = fftpack.drfft_fftpack
+    work_function = fftimpl.drfft
     return _raw_fft(tmp,n,axis,1,overwrite_x,work_function)
 
 
@@ -213,7 +213,7 @@
     tmp = asarray(x)
     if not numpy.isrealobj(tmp):
         raise TypeError,"1st argument must be real sequence"
-    work_function = fftpack.drfft_fftpack
+    work_function = fftimpl.drfft
     return _raw_fft(tmp,n,axis,-1,overwrite_x,work_function)
 
 
@@ -285,12 +285,12 @@
     if istype(tmp, numpy.complex128):
         overwrite_x = overwrite_x or (tmp is not x and not \
                                       hasattr(x,'__array__'))
-        work_function = fftpack.zfftnd_fftpack
+        work_function = fftimpl.zfftnd
     elif istype(tmp, numpy.complex64):
         raise NotImplementedError
     else:
         overwrite_x = 1
-        work_function = fftpack.zfftnd_fftpack
+        work_function = fftimpl.zfftnd
     return _raw_fftnd(tmp,shape,axes,1,overwrite_x,work_function)
 
 
@@ -313,12 +313,12 @@
     if istype(tmp, numpy.complex128):
         overwrite_x = overwrite_x or (tmp is not x and not \
                                       hasattr(x,'__array__'))
-        work_function = fftpack.zfftnd_fftpack
+        work_function = fftimpl.zfftnd
     elif istype(tmp, numpy.complex64):
         raise NotImplementedError
     else:
         overwrite_x = 1
-        work_function = fftpack.zfftnd_fftpack
+        work_function = fftimpl.zfftnd
     return _raw_fftnd(tmp,shape,axes,-1,overwrite_x,work_function)
 
 

Modified: branches/refactor_fft/scipy/fftpack/common.py
===================================================================
--- branches/refactor_fft/scipy/fftpack/common.py	2008-05-16 03:31:39 UTC (rev 4353)
+++ branches/refactor_fft/scipy/fftpack/common.py	2008-05-16 05:09:35 UTC (rev 4354)
@@ -1,8 +1,9 @@
 import fftpack as _DEF_BACKEND
 
-_FUNCS_NAMES = ["zfft", "drfft", "zfftnd", "zrfft", "init_convolution_kernel",
-                "convolve", "convolve_z", "destroy_convolve_cache"]
-_FUNCS = dict([(name, None) for name in _FUNCS_NAMES])
+__all__ = ["zfft", "drfft", "zfftnd", "zrfft", "init_convolution_kernel",
+           "convolve", "convolve_z", "destroy_convolve_cache"]
+
+_FUNCS = dict([(name, None) for name in __all__])
 _FALLBACK = dict([(name, _DEF_BACKEND.__dict__[f]) for f in _FUNCS.keys()])
 
 def myimport(name):
@@ -17,7 +18,7 @@
         mod = myimport(name)
         for f in _FUNCS.keys():
             try:
-                _FUNCS[f] = mod.__dict__[f] 
+                _FUNCS[f] = mod.__dict__[f]
                 print "loading %s from %s" % (f, name)
             except KeyError:
                 _FUNCS[f] = _DEF_BACKEND.__dict__[f]
@@ -29,3 +30,11 @@
 
 load_backend("fftpack.backends.fftw3")
 
+zfft = _FUNCS["zfft"]
+drfft = _FUNCS["drfft"]
+zfftnd = _FUNCS["zfftnd"]
+zrfft = _FUNCS["zrfft"]
+init_convolution_kernel = _FUNCS["init_convolution_kernel"]
+convolve = _FUNCS["convolve"]
+convolve_z = _FUNCS["convolve_z"]
+destroy_convolve_cache = _FUNCS["destroy_convolve_cache"]

Modified: branches/refactor_fft/scipy/fftpack/pseudo_diffs.py
===================================================================
--- branches/refactor_fft/scipy/fftpack/pseudo_diffs.py	2008-05-16 03:31:39 UTC (rev 4353)
+++ branches/refactor_fft/scipy/fftpack/pseudo_diffs.py	2008-05-16 05:09:35 UTC (rev 4354)
@@ -9,10 +9,10 @@
            'shift']
 
 from numpy import pi, asarray, sin, cos, sinh, cosh, tanh, iscomplexobj
-import convolve
+import common as fftimpl
 
 import atexit
-atexit.register(convolve.destroy_convolve_cache_fftpack)
+atexit.register(fftimpl.destroy_convolve_cache)
 del atexit
 
 
@@ -60,11 +60,11 @@
             if k:
                 return pow(c*k,order)
             return 0
-        omega = convolve.init_convolution_kernel_fftpack(n,kernel,d=order,
+        omega = fftimpl.init_convolution_kernel(n,kernel,d=order,
                                                  zero_nyquist=1)
         _cache[(n,order,c)] = omega
     overwrite_x = tmp is not x and not hasattr(x,'__array__')
-    return convolve.convolve_fftpack(tmp,omega,swap_real_imag=order%2,
+    return fftimpl.convolve(tmp,omega,swap_real_imag=order%2,
                              overwrite_x=overwrite_x)
 del _cache
 
@@ -110,10 +110,10 @@
         def kernel(k,h=h):
             if k: return 1.0/tanh(h*k)
             return 0
-        omega = convolve.init_convolution_kernel_fftpack(n,kernel,d=1)
+        omega = fftimpl.init_convolution_kernel(n,kernel,d=1)
         _cache[(n,h)] = omega
     overwrite_x = tmp is not x and not hasattr(x,'__array__')
-    return convolve.convolve_fftpack(tmp,omega,swap_real_imag=1,overwrite_x=overwrite_x)
+    return fftimpl.convolve(tmp,omega,swap_real_imag=1,overwrite_x=overwrite_x)
 del _cache
 
 
@@ -146,10 +146,10 @@
         def kernel(k,h=h):
             if k: return -tanh(h*k)
             return 0
-        omega = convolve.init_convolution_kernel_fftpack(n,kernel,d=1)
+        omega = fftimpl.init_convolution_kernel(n,kernel,d=1)
         _cache[(n,h)] = omega
     overwrite_x = tmp is not x and not hasattr(x,'__array__')
-    return convolve.convolve_fftpack(tmp,omega,swap_real_imag=1,overwrite_x=overwrite_x)
+    return fftimpl.convolve(tmp,omega,swap_real_imag=1,overwrite_x=overwrite_x)
 del _cache
 
 
@@ -183,10 +183,10 @@
             if k>0: return 1.0
             elif k<0: return -1.0
             return 0.0
-        omega = convolve.init_convolution_kernel_fftpack(n,kernel,d=1)
+        omega = fftimpl.init_convolution_kernel(n,kernel,d=1)
         _cache[n] = omega
     overwrite_x = tmp is not x and not hasattr(x,'__array__')
-    return convolve.convolve_fftpack(tmp,omega,swap_real_imag=1,overwrite_x=overwrite_x)
+    return fftimpl.convolve(tmp,omega,swap_real_imag=1,overwrite_x=overwrite_x)
 del _cache
 
 
@@ -242,10 +242,10 @@
         def kernel(k,a=a,b=b):
             if k: return -cosh(a*k)/sinh(b*k)
             return 0
-        omega = convolve.init_convolution_kernel_fftpack(n,kernel,d=1)
+        omega = fftimpl.init_convolution_kernel(n,kernel,d=1)
         _cache[(n,a,b)] = omega
     overwrite_x = tmp is not x and not hasattr(x,'__array__')
-    return convolve.convolve_fftpack(tmp,omega,swap_real_imag=1,overwrite_x=overwrite_x)
+    return fftimpl.convolve(tmp,omega,swap_real_imag=1,overwrite_x=overwrite_x)
 del _cache
 
 
@@ -288,10 +288,10 @@
         def kernel(k,a=a,b=b):
             if k: return sinh(a*k)/cosh(b*k)
             return 0
-        omega = convolve.init_convolution_kernel_fftpack(n,kernel,d=1)
+        omega = fftimpl.init_convolution_kernel(n,kernel,d=1)
         _cache[(n,a,b)] = omega
     overwrite_x = tmp is not x and not hasattr(x,'__array__')
-    return convolve.convolve_fftpack(tmp,omega,swap_real_imag=1,overwrite_x=overwrite_x)
+    return fftimpl.convolve(tmp,omega,swap_real_imag=1,overwrite_x=overwrite_x)
 del _cache
 
 
@@ -333,10 +333,10 @@
         def kernel(k,a=a,b=b):
             if k: return sinh(a*k)/sinh(b*k)
             return float(a)/b
-        omega = convolve.init_convolution_kernel_fftpack(n,kernel)
+        omega = fftimpl.init_convolution_kernel(n,kernel)
         _cache[(n,a,b)] = omega
     overwrite_x = tmp is not x and not hasattr(x,'__array__')
-    return convolve.convolve_fftpack(tmp,omega,overwrite_x=overwrite_x)
+    return fftimpl.convolve(tmp,omega,overwrite_x=overwrite_x)
 del _cache
 
 
@@ -378,10 +378,10 @@
             while _cache: _cache.popitem()
         def kernel(k,a=a,b=b):
             return cosh(a*k)/cosh(b*k)
-        omega = convolve.init_convolution_kernel_fftpack(n,kernel)
+        omega = fftimpl.init_convolution_kernel(n,kernel)
         _cache[(n,a,b)] = omega
     overwrite_x = tmp is not x and not hasattr(x,'__array__')
-    return convolve.convolve_fftpack(tmp,omega,overwrite_x=overwrite_x)
+    return fftimpl.convolve(tmp,omega,overwrite_x=overwrite_x)
 del _cache
 
 _cache = {}
@@ -412,15 +412,15 @@
             while _cache: _cache.popitem()
         def kernel_real(k,a=a): return cos(a*k)
         def kernel_imag(k,a=a): return sin(a*k)
-        omega_real = convolve.init_convolution_kernel_fftpack(n,kernel_real,d=0,
+        omega_real = fftimpl.init_convolution_kernel(n,kernel_real,d=0,
                                                       zero_nyquist=0)
-        omega_imag = convolve.init_convolution_kernel_fftpack(n,kernel_imag,d=1,
+        omega_imag = fftimpl.init_convolution_kernel(n,kernel_imag,d=1,
                                                       zero_nyquist=0)
         _cache[(n,a)] = omega_real,omega_imag
     else:
         omega_real,omega_imag = omega
     overwrite_x = tmp is not x and not hasattr(x,'__array__')
-    return convolve.convolve_z_fftpack(tmp,omega_real,omega_imag,
+    return fftimpl.convolve_z(tmp,omega_real,omega_imag,
                                overwrite_x=overwrite_x)
 
 del _cache




More information about the Scipy-svn mailing list