PyGSP: Graph Signal Processing in Python

https://readthedocs.org/projects/pygsp/badge/?version=latest https://img.shields.io/travis/epfl-lts2/pygsp.svg https://img.shields.io/coveralls/epfl-lts2/pygsp.svg https://img.shields.io/pypi/v/pygsp.svg https://img.shields.io/pypi/l/pygsp.svg https://img.shields.io/pypi/pyversions/pygsp.svg https://img.shields.io/github/stars/epfl-lts2/pygsp.svg?style=social

The PyGSP is a Python package to ease Signal Processing on Graphs (a Matlab counterpart exists). It is a free software, distributed under the BSD license, and available on PyPI. The documentation is available on Read the Docs and development takes place on GitHub.

This example demonstrates how to create a graph, a filter and analyse a signal on the graph.

>>> import pygsp
>>> G = pygsp.graphs.Logo()
>>> f = pygsp.filters.Heat(G)
>>> Sl = f.analysis(G.L.todense(), method='cheby')

Features

This package facilitates graph constructions and give tools to perform signal processing on them.

A whole list of pre-constructed graphs can be used as well as core functions to create any other graph among which:

- Neighest Neighbor Graphs
  - Bunny
  - Cube
  - Sphere
  - TwoMoons
  - ImgPatches
  - Grid2dImgPatches
- Airfoil
- BarabasiAlbert
- Comet
- Community
- DavidSensorNet
- ErdosRenyi
- FullConnected
- Grid2d
- Logo GSP
- LowStretchTree
- Minnesota
- Path
- RandomRegular
- RandomRing
- Ring
- Sensor
- StochasticBlockModel
- SwissRoll
- Torus

On these graphs, filters can be applied to do signal processing. To this end, there is also a list of predefined filters on this toolbox:

- Abspline
- Expwin
- Gabor
- HalfCosine
- Heat
- Held
- Itersine
- MexicanHat
- Meyer
- Papadakis
- Regular
- Simoncelli
- SimpleTf

Installation

The PyGSP is available on PyPI:

$ pip install pygsp

Contributing

See the guidelines for contributing in CONTRIBUTING.rst.

Acknowledgments

The PyGSP was started in 2014 as an academic open-source project for research purpose at the EPFL LTS2 laboratory. This project has been partly funded by the Swiss National Science Foundation under grant 200021_154350 “Towards Signal Processing on Graphs”.