Signal Processing Machine Learning Toolkit
Project description
TorchSig is an open-source signal processing machine learning toolkit based on the PyTorch data handling pipeline. The user-friendly toolkit simplifies common digital signal processing operations, augmentations, and transformations when dealing with both real and complex-valued signals. TorchSig streamlines the integration process of these signals processing tools building on PyTorch, enabling faster and easier development and research for machine learning techniques applied to signals data, particularly within (but not limited to) the radio frequency domain.
Getting Started
Prerequisites
- Ubuntu ≥ 22.04
- Hard drive storage with ≥ 1 TB
- CPU with ≥ 4 cores
- GPU with ≥ 16 GB storage (recommended)
- Python ≥ 3.10
We highly reccomend Ubuntu or using a Docker container.
Installation
Clone the torchsig repository and install using the following commands:
git clone https://github.com/TorchDSP/torchsig.git
cd torchsig
pip install -e .
Examples and Tutorials
TorchSig has a series of Jupyter notebooks in the examples/ directory. View the README inside examples/ to learn more.
Usage
Generating Datasets with Python
TorchSig uses a unified dataset architecture. Create datasets using the Python API:
# define dataset metadata, can override defaults
dataset_metadata = TorchSigDefaults().default_dataset_metadata
# optionally, apply impairments
impairments = Impairments(level=0)
burst_impairments = impairments.signal_transforms
whole_signal_impairments = impairments.dataset_transforms
# create the dataset
dataset = TorchSigIterableDataset(
metadata=dataset_metadata,
transforms=[whole_signal_impairments, Spectrogram(fft_size=dataset_metadata["fft_size"])],
component_transforms=[burst_impairments],
)
# create a dataloader (reproducible)
dataloader = WorkerSeedingDataLoader(dataset, batch_size=2)
# save the dataset to disk
dataset_creator = DatasetCreator(
dataset_length=20,
dataloader=dataloader,
root="./sample_dataset",
overwrite=True,
multithreading=False,
)
dataset_creator.create()
# load the dataset in from disk
static_dataset = StaticTorchSigDataset(
root="./sample_dataset",
)
print(static_dataset[0])
Docker
One option for running TorchSig is within Docker. Start by building the Docker container:
docker build -t torchsig -f docker/Dockerfile .
And then you can launch a Docker instance:
docker run -it torchsig
See docker/README.md to learn more.
Development
To contribute to our library, please make sure to run the following:
# pytests all pass
pytest
# pylint score > 9/10
pylint --rcfile=.pylintrc torchsig
# not required
# but helpful for maintaining PEP 8 Style Guide
ruff check torchsig
Both need to pass in order to contribute to our Github.
Key Features
TorchSig provides many useful tools to facilitate and accelerate research on signals processing machine learning technologies:
- Unified Dataset Architecture: TorchSig features a single, flexible dataset system that supports both signal classification (single signal) and signal detection (multiple signals) tasks through configuration.
- Comprehensive Signal Library: Support for 60+ signal types across all major modulation families (FSK, QAM, PSK, ASK, OFDM, Analog) with realistic impairments and channel effects.
- Advanced Transform System: Numerous signals processing transforms enable existing ML techniques to be employed on signals data, with unified impairment models supporting perfect, cabled, and wireless channel conditions.
Core Classes
SignalandSignalMetadataObject: Enable signal objects and metadata to be seamlessly handled and operated on throughout the TorchSig infrastructure.TorchSigIterableDataset: Unified dataset class that synthetically creates, augments, and transforms signals datasets. Behavior (classification vs detection) is determined by configuration parameters.- Can generate samples infinitely when
num_samples=None, or finite datasets whennum_samplesis specified. - Dataset type determined by
num_signals_max: 1 for classification, >1 for detection tasks.
- Can generate samples infinitely when
DatasetCreator: Writes a PyTorchDataLoadercontaining aTorchSigIterableDatasetobjects to disk with progress tracking and memory optimization.StaticTorchSigDataset: Loads previously generated datasets from disk back into memory.- Can access previously generated samples efficiently.
- Supports both classification and detection datasets through unified interface.
Documentation
Documentation can be found online or built locally by following the instructions below.
cd docs
pip install -r docs-requirements.txt
make html
firefox build/html/index.html
License
TorchSig is released under the MIT License. The MIT license is a popular open-source software license enabling free use, redistribution, and modifications, even for commercial purposes, provided the license is included in all copies or substantial portions of the software. TorchSig has no connection to MIT, other than through the use of this license.
Publications
| Title | Year | Cite (APA) |
|---|---|---|
| TorchSig 2.0: Dataset Customization, New Transforms and Future Plans | 2025 | Oh, E., Mullins, J., Carrick, M., Vondal, M., Hoffman, J., Leonardo, F., Toliver, P., Miller, R. (2025, September). TorchSig 2.0: Dataset Customization, New Transforms and Future Plans. In Proceedings of the GNU Radio Conference (Vol. 10, No. 1). |
| TorchSig: A GNU Radio Block and New Spectrogram Tools for Augmenting ML Training | 2024 | Vallance, P., Oh, E., Mullins, J., Gulati, M., Hoffman, J., & Carrick, M. (2024, September). TorchSig: A GNU Radio Block and New Spectrogram Tools for Augmenting ML Training. In Proceedings of the GNU Radio Conference (Vol. 9, No. 1). |
| Large Scale Radio Frequency Wideband Signal Detection & Recognition | 2022 | Boegner, L., Vanhoy, G., Vallance, P., Gulati, M., Feitzinger, D., Comar, B., & Miller, R. D. (2022). Large Scale Radio Frequency Wideband Signal Detection & Recognition. arXiv preprint arXiv:2211.10335. |
| Large Scale Radio Frequency Signal Classification | 2022 | Boegner, L., Gulati, M., Vanhoy, G., Vallance, P., Comar, B., Kokalj-Filipovic, S., ... & Miller, R. D. (2022). Large Scale Radio Frequency Signal Classification. arXiv preprint arXiv:2207.09918. |
Citing TorchSig
Please cite TorchSig if you use it for your research or business.
@misc{torchsig,
title={Large Scale Radio Frequency Signal Classification},
author={Luke Boegner and Manbir Gulati and Garrett Vanhoy and Phillip Vallance and Bradley Comar and Silvija Kokalj-Filipovic and Craig Lennon and Robert D. Miller},
year={2022},
archivePrefix={arXiv},
eprint={2207.09918},
primaryClass={cs-LG},
note={arXiv:2207.09918}
url={https://arxiv.org/abs/2207.09918}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file torchsig-2.1.1.tar.gz.
File metadata
- Download URL: torchsig-2.1.1.tar.gz
- Upload date:
- Size: 148.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ab0a18186021dc1c875245d3c81c056cf49df34390ff869a31d21b577ab5755
|
|
| MD5 |
49b6f79679f1e56203fff4cabd88ac6b
|
|
| BLAKE2b-256 |
88135778adf3ad3e9a5cc0455e3cbe4136a38bd95164cab63df1531ec1a7beaa
|
Provenance
The following attestation bundles were made for torchsig-2.1.1.tar.gz:
Publisher:
publish.yml on TorchDSP/torchsig
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
torchsig-2.1.1.tar.gz -
Subject digest:
0ab0a18186021dc1c875245d3c81c056cf49df34390ff869a31d21b577ab5755 - Sigstore transparency entry: 1394924095
- Sigstore integration time:
-
Permalink:
TorchDSP/torchsig@d9abfe1af2b0216d2bacc31c677407ed31878086 -
Branch / Tag:
refs/tags/v2.1.1 - Owner: https://github.com/TorchDSP
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d9abfe1af2b0216d2bacc31c677407ed31878086 -
Trigger Event:
push
-
Statement type:
File details
Details for the file torchsig-2.1.1-py3-none-any.whl.
File metadata
- Download URL: torchsig-2.1.1-py3-none-any.whl
- Upload date:
- Size: 174.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e6ea54df639028b4914fee4daea0ed7e87ef53d15c4dddd939d0d867e24d2e1
|
|
| MD5 |
4f0904a46d2333f9faaedaee37b048d4
|
|
| BLAKE2b-256 |
6242a89286a868a0548499468fa6a7bda1be6f1c8b9b5bd052e87c27bf8daac2
|
Provenance
The following attestation bundles were made for torchsig-2.1.1-py3-none-any.whl:
Publisher:
publish.yml on TorchDSP/torchsig
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
torchsig-2.1.1-py3-none-any.whl -
Subject digest:
2e6ea54df639028b4914fee4daea0ed7e87ef53d15c4dddd939d0d867e24d2e1 - Sigstore transparency entry: 1394924142
- Sigstore integration time:
-
Permalink:
TorchDSP/torchsig@d9abfe1af2b0216d2bacc31c677407ed31878086 -
Branch / Tag:
refs/tags/v2.1.1 - Owner: https://github.com/TorchDSP
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d9abfe1af2b0216d2bacc31c677407ed31878086 -
Trigger Event:
push
-
Statement type: