Where can I see the list of built-in wavelet functions that I can pass to scipy.signal.cwt?

python, scipy, signal-processing, wavelet

Solution

I asked the question on the SciPy Users List , answer 1:

I found the module for CWT quite confusing, so I rolled my own:

https://github.com/Dapid/fast-pycwt

It is built for speed (I got my running time from 4 h down to 20 min). It is not thoroughly tested, and it is limited to single and double; but for me it is in a "good enough" state.

Answer 2:

You might also find my version useful:

https://github.com/aaren/wavelets

I also found scipy wavelets confusing. My version includes a faster cwt that can take wavelets expressed in either frequency or time.

I found it more intuitive to have wavelet functions that take time/frequency and width as arguments rather than the present method (I prefer thinking in real space rather than sample space).

Presently, the morlet wavelet that comes with scipy, `scipy.signal.wavelets.morlet`, cannot be used as input to cwt. This is unfortunate I think.

Additionally, the present cwt doesn't allow complex output. This doesn't make a difference for ricker but wavelet functions are complex in general.

My modified 'cwt' method is here:

https://github.com/aaren/wavelets/blob/master/wavelets.py#L15

It can accept wavelet functions defined in time or frequency space, uses fftconvolve, and allows complex output.

My background on this is based on a reading of Torrence and Compo:

Torrence and Compo, 'A Practical Guide to Wavelet Analysis' (BAMS, 1998)

http://paos.colorado.edu/research/wavelets/

hope that helps a bit,

aaron

Problem

`scipy.signal.cwt`'s documentation says: scipy.signal.cwt(data, wavelet, widths) wavelet : function Wavelet function, which should take 2 arguments. The first argument is the number of points that the returned vector will have (len(wavelet(width,length)) == length). The second is a width parameter, defining the size of the wavelet (e.g. standard deviation of a gaussian). See ricker, which satisfies these requirements.wavelet : function Wavelet function, which should take 2 arguments. Beyond `scipy.signal.ricket`, what are the other built-in wavelet functions that I can pass to scipy.signal.cwt? I see in scipy / scipy / signal / wavelets.py ``` __all__ = ['daub', 'qmf', 'cascade', 'morlet', 'ricker', 'cwt'] ``` and looking at the arguments of each of those wavelet functions, only `ricket` seems to work with `scipy.signal.cwt(data, wavelet, widths)` (as only `ricker` takes precisely 2 arguments).

Original source