Skip to main content

Topological Signal Compression

Project description

A persistent homology-based signal compression method.

For background information, see:

Koplik, Gary, et al. "Topological Simplification of Signals for Inference and Approximate Reconstruction." 2023 IEEE Aerospace Conference. IEEE, 2023.

The paper is also available on arXiv.

Installation

Installing from PyPI

Base Package

The base package can be installed via PyPI by running:

pip install topological-signal-compression

which will only install the dependencies that support the TSC compression and reconstruction algorithms.

[extras] Installation

There is also an option to install additional pip dependencies to support running:

  • Counterfactual signal compression algorithms.
  • Data readers.
  • Visualization of persistence diagrams.

These extra dependencies can be installed by running:

pip install topological-signal-compression[extras]
WARNING: additional [extras] dependencies that cannot be installed with pip

Note, that the counterfactual compression code, specifically the Opus compression method, also depends on installing the opus-tools and ffmpeg packages, both of which are available for conda installation by running:

conda install -c conda-forge opus-tools
conda install -c conda-forge ffmpeg

from within a conda environment. There are other unix-equivalent installations that can be done to maintain functionality, but we only test against the conda-based installation.

Development Environment

To install the conda environment and the jupyter kernel with the full development environment, clone the repo and run:

cd path/to/topological-signal-compression
bash install.sh

Note, this installation script tries to use mamba (for faster installation), but falls back to conda if mamba is not available.

To uninstall the environment and kernel, be sure to deactivate the conda environment, then run:

cd path/to/topological-signal-compression
bash uninstall.sh

Documentation

Once the repo is cloned, sphinx documentation can be built after installing the conda environment and installing the [docs] dependencies:

source activate tsc
cd path/to/topological-signal-compression
pip install -e .[extras,docs]
bash build_sphinx_docs.sh

It can also be built after installing the [docs] version of the code from PyPI:

pip install topological-signal-compression[extras,docs]
cd path/to/topological-signal-compression
bash build_sphinx_docs.sh

Then, open up <path/to/topological-signal-compression>/public/index.html in a web browser to view the documentation.

Notebooks

All jupyter notebooks are contained in the ./notebooks directory. These are tested to make sure they run end-to-end without error, and can be run in the Python (tsc) kernel that is created by ./install.sh. These notebooks are also embedded in the sphinx documentation (see the "Documentation" section for more information).

Testing

Testing is broken into several sets of tests. There are unit tests on the code as well as end-to-end tests on the maintained jupyter notebooks in ./notebooks.

Note, running the tests requires additional dependencies. These are built into the conda environment (tsc.yml) installed via install.sh, or the testing dependencies can instead be installed by running:

pip install topological-signal-compression[testing]

Once the testing dependencies are installed, there are several options for testing.

To run the unit tests on the full topological-signal-compression[extras] package (including the counterfactual compression algorithms, keep in mind the "WARNING" section above), run:

cd path/to/topological-signal-compression
pytest

To run the unit tests on only the topological-signal-compression base installation:

cd path/to/topological-signal-compression
pytest -c tests/pytest_tsc_base_only.ini

To run the notebooks tests:

cd path/to/topological-signal-compression
pytest -c tests/pytest_notebooks.ini

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

topological_signal_compression-0.11.2.tar.gz (188.6 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file topological_signal_compression-0.11.2.tar.gz.

File metadata

File hashes

Hashes for topological_signal_compression-0.11.2.tar.gz
Algorithm Hash digest
SHA256 05620480d2ec1409bcb35630c0f4b9d247bd9b4d963ae2e1c4ac23bfa931310c
MD5 3e24d3ba514416c90cc05a3803ab10a6
BLAKE2b-256 36ff27199613eb58887a20ff23dbb2138f439bba63d31cb67d259492842652b0

See more details on using hashes here.

File details

Details for the file topological_signal_compression-0.11.2-py3-none-any.whl.

File metadata

File hashes

Hashes for topological_signal_compression-0.11.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3fbe047fe166928465b4b4fb422a3287f70d5de75c026ac969a957028647bf1e
MD5 c46e992dfcbc5006369f7159c2ade9e3
BLAKE2b-256 e9cddc4f796822c4942e14f7f93c6799a75c888b4d82fc3b373829c8f5943e1b

See more details on using hashes here.

Supported by

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