Skip to content

Releases: PyWavelets/pywt

v1.7.0

12 Aug 16:38
Compare
Choose a tag to compare
PyWavelets 1.7.0 release

We are very pleased to announce the release of PyWavelets 1.7.0. This release
is a minor update to 1.6.x. It adds support for Python 3.13, including for
free-threaded CPython. The supported NumPy and Cython versions are unchanged
from 1.6.x.

Note that building from source with free-threaded CPython requires a recent
development version of Cython (>=3.1.0a0).

Other noteworthy improvements:

- Most examples in the documentation are now interactive, powered by
  JupyterLite and Pyodide.
- The ``musllinux`` wheels were upgraded from ``musllinux_1_1`` to
  ``musllinux_1_2`` (for both x86-64 and aarch64).

Authors
=======

* Evgeni Burovski +
* Ralf Gommers
* Agriya Khetarpal
* Jarrod Millman
* Edgar Andrés Margffoy Tuay +

A total of 5 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
This list of names is automatically generated, and may not be fully complete.

Issues closed for v1.7.0
------------------------

* `#742 <https://github.com/PyWavelets/pywt/issues/742>`__: Start building WASM wheels against newer Pyodide (version 0.26.0)

Pull requests for v1.7.0
------------------------

* `#702 <https://github.com/PyWavelets/pywt/pull/702>`__: BLD: Test editable installations for PyWavelets in CI
* `#722 <https://github.com/PyWavelets/pywt/pull/722>`__: Drop support for older dependencies (see SPEC 0)
* `#726 <https://github.com/PyWavelets/pywt/pull/726>`__: MAINT: set version to 1.7.0.dev0
* `#734 <https://github.com/PyWavelets/pywt/pull/734>`__: DOC: Fix incorrect indentations for a few interactive examples
* `#737 <https://github.com/PyWavelets/pywt/pull/737>`__: DOC, DEP: Remove custom \`:button_text\` directive option, bump...
* `#739 <https://github.com/PyWavelets/pywt/pull/739>`__: DEP: Remove \`docutils\` upper-pin, bump \`sphinx\`
* `#743 <https://github.com/PyWavelets/pywt/pull/743>`__: FIX, CI: Temporarily disable \`pytest\`'s caching in Pyodide...
* `#744 <https://github.com/PyWavelets/pywt/pull/744>`__: CI, BLD: Use \`cibuildwheel\` to build and test Pyodide/WASM...
* `#745 <https://github.com/PyWavelets/pywt/pull/745>`__: Bump the github-actions group with 2 updates
* `#747 <https://github.com/PyWavelets/pywt/pull/747>`__: Use \`scipy-doctest\` instead of \`refguide-check\`
* `#748 <https://github.com/PyWavelets/pywt/pull/748>`__: DOC: easy_install is no longer a thing
* `#753 <https://github.com/PyWavelets/pywt/pull/753>`__: CI: Add CI to test on free-threaded Python
* `#756 <https://github.com/PyWavelets/pywt/pull/756>`__: CI: Add CI to release nightly wheels against free-threaded Python...
* `#757 <https://github.com/PyWavelets/pywt/pull/757>`__: CI: add macOS nightly wheels for free-threaded CPython
* `#759 <https://github.com/PyWavelets/pywt/pull/759>`__: Bump softprops/action-gh-release from 2.0.5 to 2.0.6 in the github-actions...
* `#761 <https://github.com/PyWavelets/pywt/pull/761>`__: BLD: mark extension modules as compatible to run without the...
* `#762 <https://github.com/PyWavelets/pywt/pull/762>`__: BLD: fix a few install tags for generated .py files
* `#763 <https://github.com/PyWavelets/pywt/pull/763>`__: Bump the github-actions group with 4 updates
* `#764 <https://github.com/PyWavelets/pywt/pull/764>`__: BLD/CI: support Python 3.13 (cp313/cp313t) in pyproject.toml...

v1.6.0

01 Apr 18:09
v1.6.0
2290fe1
Compare
Choose a tag to compare
PyWavelets 1.6.0 release

We are very pleased to announce the release of PyWavelets 1.6.0. This release
is a minor update to 1.6.x. It adds support for NumPy 2.0, which also keeping
compatibility with NumPy 1.22-1.26. It requires Cython 3.0; support for 0.29.x
is dropped.

