Python Package for Iterative Filtering decomposition methods
Project description
FAST ITERATIVE FILTERING - python package
This package contains the python classes and methods for the Iterative Filtering (IF), Fast Iterative Filtering (FIF), Multidimensional Iterative Filtering (MIF), the Multivariate Iterative Filtering (MvFIF) and the Multivariate Fast Iterative Filtering (MvFIF) algorithms.
Definitions
-
IF: Iterative Filtering is an adaptive method for decomposing a 1D signal into a set of Intrinsic Mode Components (IMC) plus a trend. These components are simple oscillating functions whose average frequency is well behaved and form a complete and nearly orthogonal basis of the original signal. In this repository, IF is made fast by using FFT convolution (similar to FIF but without the problem of having a periodic signal).
-
FIF: builds on iterative filtering and combines it with FFT to make it faster. It requires, however, periodic signals.
-
MIF: it is used to decompose multidimensional signals (currently only 2D and only defined on periodic domains). Other versions (e.g. MIF multidimensional 3D) if present, are currently experimental and should be used with caution.
-
MvFIF: is the multivariate version of FIF, designed to decompose multichannel signals at once (e.g. components of a vector). It requires, however, periodic signals.
-
MvIF: Same as MvFIF, but without the problem of having a periodic signal.
-
IMFogram: the IMFogram method, is contained in fifpy.IMFogram_v1. This program is experimental and should be used with care.
Notes
This repository is a complete rewriting of the original matlab codes by A. Cicone.
Dependencies
The package has been written and tested in python3.8, should be compatible with python <3.13, due to requirement from numba.
Dependencies: scipy, numpy, numba, scikit-learn, attrdict, matplotlib
Install
The package is available on PyPI. To install it simply type
pip install iterativefiltering
Examples
#create the signal to be analyzed
import numpy as np
x = np.linspace(0,2*np.pi,100,endpoint=False)
y = np.sin(2*x) + np.cos(10*x+2.3)
#do the FIF analysis
import fifpy
fif=fifpy.IF()
fif.run(y)
#plot the results
import pylab as plt
plt.ion()
plt.figure()
plt.plot(x,y,label='signal')
[plt.plot(x,fif.data['IMC'][i,:],label = 'IMC#'+str(i)) for i in range(fif.data['IMC'].shape[0])]
plt.legend(loc='best')
Contacts
fifpy has been written and is maintained by Emanuele Papini - INAF (emanuele.papini@inaf.it).
The original code and algorithm conceptualization are authored by Antonio Cicone - University of L'Aquila (antonio.cicone@univaq.it).
Please feel free to contact us would you need any help in properly using fifpy and to report bug issues.
Links
http://people.disim.univaq.it/~antonio.cicone/Software.html
Github: https://github.com/EmanuelePapini/fifpy
References
-
A. Cicone, H. Zhou. Numerical Analysis for Iterative Filtering with New Efficient Implementations Based on FFT. Numerische Mathematik, 147 (1), pages 1-28, 2021. doi: 10.1007/s00211-020-01165-5
-
A. Cicone and E. Pellegrino. Multivariate Fast Iterative Filtering for the decomposition of nonstationary signals. IEEE Transactions on Signal Processing, Volume 70, pages 1521-1531, 2022. doi: 10.1109/TSP.2022.3157482
-
A. Cicone, W. S. Li, H. Zhou. New theoretical insights in the decomposition and time-frequency representation of nonstationary signals: the IMFogram algorithm. Applied and Computational Harmonic Analysis, 71, 101634, 2024. doi: 10.1016/j.acha.2024.101634
-
A. Cicone, H. Zhou. Multidimensional Iterative Filtering method for the decomposition of high-dimensional non-stationary signals. Cambridge Core in Numerical Mathematics: Theory, Methods and Applications, Volume 10, Issue 2, Pages 278-298, 2017. doi: 10.4208/nmtma.2017.s05
-
E. Papini et al. Multidimensional Iterative Filtering: a new approach for investigating plasma turbulence in numerical simulations. Journal of Plasma Physics, Volume 86, Issue 5, 871860501, 2020. doi:10.1017/S0022377820001221
-
E. Papini et al. Spacetime Hall-MHD Turbulence at Sub-ion Scales: Structures or Waves? The Astrophysical Journal Letters, 917:L12 (7pp), 2021. doi: 10.3847/2041-8213/ac11fd
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iterativefiltering-1.0.2.tar.gz.
File metadata
- Download URL: iterativefiltering-1.0.2.tar.gz
- Upload date:
- Size: 294.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
02a89ea3a05aaddf3497a9928da515e4e5a42ba4b1e4868dbc80f03362733deb
|
|
| MD5 |
4dd9a1cdcd0ff9f9c741bd5bc967dd3b
|
|
| BLAKE2b-256 |
b762de8e4f7bff073aad6a5ce86fc0d3988bbabb1016000a153bd95f2f366f88
|
File details
Details for the file iterativefiltering-1.0.2-py3-none-any.whl.
File metadata
- Download URL: iterativefiltering-1.0.2-py3-none-any.whl
- Upload date:
- Size: 304.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c45dc9154d8f0e182ed004b7630c2da2e29e43573450ba9d2a39ad47cdaa5c28
|
|
| MD5 |
6ccb6c34e536d3d68cf275d7d462c569
|
|
| BLAKE2b-256 |
18cffc588389ec1ca0e74f8a084960239026fd2224a639df54b36aec6115d665
|