Skip to main content

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

  • Signal and SignalMetadataObject: 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 when num_samples is specified.
    • Dataset type determined by num_signals_max: 1 for classification, >1 for detection tasks.
  • DatasetCreator: Writes a PyTorch DataLoader containing a TorchSigIterableDataset objects 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


Download files

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

Source Distribution

torchsig-2.1.1.tar.gz (148.4 kB view details)

Uploaded Source

Built Distribution

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

torchsig-2.1.1-py3-none-any.whl (174.6 kB view details)

Uploaded Python 3

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

Hashes for torchsig-2.1.1.tar.gz
Algorithm Hash digest
SHA256 0ab0a18186021dc1c875245d3c81c056cf49df34390ff869a31d21b577ab5755
MD5 49b6f79679f1e56203fff4cabd88ac6b
BLAKE2b-256 88135778adf3ad3e9a5cc0455e3cbe4136a38bd95164cab63df1531ec1a7beaa

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchsig-2.1.1.tar.gz:

Publisher: publish.yml on TorchDSP/torchsig

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

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

Hashes for torchsig-2.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2e6ea54df639028b4914fee4daea0ed7e87ef53d15c4dddd939d0d867e24d2e1
MD5 4f0904a46d2333f9faaedaee37b048d4
BLAKE2b-256 6242a89286a868a0548499468fa6a7bda1be6f1c8b9b5bd052e87c27bf8daac2

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchsig-2.1.1-py3-none-any.whl:

Publisher: publish.yml on TorchDSP/torchsig

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