Other noteworthy improvements:

- Improved documentation for ``pywt.cwt``
- The documentation was migrated to the PyData Sphinx Theme and the content
  organization improved
- Releases on PyPI now include wheels for ``musllinux`` (x86-64 and aarch64)
- The test suite is now passing and tested in CI with Emscripten/Pyodide
- Nightly builds will be available at
  https://anaconda.org/scientific-python-nightly-wheels/PyWavelets/ going
  forward

Authors
=======

* Christian Clauss
* Ralf Gommers
* Agriya Khetarpal +
* Jarrod Millman
* Cora Schneck +
* Daniel Stephan +

A total of 6 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
This list of names is automatically generated, and may not be fully complete.

Issues closed for v1.6.0
------------------------

* `#623 <https://github.com/PyWavelets/pywt/issues/623>`__: pywavelets fails to install on Alpine Linux v3.15 ARM
* `#676 <https://github.com/PyWavelets/pywt/issues/676>`__: Enhanced documentation for CWT
* `#712 <https://github.com/PyWavelets/pywt/issues/712>`__: Upload dev builds for all supported platforms to anaconda.org
* `#718 <https://github.com/PyWavelets/pywt/issues/718>`__: Publish musllinux wheels again, and natively compile macOS arm64...

Pull requests for v1.6.0
------------------------

