Introduction

This library aims to provide XLA/JAX based Python implementations for discrete and continuous wavelets.

Bulk of this library is built using functional programming techniques which is critical for the generation of efficient numerical codes for CPU and GPU architectures.

Open Source Credits

Major parts of this library are directly influenced by existing projects. While the implementation in CR-Sparse is fresh (based on JAX), it has been possible thanks to the extensive study of existing implementations. We list here some of the major existing projects which have influenced the implementation in CR-Sparse. Let us know if we missed anything.

  • JAX The overall project structure is heavily influenced by the conventions followed in JAX. We learned the functional programming techniques as applicable for linear algebra work by reading the source code of JAX.

  • SciPy JAX doesn’t have all parts of SciPy ported yet. Some parts of SciPy have been adapted and re-written (in functional manner) as per the needs of CR-Sparse. E.g. cr.sparse.dsp.signals. The [TC98] version of CWT in cr.sparse.wt.

  • PyWavelets: The DWT and CWT implementations in cr.sparse.wt are largely derived from it. The filter coefficients for discrete wavelets have been ported from C to Python from here.

  • WaveLab This MATLAB package helped a lot in initial understanding of DWT implementation.

  • aaren/wavelets is a decent CWT implementation following [TC98]. Influenced: cr.sparse.wt.

Further Reading

TC98(1,2)

Christopher Torrence and Gilbert P Compo. A practical guide to wavelet analysis. Bulletin of the American Meteorological society, 79(1):61–78, 1998.

Documentation | Code | Issues | Discussions | Sparse-Plex