Wavelets in sage
There are no native wavelet packages in sage. But there is a great module in python that contains, among other things, forward and inverse discrete wavelet transforms (for one and two dimensions). It comes bundled with seventy-six wavelet filters, and allows support to build your own! The name is PyWavelets, written by Tariq Rashid, and can be retrieved from pypi.python.org/pypi/PyWavelets. In order to install it in sage, take the following steps:
- Download the latest version, and unpack it.
tar xvfz PyWavelets-0.2.0.tar.bz2
- Navigate to the top-level directory of the newly created PyWavelets folder, and install the package in sage.
/Applications/sage/sage -python setup.py install
- This should be enough! Open a sage session, and import the pywt module:
import pywt dir(pywt)
[‘BaseNode’, ‘MODES’, ‘Node’, ‘Node2D’, ‘Wavelet’, ‘WaveletPacket’, ‘Wavelet
Packet2D’, ‘__all__’, ‘__author__’, ‘__builtins__’, ‘__doc__’, ‘__file__’,
‘__license__’, ‘__name__’, ‘__package__’, ‘__path__’, ‘__version__’, ‘_pywt’
, ‘centfrq’, ‘downcoef’, ‘dwt’, ‘dwt2’, ‘dwt_coeff_len’, ‘dwt_max_level’, ‘d
wtn’, ‘families’, ‘functions’, ‘idwt’, ‘idwt2’, ‘intwave’, ‘numerix’, ‘orthf
ilt’, ‘qmf’, ‘release_details’, ‘scal2frq’, ‘swt’, ‘swt2’, ‘swt_max_level’,
‘thresholding’, ‘upcoef’, ‘wavedec’, ‘wavedec2’, ‘wavelist’, ‘waverec’, ‘wav
erec2’] - It might happen that the installation is not very clean:
import pywt
—————————————————————————
ImportError Traceback (most recent call last)/Users/blanco/Documents/Research/PyWavelets-0.2.0/ in ()
/Users/blanco/Documents/Research/PyWavelets-0.2.0/pywt/__init__.py in ()
11 “””
12
—> 13 from _pywt import *
14 from multilevel import *
15 from multidim import *ImportError: No module named _pywt
In that event, simply find where the _pywt.so library is in your PyWavelet package, and place a link in your sage libraries:
sudo ln -sv ./PyWavelets-0.2.0/build/lib.macosx-10.6-i386-2.6/pywt/_pywt.so /Applications/sage/local/lib/.
Once installed, you can get a flavor of what it means to work with this module by exploring a little. For example, to find out how many different families of wavelets are implemented, or the names of each of the filters present in the package, simply issue
pywt.families()
pywt.wavelist()
bior3.1’, ‘bior3.3’, ‘bior3.5’, ‘bior3.7’, ‘bior3.9’, ‘bior4.4’, ‘bior5.5’, ‘bi
or6.8’, ‘coif1’, ‘coif2’, ‘coif3’, ‘coif4’, ‘coif5’, ‘db1’, ‘db2’, ‘db3’, ‘db4’
, ‘db5’, ‘db6’, ‘db7’, ‘db8’, ‘db9’, ‘db10’, ‘db11’, ‘db12’, ‘db13’, ‘db14’, ‘d
b15’, ‘db16’, ‘db17’, ‘db18’, ‘db19’, ‘db20’, ‘dmey’, ‘haar’, ‘rbio1.1’, ‘rbio1
.3’, ‘rbio1.5’, ‘rbio2.2’, ‘rbio2.4’, ‘rbio2.6’, ‘rbio2.8’, ‘rbio3.1’, ‘rbio3.3
‘, ‘rbio3.5’, ‘rbio3.7’, ‘rbio3.9’, ‘rbio4.4’, ‘rbio5.5’, ‘rbio6.8’, ‘sym2’, ‘s
ym3’, ‘sym4’, ‘sym5’, ‘sym6’, ‘sym7’, ‘sym8’, ‘sym9’, ‘sym10’, ‘sym11’, ‘sym12’
, ‘sym13’, ‘sym14’, ‘sym15’, ‘sym16’, ‘sym17’, ‘sym18’, ‘sym19’, ‘sym20’]
To compute one level of the Haar-wavelet coefficients of a given image (the top level alone), we proceed as follows:
from numpy import * import scipy image=scipy.misc.lena().astype(float32) Aprox, Details = pywt.dwt2( image, pywt.Wavelet('haar') ) HorizDetail, VertDetail, DiagDetail = Details
Approximation | Horizontal Detail |
Vertical Detail | Diagonal Detail |
References
Programming Python (See all Computer Programmer Books) | Ten Lectures on Wavelets (CBMS-NSF Regional Conference Series in Applied Mathematics) (See all Waves & Wave Mechanics Books) |
-
January 23, 2011 at 12:00 pmWavelets in sage « Francisco Blanco-Silva