* `#678 <https://github.com/PyWavelets/pywt/pull/678>`__: Additional documentation for cwt (issue #676)
* `#684 <https://github.com/PyWavelets/pywt/pull/684>`__: Rename master branch to main
* `#687 <https://github.com/PyWavelets/pywt/pull/687>`__: Add linter
* `#701 <https://github.com/PyWavelets/pywt/pull/701>`__: Build and test PyWavelets Pyodide wheels in CI
* `#703 <https://github.com/PyWavelets/pywt/pull/703>`__: MAINT: add input validation to \`scales\` argument to \`cwt\`
* `#704 <https://github.com/PyWavelets/pywt/pull/704>`__: DOC: Migrate to \`pydata-sphinx-theme\`
* `#708 <https://github.com/PyWavelets/pywt/pull/708>`__: Keep GitHub Actions up to date with GitHub's Dependabot
* `#709 <https://github.com/PyWavelets/pywt/pull/709>`__: mymindstorm/setup-emscripten --> mymindstorm/setup-emsdk
* `#711 <https://github.com/PyWavelets/pywt/pull/711>`__: CI: tweaks to CI job triggers and names
* `#713 <https://github.com/PyWavelets/pywt/pull/713>`__: Bump the github-actions group with 5 updates
* `#714 <https://github.com/PyWavelets/pywt/pull/714>`__: Upload dev wheels to Anaconda.org + revamp wheels publishing...
* `#715 <https://github.com/PyWavelets/pywt/pull/715>`__: BLD: update build and runtime dependencies for numpy 2.0
* `#716 <https://github.com/PyWavelets/pywt/pull/716>`__: TST/CI: mark some tests as slow and avoid running them in wheel...
* `#717 <https://github.com/PyWavelets/pywt/pull/717>`__: CI: fix patterns for artifact downloads in Anaconda nightly wheels...
* `#719 <https://github.com/PyWavelets/pywt/pull/719>`__: CI: Build \`musllinux\` aarch64 and x86_64 wheels, and native...
* `#720 <https://github.com/PyWavelets/pywt/pull/720>`__: BLD: avoid warnings from including deprecated NumPy API
* `#721 <https://github.com/PyWavelets/pywt/pull/721>`__: Bump the github-actions group with 1 update
* `#723 <https://github.com/PyWavelets/pywt/pull/723>`__: MAINT: use \`numpy-config\` and fix support for numpy 2.0

v1.6.0rc1

14 Mar 09:53
v1.6.0rc1
Compare
Choose a tag to compare
v1.6.0rc1 Pre-release
Pre-release
PyWavelets 1.6.0rc1

This release is a minor update to 1.6.x. It adds support for NumPy 2.0,
which also keeping compatibility with NumPy 1.22-1.26. It requires
Cython 3.0; support for 0.29.x is dropped.

Other noteworthy improvements:

- Improved documentation for ``pywt.cwt``
- The documentation was migrated to the PyData Sphinx Theme and the content
  organization improved
- Releases on PyPI now include wheels for ``musllinux`` (x86-64 and aarch64)
- The test suite is now passing and tested in CI with Emscripten/Pyodide
- Nightly builds will be available at
  https://anaconda.org/scientific-python-nightly-wheels/PyWavelets/ going
  forward

Authors
=======

* Christian Clauss
* Ralf Gommers
* Agriya Khetarpal +
* Jarrod Millman
* Cora Schneck +
* Daniel Stephan +

A total of 6 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
This list of names is automatically generated, and may not be fully complete.

Issues closed for v1.6.0
------------------------

* `#623 <https://github.com/PyWavelets/pywt/issues/623>`__: pywavelets fails to install on Alpine Linux v3.15 ARM
* `#676 <https://github.com/PyWavelets/pywt/issues/676>`__: Enhanced documentation for CWT
* `#712 <https://github.com/PyWavelets/pywt/issues/712>`__: Upload dev builds for all supported platforms to anaconda.org
* `#718 <https://github.com/PyWavelets/pywt/issues/718>`__: Publish musllinux wheels again, and natively compile macOS arm64...

Pull requests for v1.6.0
------------------------

* `#678 <https://github.com/PyWavelets/pywt/pull/678>`__: Additional documentation for cwt (issue #676)
* `#684 <https://github.com/PyWavelets/pywt/pull/684>`__: Rename master branch to main
* `#687 <https://github.com/PyWavelets/pywt/pull/687>`__: Add linter
* `#701 <https://github.com/PyWavelets/pywt/pull/701>`__: Build and test PyWavelets Pyodide wheels in CI
* `#703 <https://github.com/PyWavelets/pywt/pull/703>`__: MAINT: add input validation to \`scales\` argument to \`cwt\`
* `#704 <https://github.com/PyWavelets/pywt/pull/704>`__: DOC: Migrate to \`pydata-sphinx-theme\`
* `#708 <https://github.com/PyWavelets/pywt/pull/708>`__: Keep GitHub Actions up to date with GitHub's Dependabot
* `#709 <https://github.com/PyWavelets/pywt/pull/709>`__: mymindstorm/setup-emscripten --> mymindstorm/setup-emsdk
* `#711 <https://github.com/PyWavelets/pywt/pull/711>`__: CI: tweaks to CI job triggers and names
* `#713 <https://github.com/PyWavelets/pywt/pull/713>`__: Bump the github-actions group with 5 updates
* `#714 <https://github.com/PyWavelets/pywt/pull/714>`__: Upload dev wheels to Anaconda.org + revamp wheels publishing...
* `#715 <https://github.com/PyWavelets/pywt/pull/715>`__: BLD: update build and runtime dependencies for numpy 2.0
* `#716 <https://github.com/PyWavelets/pywt/pull/716>`__: TST/CI: mark some tests as slow and avoid running them in wheel...
* `#717 <https://github.com/PyWavelets/pywt/pull/717>`__: CI: fix patterns for artifact downloads in Anaconda nightly wheels...
* `#719 <https://github.com/PyWavelets/pywt/pull/719>`__: CI: Build \`musllinux\` aarch64 and x86_64 wheels, and native...
* `#720 <https://github.com/PyWavelets/pywt/pull/720>`__: BLD: avoid warnings from including deprecated NumPy API
* `#721 <https://github.com/PyWavelets/pywt/pull/721>`__: Bump the github-actions group with 1 update
* `#723 <https://github.com/PyWavelets/pywt/pull/723>`__: MAINT: use \`numpy-config\` and fix support for numpy 2.0

v1.5.0

17 Nov 22:51
v1.5.0
Compare
Choose a tag to compare
PyWavelets 1.5.0

This release is a minor update to 1.4.x. It adds support for Python 3.12
and drops support for Python 3.8. It also adds support for Cython 3.0.

PyWavelets now uses Meson as its build system, and meson-python
as the build backend. This requires no changes from users, a
``pip install pywavelets`` will now use ``meson-python`` under
the hood.

Authors
=======

* Christian Clauss
* Ralf Gommers
* Gregory R. Lee
* Jarrod Millman +
* Evans Doe Ocansey +
* Ahmet Can Solak +
* Stefan van der Walt +

A total of 7 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
This list of names is automatically generated, and may not be fully complete.

Issues closed  for v1.5
-----------------------

* `#621 <https://github.com/PyWavelets/pywt/issues/621>`__: distutils was deprecated in Python 3.10

Pull requests for v1.5
----------------------

* `#667 <https://github.com/PyWavelets/pywt/pull/667>`__: BLD: switch to using Meson as the build system for PyWavelets
* `#669 <https://github.com/PyWavelets/pywt/pull/669>`__: DOC: update docs for setup.py removal, and fix ReadTheDocs build
* `#679 <https://github.com/PyWavelets/pywt/pull/679>`__: MAINT: fix warnings emitted by loading npy/npz data files
* `#680 <https://github.com/PyWavelets/pywt/pull/680>`__: CI: limit contourpy to <1.1, to avoid building win32 from source
* `#681 <https://github.com/PyWavelets/pywt/pull/681>`__: Update dependencies per SPEC 0
* `#682 <https://github.com/PyWavelets/pywt/pull/682>`__: Remove old travis references
* `#683 <https://github.com/PyWavelets/pywt/pull/683>`__: Test on Python 3.12
* `#685 <https://github.com/PyWavelets/pywt/pull/685>`__: Add spin as developer UI to meson
* `#688 <https://github.com/PyWavelets/pywt/pull/688>`__: AppVeyor: Upgrade to Visual Studio 2022 and use python-launcher
* `#690 <https://github.com/PyWavelets/pywt/pull/690>`__: Build Python 3.12 wheels
* `#691 <https://github.com/PyWavelets/pywt/pull/691>`__: Test on final releases on Python 3.12

v1.4.1

16 Sep 14:26
c3fc042
Compare
Choose a tag to compare
release v1.4.1, updating classifiers and python_requires in setup.py …

v1.4.0

15 Sep 15:38
Compare
Choose a tag to compare
add missing release note files

PyWavelets 1.3.0

11 Mar 16:34
v1.3.0
Compare
Choose a tag to compare

We are very pleased to announce the release of PyWavelets 1.3. This release is functionally the same as 1.2.0, but we have updated the set of binary wheels provided. Specifically we have added aarch64 wheels for Python 3.7 that were missing in 1.2.0 and have updated the versions of manylinux used for the linux wheels in a manner consistent with NumPy and SciPy. We have also dropped musllinux wheels which were present for some architectures in 1.2.0. We may add them again in the future if they are adopted by NumPy and there is a demand for this architecture.

full release notes

PyWavelets 1.2.0

09 Nov 00:55
v1.2.0
Compare
Choose a tag to compare

We are very pleased to announce the release of PyWavelets 1.2.

This release has new discrete wavelet transforms features incleading a series of multiresolution analysis functions (details below).

PyWavelets has dropped support for Python 3.5 and 3.6 and now supports Python 3.7-3.10.

We also now provide aarch64 linux wheels as well as universal2 and arm64 wheels that are compatible with Apple's M1 processors.

New features

  • There is a new series of multilevel stationary wavelet transforms (mra, mra2 and mran) suited for multiresolution analysis of 1D, 2D or nD signals, respectively. This MRA analysis is also known as the additive wavelet decomposition because the corresponding inverse functions (imra, imra2 or imran) reconstruct the original signal by simple addition of the components. These are a good alternative to the use of the existing SWT functions when it is important to have features aligned across wavelet scales (see the new demo in demo/mra_vs_swt.py).

  • There is now an n-dimensional implementation available for the wavelet packet transforms (see class WaveletPacketND).

Backwards incompatible changes

  • The image returned by pywt.data.camera has been replaced by a similar, CC0-licensed image because the original image was determined to only be licensed for non-commercial use. Any users who still need the prior camera image for non-commercial use can find it many places online by performing a web search for "cameraman test image".

Bugs Fixed

  • Add input length check in dwt_single for reflect modes.
  • Demos were updated for compatibility with recent Matplotlib versions.
  • Removed deprecated import from imp.

Other changes

  • PyWavelets has dropped support for Python 3.5 and 3.6 in this release.

Authors

  • ElConno +
  • Ralf Gommers
  • Gregory R. Lee
  • Jakub Mandula +
  • nperraud +
  • ossdev07 +

A total of 6 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
This list of names is automatically generated, and may not be fully complete.

PyWavelets 1.1.1

19 Oct 08:25
v1.1.1
Compare
Choose a tag to compare

This release is functionally identical to 1.1.0.

This release modified setup.py to mark the package as Python 3.5+ only so pip will not try to install 1.1.1 on older Python versions. To prevent pip from trying to install 1.1.0 on older Python, the source tarball for 1.1.0 was removed from PyPI.

PyWavelets 1.1.0

18 Oct 19:01
v1.1.0
Compare
Choose a tag to compare

PyWavelets 1.1.0

.. contents::

We are very pleased to announce the release of PyWavelets 1.1.

This release includes enhanced functionality for both the stationary wavelet
transforms (swt, swt2, swtn) as well as the continuous wavelet
transform (cwt). In addition, there are a handful of bug fixes as
described in more detail below.

This release has dropped Python 2.7 support and now requires Python >= 3.5.

In addition to these changes to the software itself, a paper describing
PyWavelets was recently published in The Journal of Open Source Software:
https://joss.theoj.org/papers/10.21105/joss.01237

New features

  • All swt functions now have a new trim_approx option that can be used
    to exclude the approximation coefficients from all but the final level of
    decomposition. This mode makes the output of these functions consistent with
    the format of the output from the corresponding wavedec functions.

  • All swt functions also now have a new norm option that, when set to
    True and used in combination with trim_approx=True, gives a partition
    of variance across the transform coefficients. In other words, the sum of
    the variances of all coefficients is equal to the variance of the original
    data. This partitioning of variance makes the swt transform more similar
    to the multiple-overlap DWT (MODWT) described in Percival and Walden's book,
    "Wavelet Methods for Time Series Analysis". (#476)

    A demo of this new swt functionality is available at
    https://github.com/PyWavelets/pywt/blob/master/demo/swt_variance.py

  • The continuous wavelet transform (cwt) now offers an FFT-based
    implementation in addition to the previous convolution based one. The new
    method argument can be set to either 'conv' or 'fft' to select
    between these two implementations. (#490).

  • The cwt now also has axis support so that CWTs can be applied in
    batch along any axis of an n-dimensional array. This enables faster batch
    transformation of signals. (#509)

Backwards incompatible changes

  • When the input to cwt is single precision, the computations are now
    performed in single precision. This was done both for efficiency and to make
    cwt handle dtypes consistently with the discrete transforms in
    PyWavelets. This is a change from the prior behaviour of always performing
    the cwt in double precision. (#507)

  • When using complex-valued wavelets with the cwt, the output will now be
    the complex conjugate of the result that was produced by PyWavelets 1.0.x.
    This was done to account for a bug described below. The magnitude of the
    cwt coefficients will still match those from previous releases. (#439)

Bugs Fixed

  • For a cwt with complex wavelets, the results in PyWavelets 1.0.x releases
    matched the output of Matlab R2012a's cwt. Howveer, older Matlab releases
    like R2012a had a phase that was of opposite sign to that given in textbook
    definitions of the CWT (Eq. 2 of Torrence and Compo's review article, "A
    Practical Guide to Wavelet Analysis"). Consequently, the wavelet coefficients
    were the complex conjugates of the expected result. This was validated by
    comparing the results of a transform using cmor1.0-1.0 as compared to the
    cwt implementation available in Matlab R2017b as well as the function
    wt.m from the Lancaster University Physics department's
    MODA toolbox <https://github.com/luphysics/MODA>_. (#439)

  • For some boundary modes and data sizes, round-trip dwt/idwt can
    result in an output that has one additional coefficient. Prior to this
    relese, this could cause a failure during WaveletPacket or
    WaveletPacket2D reconstruction. These wavelet packet transforms have now
    been fixed and round-trip wavelet packet transforms always preserve the
    original data shape. (#448)

  • All inverse transforms now handle mixed precision coefficients consistently.
    Prior to this release some inverse transform raised an error upon
    encountering mixed precision dtypes in the wavelet subbands. In release 1.1,
    when the user-provided coefficients are a mixture of single and double
    precision, all coefficients will be promoted to double precision. (#450)

  • A bug that caused a failure for iswtn when using user-provided axes
    with non-uniform shape along the transformed axes has been fixed. (#462)

Other changes

  • The PyWavelet test suite now uses pytest rather than nose. (#477)

  • Cython code has been updated to use language_level=3. (#435)

  • PyWavelets has adopted the SciPy Code of Conduct. (#521)