Metadata-Version: 2.4
Name: sigkit
Version: 0.0.2
Summary: The Python DSP Toolkit
Author: Isaiah Harville, Joshua Payne
License-Expression: MIT
Project-URL: Homepage, https://github.com/IsaiahHarvi/SigKit
Project-URL: Documentation, https://isaiahharvi.github.io/SigKit/api/modules.html
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: aiohappyeyeballs==2.6.1
Requires-Dist: aiohttp==3.12.4
Requires-Dist: aiosignal==1.3.2
Requires-Dist: annotated-types==0.7.0
Requires-Dist: asttokens==3.0.0
Requires-Dist: attrs==25.3.0
Requires-Dist: certifi==2025.4.26
Requires-Dist: charset-normalizer==3.4.2
Requires-Dist: click==8.2.1
Requires-Dist: colorama==0.4.6
Requires-Dist: contourpy==1.3.2
Requires-Dist: cycler==0.12.1
Requires-Dist: docker-pycreds==0.4.0
Requires-Dist: executing==2.2.0
Requires-Dist: filelock==3.18.0
Requires-Dist: fonttools==4.58.0
Requires-Dist: frozenlist==1.6.0
Requires-Dist: fsspec==2025.5.1
Requires-Dist: gitdb==4.0.12
Requires-Dist: gitpython==3.1.44
Requires-Dist: icecream==2.1.4
Requires-Dist: idna==3.10
Requires-Dist: iniconfig==2.1.0
Requires-Dist: jinja2==3.1.6
Requires-Dist: kiwisolver==1.4.8
Requires-Dist: lightning==2.5.1.post0
Requires-Dist: lightning-utilities==0.14.3
Requires-Dist: markupsafe==3.0.2
Requires-Dist: matplotlib==3.10.3
Requires-Dist: mpmath==1.3.0
Requires-Dist: multidict==6.4.4
Requires-Dist: narwhals==1.42.0
Requires-Dist: networkx==3.4.2
Requires-Dist: numpy==2.2.6
Requires-Dist: packaging==24.2
Requires-Dist: pillow==11.2.1
Requires-Dist: platformdirs==4.3.8
Requires-Dist: plotly==6.1.2
Requires-Dist: pluggy==1.6.0
Requires-Dist: propcache==0.3.1
Requires-Dist: protobuf==6.31.1
Requires-Dist: psutil==7.0.0
Requires-Dist: pydantic==2.11.5
Requires-Dist: pydantic-core==2.33.2
Requires-Dist: pygments==2.19.1
Requires-Dist: pyparsing==3.2.3
Requires-Dist: pytest==8.3.5
Requires-Dist: python-dateutil==2.9.0.post0
Requires-Dist: pytorch-lightning==2.5.1.post0
Requires-Dist: pyyaml==6.0.2
Requires-Dist: requests==2.32.3
Requires-Dist: ruff==0.11.11
Requires-Dist: sentry-sdk==2.29.1
Requires-Dist: setproctitle==1.3.6
Requires-Dist: six==1.17.0
Requires-Dist: smmap==5.0.2
Requires-Dist: sympy==1.14.0
Requires-Dist: torch==2.7.0
Requires-Dist: torchmetrics==1.7.2
Requires-Dist: torchvision==0.22.0
Requires-Dist: tqdm==4.67.1
Requires-Dist: typing-extensions==4.13.2
Requires-Dist: typing-inspection==0.4.1
Requires-Dist: urllib3==2.4.0
Requires-Dist: wandb==0.19.11
Requires-Dist: yarl==1.20.0
Provides-Extra: docs
Requires-Dist: sphinx; extra == "docs"
Requires-Dist: piccolo_theme; extra == "docs"
Requires-Dist: tomli; extra == "docs"
Dynamic: license-file

# [SigKit](https://github.com/users/IsaiahHarvi/projects/5)

