|
""" |
|
Aliases for functions which may be accelerated by Scipy. |
|
|
|
Scipy_ can be built to use accelerated or otherwise improved libraries |
|
for FFTs, linear algebra, and special functions. This module allows |
|
developers to transparently support these accelerated functions when |
|
scipy is available but still support users who have only installed |
|
Numpy. |
|
|
|
.. _Scipy : http://www.scipy.org |
|
|
|
""" |
|
from __future__ import division, absolute_import, print_function |
|
|
|
|
|
|
|
|
|
|
|
|
|
__all__ = ['fft', 'ifft', 'fftn', 'ifftn', 'fft2', 'ifft2', |
|
'norm', 'inv', 'svd', 'solve', 'det', 'eig', 'eigvals', |
|
'eigh', 'eigvalsh', 'lstsq', 'pinv', 'cholesky', 'i0'] |
|
|
|
import numpy.linalg as linpkg |
|
import numpy.fft as fftpkg |
|
from numpy.lib import i0 |
|
import sys |
|
|
|
|
|
fft = fftpkg.fft |
|
ifft = fftpkg.ifft |
|
fftn = fftpkg.fftn |
|
ifftn = fftpkg.ifftn |
|
fft2 = fftpkg.fft2 |
|
ifft2 = fftpkg.ifft2 |
|
|
|
norm = linpkg.norm |
|
inv = linpkg.inv |
|
svd = linpkg.svd |
|
solve = linpkg.solve |
|
det = linpkg.det |
|
eig = linpkg.eig |
|
eigvals = linpkg.eigvals |
|
eigh = linpkg.eigh |
|
eigvalsh = linpkg.eigvalsh |
|
lstsq = linpkg.lstsq |
|
pinv = linpkg.pinv |
|
cholesky = linpkg.cholesky |
|
|
|
_restore_dict = {} |
|
|
|
def register_func(name, func): |
|
if name not in __all__: |
|
raise ValueError("%s not a dual function." % name) |
|
f = sys._getframe(0).f_globals |
|
_restore_dict[name] = f[name] |
|
f[name] = func |
|
|
|
def restore_func(name): |
|
if name not in __all__: |
|
raise ValueError("%s not a dual function." % name) |
|
try: |
|
val = _restore_dict[name] |
|
except KeyError: |
|
return |
|
else: |
|
sys._getframe(0).f_globals[name] = val |
|
|
|
def restore_all(): |
|
for name in _restore_dict.keys(): |
|
restore_func(name) |
|
|