Skip to main content

Sparse Tools for the Spectral Graph Wavelet Transformation and Graph Convolution

Project description

PyPI Version Python Version License

A high-performance Python library for sparse Graph Signal Processing (GSP) and Spectral Graph Wavelet Transforms (SGWT). This package leverages the CHOLMOD library for efficient sparse direct solvers, providing significant speedups over traditional dense or iterative methods for large-scale graph convolution.

Key Features

  • High-Performance Sparse Solvers: Direct integration with the CHOLMOD library for optimized sparse Cholesky factorizations and linear system solves.

  • Generalized Graph Convolution: Support for arbitrary spectral kernels via rational approximation (Kernel Fitting) and standard analytical filters (low-pass, band-pass, high-pass).

  • Dynamic Topology Support: Specialized routines for graphs with evolving structures, utilizing efficient rank-1 updates for real-time topology changes.

  • Resource-Aware Execution: Context-managed memory allocation and workspace reuse to minimize overhead in high-throughput applications.

  • Integrated Graph Repository: Built-in access to standardized graph Laplacians and signals from power systems and infrastructure networks.

Installation

You can install sgwt from the Python Package Index (PyPI):

pip install sgwt

Usage Example

Here is a quick example of applying a band-pass filter to an impulse signal on the built-in Texas grid Laplacian.

import sgwt

# 1. Load a built-in graph Laplacian, which defines the graph's topology.
L = sgwt.DELAY_TEXAS

# 2. Create a vertex-domain signal. Here, a Dirac impulse on the 600th vertex.
#    The `impulse` helper function ensures the required column-major memory order.
signal = sgwt.impulse(L, n=600)

# 3. Use the static convolution context manager. This performs a one-time
#    symbolic factorization of the Laplacian for efficient repeated solves.
with sgwt.Convolve(L) as conv:
    # 4. Apply an analytical band-pass filter. The scale parameter controls
    #    the filter's center frequency.
    filtered_signals = conv.bandpass(signal, scales=[10.0])

# 5. The result is a list of filtered signals, one for each input scale.
result = filtered_signals[0]

print(f"Graph has {L.shape[0]} vertices.")
print(f"Signal on vertex 600, shape: {signal.shape}")
print(f"Filtered signal shape: {result.shape}")

Documentation

For detailed usage, API reference, and theoretical background, please visit the documentation website.

Citation

If you use this library in your research, please cite it. The GitHub repository includes a CITATION.cff file that provides citation metadata. On GitHub, you can use the “Cite this repository” button on the sidebar to get the citation in your preferred format (including BibTeX).

For convenience, the BibTeX entry for the associated paper is:

@inproceedings{lowery-sgwt-2026,
  title={Using Spectral Graph Wavelets to Analyze Large Power System Oscillation Modes},
  author={Lowery, Luke and Baek, Jongoh and Birchfield, Adam},
  year={2026}
}

Author

This module was developed by Luke Lowery during his PhD studies at Texas A&M University. You can learn more on his research page or view his publications on Google Scholar.

An alternative implementation in Julia is also available, which takes advantage of native SuiteSparse support.

Acknowledgements

  • The core performance of this library relies on the CHOLMOD library from SuiteSparse, developed by Dr. Tim Davis at Texas A&M University.

  • The graph laplacians used in the examples are derived from the synthetic grid repository, made available by Dr. Adam Birchfield at Texas A&M University.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sgwt-0.3.2.tar.gz (13.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sgwt-0.3.2-py3-none-any.whl (14.5 MB view details)

Uploaded Python 3

File details

Details for the file sgwt-0.3.2.tar.gz.

File metadata

  • Download URL: sgwt-0.3.2.tar.gz
  • Upload date:
  • Size: 13.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sgwt-0.3.2.tar.gz
Algorithm Hash digest
SHA256 4dccc30f95f16f79e141c706f54fa61c60c20ff2e515714fe77b70038c03e4e7
MD5 507ade1e86e8101d18d601987c232978
BLAKE2b-256 c4e6bcf51a030a88a4ba5922a88f0970c436877b53fde7dff01f1014428a8f3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for sgwt-0.3.2.tar.gz:

Publisher: python-publish.yml on lukelowry/sgwt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sgwt-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: sgwt-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 14.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sgwt-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f37b6b0e36f39017616f7a7888b20f991922a5d440f9fcbe2912446e9629377c
MD5 80fb3e0e2b8f3fba6aecb9a7fd0bb7de
BLAKE2b-256 b360869b33195c8732c0fe772c096034f8517509a8de0ace7d05988afa5a23f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for sgwt-0.3.2-py3-none-any.whl:

Publisher: python-publish.yml on lukelowry/sgwt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page