[![Version](https://img.shields.io/github/v/release/IsaiahHarvi/SigKit.svg)](https://github.com/IsaiahHarvi/SigKit/releases)
[![Tests Passing](https://img.shields.io/github/actions/workflow/status/IsaiahHarvi/SigKit/test.yaml)](https://github.com/IsaiahHarvi/SigKit/actions?query=workflow%3Apy-test)
[![GitHub Contributors](https://img.shields.io/github/contributors/IsaiahHarvi/SigKit.svg)](https://github.com/IsaiahHarvi/SigKit/graphs/contributors)
[![Issues](https://img.shields.io/github/issues/IsaiahHarvi/SigKit.svg)](https://github.com/IsaiahHarvi/SigKit/issues)
[![Pull Requests](https://img.shields.io/github/issues-pr/IsaiahHarvi/SigKit.svg)](https://github.com/IsaiahHarvi/SigKit/pulls)


**SigKit** is a modular digital signal‐processing toolkit built on top of NumPy. It has additive impairments to simulate OTA impairments. We include a full Machine Learning toolkit with methods for PyTorch designed for training Modulation Classification Models that are capable of generalizing over the air (OTA). It provides:

- **Core abstractions** (`Signal`, `Impairment`, `Modem`, …) for working in complex baseband
- **NumPy ipairments,  PyTorch Transforms & tools** (AWGN, fading, filtering, SNR & BER calculators)
- **PyTorch Transforms** so you can drop signal operations straight into `Compose`
- **PyTorch Lightning Pipeline** includes our pretrained model and methods for retraining
- **(WIP) GNURadio Blocks** wrapping our tools
- **Synthetic data generators** & `torch.utils.data.Dataset` classes

---

## 🚀 Getting Started

### Try the example notebook
A quick way to explore SigKit is to run the Jupyter notebook in:
```
examples/notebooks/basic.ipynb
```

The notebook is a guide that covers:
- Generating a signal with a Modem
- Adding an Impairment like AWGN
- Calculating Signal Metrics
- Visualizing the waveform
> Be sure to restart your notebook's kernel after installing the package.



## Installing SigKit

### Package Installation
##### Installing the [pypi](https://pypi.org/project/sigkit/) package
```bash
pip install sigkit
```

##### Installing from source (recommended for ML tasks)
```bash
git clone https://github.com/IsaiahHarvi/SigKit.git
cd SigKit
pip install -e .
```

##### Sanity Check for source installs
You can be gauranteeed your installation is sound by running `pytest` without failure from the root of the repository.

### (Optional) DevContainer for VS Code

If you use VS Code and would prefer to isolate your SigKit installation, we’ve provided a DevContainer in the repository.
It is designed to be OS agnostic but it is confirmed to support: `Ubunutu >22.04, ARM MacOS, Windows`

To setup:
1. Install the **Remote – Containers** extension in VS Code.
2. Clone, open the project, and run `chmod +x .devcontainer/setup.sh`.
3. Run **Reopen in Container** from the VSCode console.

Inside the container you’ll have all dependencies installed and SigKit ready to run.

---

## 📦 Features

* **Core** (`src/sigkit/core`):
  ‣ `Signal` container, `SignalDataset` interface, utility functions (SNR, BER, etc.)
* **Impairments** (`src/sigkit/impairments`):
  ‣ Methods to simulate Over-the-air and digital effects on waveforms
* **Transforms** (`src/sigkit/transforms`):
  ‣ PyTorch `nn.Module` implementations for **Impairments**
* **Modems** (`src/sigkit/modem`):
  ‣ Implementations of various Modulators and Demodulators (FSK, QAM, OFDM, etc.)
* **Models** (`src/sigkit/moels`):
  ‣ PyTorch lightning training pipeline and Pretrained models for modulation classification
* **Datasets** (`src/sigkit/datasets`):
  ‣ `torch.utils.data.Dataset` bindings
* **Metrics** (`src/sigkit/metrics`):
  ‣ SNR, BER, Waveform visualiations, etc.

---

## 🛠️ Development

* **Tests**:

  ```bash
  pytest
  ```
* **Lint & Format**:

  ```bash
  ruff check . --fix
  ruff format .
  ```
* **Update docs**:

  ```bash
  # Install the optional dependencies [docs] or:
  pip install sphinx piccolo_theme tomli

  ./docs/gen.sh
  ```
---

## License

This project is released under the **MIT License**. See [LICENSE](LICENSE) for details.
