This repository contains the implementation of the Graph Iterative Filtering (Graph IF) algorithms, an extension of the Iterative Filtering method to graph signals. The Graph IF algorithms are designed to decompose graph signals into Intrinsic Mode Functions (IMFs) based on the graph structure.
This repository contains two algorithms:
- The Graph Fourier Transform Iterative Filtering (GFT IF) algorithm, which operates in the graph spectral domain.
- The Distance Based Iterative Filtering (DB IF) algorithm, which operates in the vertex domain using windows empirically defined based on a distance on the graph.
Furthermore, some example scripts are provided to demonstrate the usage of the Graph IF algorithms. Those scripts are named as in the related paper:
Graph Iterative Filtering methods for the analysis of nonstationary signals on graphs
The root directory contains example scripts to demonstrate the Graph IF algorithms.
The graphIF module with the implementation of the algorithms and related utilities is located in the src/graphIF directory.
To run the example scripts, ensure you have the necessary dependencies installed (see Usage section).
The example scripts are named as the examples in the paper plus the name of the algorithm used. For instance:
example_1_DB_IF.py: DB-IF algorithm applied to a random ring graph (Example 1 in the paper).example_2_GFT_IF.py: GFT-IF algorithm applied to the Delaunay triangulation of random points in a 2D square (Example 2 in the paper).example_3_DB_IF.py: DB-IF algorithm applied to seismic data (Example 3 in the paper).example_4_GFT_IF.py: GFT-IF algorithm applied to the Total Electron Content (TEC) over Italy (Example 4 in the paper).
This repository also includes the graphIF module, which contains the implementation of the Graph IF algorithms and related utilities. The module is located in src/graphIF.
First, clone the repository:
git clone git@github.com:Giuseppe499/GraphIF.gitThen, install the requirements which are listed in the pyproject.toml file.
You can use uv (recommended) or pip. We also suggest using a virtual environment to manage dependencies.
run
uv syncor
pip install .To run the example scripts, activate the virtual environment (if used) and execute the scripts using Python:
python example_1_DB_IF.py