Skip to content

Python package for implementing graph signal processing on extension (higher dimensional) algebras (currently, quaternions).

License

Notifications You must be signed in to change notification settings

gboaviagem/gspx

Repository files navigation

gspx: Graph Signal Processing on eXtension algebras

coverage

Python package for implementing graph signal processing on extension (higher dimensional) algebras (currently, only quaternions).

Higher-dimensional algebras over the real numbers, beyond the complex numbers, present the benefit of encoding many features (dimensions, channels, you name it) within a single element. As such, differently from vector spaces, algebraic operations deal with all these features holistically, at once.

This package aims to implement an extension of graph signal processing (GSP) to higher-dimensional algebras, starting with quaternions, aiming towards dealing with signals having elements in a Clifford algebra.

This is part of my doctorate research at the Federal University of Pernambuco (UFPE), concluded in December 23th 2022, after the Thesis Defense and subsequent declaration of approval with no conditions. See the Thesis here.

Getting started

Check the links in the gspx-streamlit-apps repository, to see an online showcase of the gspx tools. Feel free to check also the source code in the repository, to verify how each app calls the gspx methods. The apps cover practical examples on Quaternion Graph Signal Processing, regarding

  • Graph and signal visualization,
  • QGFT and spectral analysis,
  • approximation of ideal filters with FIR LSI filters designed via QLMS.

For a robust example on QGFT and compression of a quaternion graph signal in a 1000-nodes graph using gspx, check this Google Colab notebook.

For a quick and simpler introduction on how to use gspx classes for quaternion matrices, check this tutorial.

Instalation

It is recommended to create a separated python environment to run gspx. If one chooses to install Miniconda (my personal favorite), an appropriate environment is created and open through the lines

conda create --name gspx_env python=3.7
conda activate gspx_env

Then, the packages can be pip-installed from Github,

python -m pip install git+https://github.com/gboaviagem/gspx@main

or one may choose to simply install its dependencies:

git clone https://github.com/gboaviagem/gspx
cd gspx
bash install.sh

Running unit tests locally

One may run the unit tests by using pytest:

python -m pytest --cov=gspx .

To update the coverage badge, run

rm coverage.svg && coverage-badge -o coverage.svg

Update version in production

Update setup.py version and packages and generate package by running:

python setup.py sdist bdist_wheel

Acknowledgements

The pre-commit hook used to verify codestyle was copied from https://github.com/cbrueffer/pep8-git-hook.

About

Python package for implementing graph signal processing on extension (higher dimensional) algebras (currently, quaternions).

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published