Changes and updates to EMD are tracked by version on this page. The format of this changelog is (mostly) based on Keep a Changelog, and this the EMD package uses Semantic Versioning.

Changes should be categorised under the following types:

  • Added for new features.

  • Changed for changes in existing functionality.

  • Deprecated for soon-to-be removed features.

  • Removed for now removed features.

  • Fixed for any bug fixes.

  • Security in case of vulnerabilities.

Where appropriate, links to specific Issues & Merge Requests on our gitlab page.

Development Version#

Work in progress…

git clone


  • Drop version pin on numpy !88

  • Move imports to optimise speed of initial imports !88

  • Change version management to use dedicated version file and drop pkg_resources !88


  • Support for python 3.6 (


  • Support for unequal segment lengths in assess_harmonic_criteria !89

Stable Versions#


pip install emd==0.5.5

Released 2022-05-27


  • Latex rendering in website an a couple of doc fixes.


pip install emd==0.5.4

Released 2022-05-20


  • Functions for assessing the harmonic relationship between IMFs !82


  • Documentation and bug fixes for Hilbert-Marginal spectrum !77

  • Fix logic in wrap_verbose to avoid pointless ‘level unchanged’ warning !79

  • Add additional input checking and nan-avoidance in emd.imftools.wrap phase !79

  • Equation brakets typo in Abreu2010 simulator & docstring improvements !81


  • New imf plotting tool - puts figure into single axes and adds more customisation !78

  • Added minimum cycle length option to cycle detection and additional checks to phase_align !80


pip install emd==0.5.3

Released 2022-02-11


  • Support for python3.10 and numpy<1.21 !76

  • Additional installation instructions for conda-forge and developer details for making releases on website.

  • Functions for assessing sift quality - pseudo_mode_mixing_index and check_decreasing_freq 5e59dc2f

  • Work in progress started on circular statistics


  • Restructure of low-level functions to improve internal importing chain f80fb824

    • imftools submodule containing general purpose functions intended to be run on IMFs and their instantaneous frequency stats.

    • simulations submodule containing data simulators previously in utils and the harmonic tool

    • _sift_core submodule containing the low level sifting functions that might be imported into other submodules.

    • Website and documentation updated to reflect changes


  • utils submodule deleted and functions moved into imftools, simulate, and support.


  • Hilbert Marginal spectrum bug fixes #60

  • Fix y-axis scaling in Hilbert-Huang tutorial 8cc65488

  • Correct extrema now returned when finding troughs in ‘rilling’ mode 5dd9aff2


pip install emd==0.5.2

Released 2022-01-13


  • New tutorial on harmonic structures and instantaneous frequency !74


pip install emd==0.5.1

Released 2021-12-17


This release fixes a bug with the initial v0.5.0 release.


pip install emd==0.5.0

Released 2021-12-17


This release contains several breaking changes in the emd.spectra submodule particularly in the emd.spectra.hilberthuang and emd.spectra.holospectrum functions. Please see the relevant docstrings for a review of new API.


  • Implementation of the Iterated Mask Sift from @marcofabus !69

  • Support for Python 3.9 - requirements updated and test build added !62

  • Dependancy on Sparse for spectrum computation ( !70

  • New citations page on website (and assorted website/reference fixups) !60


  • BREAKING: emd.spectra.hilberthuang and emd.spectra.holospectrum API changed, also now return frequency bin vectors. !70

  • Major refector of spectrum code !70

  • Major refactor of extrema padding underlying the sift !71


  • Average over only the ensembles with the modal number of IMFs in ensemble_sift, previously there could be an error due to difference in nimfs between ensembles !63

  • Fix pyyaml dependency for google-colab import !64

  • Fix case where mask sift could drop some options !66

  • Fix bug in energy ratio sift stopping method 95295a8c

  • Fix bug in zero-crossing count mask frequency selection method fe2605c2


  • emd.spectra.frequency_stats removed - replaced by emd.spectra.frequency_transform

  • emd.spectra.hilberthuang_1d merged into emd.spectra.hilberthuang


pip install emd==0.4.0

Released 2021-03-30


Many changes in this revision come from the review process at JOSS


  • New tutorials

  • Second layer mask sift function 65a05dd2

  • Add html printing functionality for SiftConfig 5c57781e

  • Update contribution and installation details on website - add accordions for better readability !53

  • Add new plotting functionality for HHT and Holospectra !53

  • Show warning when max_imfs is very high compared to length of time-series 4cd15291


  • Major refactor in handling of cycles analysis !56

    • Introduce Cycles class

    • Introduce _cycles_support module

  • Renamed ‘References’ webpage to ‘API’ d8fe93b5


  • Widespread fixing of typos and mistakes in documentation & website !52

  • Make docstrings pydocstyle compliant and add pydocstyle conventions !53

  • Large number of pylint recommended fixes 271d7937

  • Indexing typo fixed in bin_by_phase c5679432

  • Improve label alignments in plot_imfs !54


pip install emd==0.3.3

Released 2021-02-04


  • New function for computing summary stats from chains of cycles (from marcoFabus) !46


  • Major updates to tutorials !40

    • Binder notebooks added

    • New sifting tutorials added


  • Replaced missing dependencies in !42


pip install emd==0.3.2

Released 2020-11-29


  • Add input array shape ensurance functions and start to use in sift & cycle submodules !26

  • Add more stopping criteria to sift module !27

    • Rilling et al and fixed iterations IMF stopping criteria

    • Energy threshold sift stopping criterion


  • Refactor some options extrema detection functions !29

  • Sift throws an error if an IMF doesn’t converge after a specified maximum number of iterations.

  • Refactor mask generation in mask sift. Now specifies N masks of different phases and has options for parallel processing.

  • SiftConfig yaml file also stores which type of sift the config is for !35

  • 18% increase in testing coverage (to 75% total) !30


  • emd.spectra.frequency_stats renamed to emd.spectra.frequency_transform. Original func kept for now.


pip install emd==0.3.1

Released 2020-09-06


  • This changelog !18

  • submodule with some helper functions for checking installs and running tests !20

  • envs subdir containing anaconda install environment config files !21

  • Options for reading and writing sift configs to yaml format !24

  • major update to webpage !12

    • Reformat page to bootstrap

    • Add & update the tutorials

    • New landing page


  • Input array dimensions in phase_align clarified and fixed up ef28b36c

  • Extrema opts were dropped in get_next_imf !23


  • get_control_points internal refector af153ed6


pip install emd==0.3.0

Released on 2020-07-22


  • get_cycle_stat refectored to allow general numpy and user-specified metrics to be computed

  • Logger coverage increased, particularly in

    • Logger exit message added


  • Major SiftConfig refactor - API & syntax now much cleaner


pip install emd==0.2.0

Released 2020-06-05


  • Tutorials on the sift, hilbert-huang and holospectrum analyses.

  • Parabolic extrema interpolation

  • Average envelope scaling in sift

  • Testing expanded to include python 3.5, 3.6, 3.7 & 3.8


  • API in sift functions updated for compatabillity with new SiftConfig

    • Expose options for extrema padding to top level sift function

    • Sift relevant util functions moved into submodule

  • Masked sift functions merged into single function

  • get_cycle_chain refactor to cleaner internal syntax


pip install emd==0.1.0

Released 2019-12-10


  • Everything