Metadata-Version: 2.4
Name: ezmsg-sigproc
Version: 2.23.0
Summary: Timeseries signal processing implementations in ezmsg
Author-email: Griffin Milsap <griffin.milsap@gmail.com>, Preston Peranich <pperanich@gmail.com>, Chadwick Boulay <chadwick.boulay@gmail.com>, Kyle McGraw <kmcgraw@blackrockneuro.com>
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.10
Requires-Dist: array-api-compat>=1.11.1
Requires-Dist: ezmsg-baseproc>=1.8.0
Requires-Dist: ezmsg[axisarray]>=3.9.0
Requires-Dist: mlx>=0.18.0; sys_platform == 'darwin' and platform_machine == 'arm64'
Requires-Dist: numba>=0.61.0
Requires-Dist: numpy>=1.26.0
Requires-Dist: pywavelets>=1.6.0
Requires-Dist: scipy>=1.13.1
Requires-Dist: sparse>=0.15.4
Description-Content-Type: text/markdown

# ezmsg-sigproc

Signal processing primitives for the [ezmsg](https://www.ezmsg.org) message-passing framework.

## Features

* **Filtering** - Chebyshev, comb filters, and more
* **Spectral analysis** - Spectrogram, spectrum, and wavelet transforms
* **Resampling** - Downsample, decimate, and resample operations
* **Windowing** - Sliding windows and buffering utilities
* **Math operations** - Arithmetic, log, abs, difference, and more
* **Signal generation** - Synthetic signal generators
* More! Brows the API documentation for more details.

All modules use [`AxisArray`](https://www.ezmsg.org/ezmsg/reference/API/axisarray.html) as the primary data structure for passing signals between components. The default data backend is NumPy, but other backends are supported via the Array API such as CuPy and MLX.

## Installation

Install from PyPI:

```bash
pip install ezmsg-sigproc
```

Or install from GitHub for the latest development version:

```bash
pip install git+https://github.com/ezmsg-org/ezmsg-sigproc.git@dev
```

## Documentation

Full documentation is available at [ezmsg.org](https://www.ezmsg.org).

## Development

We use [`uv`](https://docs.astral.sh/uv/) for development.

1. Fork and clone the repository
2. `uv sync` to create a virtual environment and install dependencies
3. `uv run pre-commit install` to set up linting and formatting hooks
4. `uv run pytest tests` to run the test suite
5. Submit a PR against the `dev` branch
