Skip to content

Releases: TorchDSP/torchsig

TorchSig v2.1.0

10 Feb 15:48

Choose a tag to compare

What's Changed

  • Major restructure of DatasetMetadata (removed) and SignalBuilder (renamed to BaseSignalGenerator) to allow for more flexible signal types, using HierarchicalMetadataObject class to handle metadata across dataset and signal generators
  • Removed models and image_datasets
    • torchsig-models repository to be released soon
  • Combined StaticDataset and CustomDataset
  • Code cleanup and optimizations from v2.0.0
    • cleaned up unused libraries, upgrade to numpy > 2
    • 411 bug readthedocs errors by @ereoh in #412
    • removing zarr imports by @MattCarrickPL in #414
  • v2.1.0 Release by @TorchDSP in #448

Full Changelog: v2.0.0...v2.1.0

TorchSig v2.0.0

03 Sep 18:55
b2ee0b4

Choose a tag to compare

What's Changed

This release has major structural changes, see the TorchSig v1.1.0 -> v2.0.0 Migration Guide for more details.

Additionally, we have released a TorchSig-GUI (in beta).

  • Datasets
    • Fixed: TorchSigIterableDataset num_samples
    • New: Custom Datasets to use user data within TorchSig
    • Update: Unified Narrowband and Wideband
  • Transforms
    • Fixed: IQImbalance
    • New:
      • Clock Jitter, Drift
      • Rust resampler
    • Update: Level 2 impairments, TargetTransform replaced with MetadataTransform
  • Signals
    • Update: Signal, DatasetSignal, DatasetDict restructured into Signal
  • Utils
    • New: Zarr replace by HDF5
    • Update: Restructured DatasetCreator and File Handler class
    • WorkingSeedingDataLoader guarantees reporoducibility for DataLoaders
  • Miscellaneous
    • Added MIT license
    • Updated Dockerfule
  • General bug fixes
  • forcing specific numcodecs version by @MattCarrickPL in #385
  • 2.0.0 dev by @ereoh in #410

New Contributors

Full Changelog: v1.1.0...v2.0.0

TorchSig v1.1.0

29 Apr 17:51

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.0.0...v1.1.0

TorchSig v1.0.0

04 Mar 18:52
f3ceb56

Choose a tag to compare

What's Changed

Full Changelog: v0.6.1...v1.0.0

TorchSig v1.0.0-beta

19 Feb 21:32
6741904

Choose a tag to compare

Since this is almost an entirely new version of TorchSig, it is not backwards compatible with previous versions.

What's Changed (a lot!)

tldr; Look at our example notebooks, and start with getting_started.ipynb

  • Datasets
    • Dataset configuration with new class DatasetMetadata, which holds configuration information about dataset
      • supports YAML configuration
      • Official Narrowband and Wideband datasets are define in datasets/default_configs with loaders
    • Two types of dataset classes: NewDataset and StaticDataset
      • NewDataset support infinite or finite signal generation, but does not store samples in memory
        • NewNarrowband, NewWideband
      • StaticDataset supports loading a dataset from disk
        • StaticNarrowband, StaticWideband
    • Datamodules for custom Narrowband/Wideband dataset and Official Narrowband/Wideband datasets
  • Signals
    • New signal classes: DatasetSignal, DatasetDict.
    • SignalMetadata redefined as class instead of TypedDict.
    • SignalBuilder for signal generation.
    • Signal lists variable names updated.
  • Transforms
    • Transforms redefined as changing signal data and signal metadata
      • Grouped into three categories: SignalTransform, DatasetTransform, and Impairments.
      • Many transforms refactored, optimized, or removed.
    • Target transforms redefined as label/output creators, do not change signal data at all
      • Can ask for any configuration of labels
  • Utils
    • Random class Seedable to manage randomness across all TorchSig objects
    • Various printing and verification code
    • Dataset writing and reading using Zarr and YAML
      • New class: DatasetCreator
  • Examples
    • Examples no longer need to be run in any specific order.
    • Moved Jupyter annotation tool example to tools/examples.
  • Tests
    • More comprehensive test suit with Pytest.
  • Google-style docstrings have been added for most of the code.
    • Updated documentation.

What Has Not Changed

  • gr-spectrumdetect
  • image_datasets

Notes

  • v0.6.1 pretrained models are out of date.
  • OFDM signal not fully featured
    • 0.6.1 OFDM has a simulated protocol on it: Resource blocks, pilots, etc. that does not exist in 1.0 yet.
    • 0.6.1 OFDM has some windowing in the time domain acting as pulse shaping, that does not exist in 1.0 yet
    • Otherwise the OFDM is accurate and representative, it is idealized and textbook-like, just as our other signals are
  • We are depreciating our support of models. Specifically, we plan on only maintaining our pretrained models.
    • Our code should be compatible with any PyTorch compatible model, or should be easy to make compatible.
    • Still keep example notebooks to show how to train and use a model with our datasets.
  • gr-spectrumdetect had not been updated with most recent code.

Known Bugs

  • NewDatasets are not perfectly reproducible.
    • To guarantee reproducibility, we recommend writing the dataset to disk and loading back in the ensure correctness of samples.

Open-Source Collaboration

  • We would really like to involve the open-source community, and are moving development to Github.
  • Please feel free to make contributions towards bugs, new features, current issues, or anything on our Roadmap on the wiki.
  • Github workflows for Pylint and Pytest to merge with main:
    • Pylint score must be above 9/10
    • Pytests should all pass without error

TorchSig v0.6.1

31 Jan 18:13
e4d24fc

Choose a tag to compare

What's Changed

  • fix ReadTheDocs pipeline by @ereoh in #251
  • Fix for #254 -- accept dict dtype in is_signal by @IsaiahHarvi in #255
  • v0.6.1 release by @ereoh @MattCarrickPL in #267
  • Releases
    • example timm model loading, example notebook 11
    • example sigmf loading, example notebook 12 (#257)
    • new pretrained models for narrowband and wideband with example notebook 13
  • Bugs with example notebooks 6-10, 13
  • remove Numpy and OpenCV constraints

New Contributors

Full Changelog: v0.6.0...v0.6.1

TorchSig v0.6.0

21 Oct 18:35

Choose a tag to compare

  • New signals added (53 → 61 total signals)
    • New signals:
      • FM (frequency modulation)
      • AM-DSB (amplitude modulation, double side band, with carrier)
      • AM-DSB-SC (amplitude modulation, double side band, suppressed carrier)
      • AM-LSB (amplitude modulation, lower side band)
      • AM-USB (amplitude modulation, upper side band)
      • Chirp Spread Spectrum
      • Linear Frequency Modulated Data (LFM-Data, both up and down chirps)
      • Linear Frequency Modulated Radar (LFM-Radar, up-chirps only)
  • Refactored 53 out of dataset names and codebase
    • Sig53 → Narrowband
    • WidebandSig53 → Wideband
  • Datasets, transforms, example notebooks, ect. updated with new classes listed in torchsig/datasets/signal_classes.py
  • Removed iq_samples_per_symbol from metadata
  • Optuna integration
    • examples/08_example_optuna_yolo.ipynb
  • Synthetic spectrogram image dataset improvements
    • examples/09_example_synthetic_spectrogram_dataset.ipynb: Generating and using synthetic spectrograms.
    • examples/10_example_yolo_annotation_tool.ipynb: New feature to draw SOI bounding boxes in Jupyter notebooks.
    • Spectrogram wideband texturing
  • Bug Fixes
    • Narrowband dataset crashing due to Transforms
    • RandomResample
    • Frequency Hopper
    • Normalize
    • Transition bandwidth calculations
  • Documentation
    • gr-spectrumdetect README
      • detect.pt also attached to release if needed.
    • README has minimum/recommended specifications
  • Python >= 3.9

TorchSig v0.5.3.1

24 Sep 17:56

Choose a tag to compare

  • Fix Github LFS bandwidth limits with gr-spectrumdetect/examples/detect.pt file

TorchSig v0.5.3

06 Sep 00:47

Choose a tag to compare

Closed the following issues:

  1. Fixed: incorrect bounding boxes, too large in frequency, both G/FSK and others.
  2. Fixed: Reports of problem that DescToList tuple transform has a problem in type conversion, being a list vs list-of-lists. Says this causes a crash somewhere in one of the example notebooks.
  3. Fixed: "rearranged the order in which meta['start'] and meta['stop'] values were being updated in relation to meta['num_samples'] it was causing a new_rate **2 change to the new_start and new_stop variables"
  4. Fixed: impaired dataset generation bug - RandomTimeShift resulted in signals being shifted "out of bounds"
  5. Validate all notebooks are working properly
  6. Fixed: frequency hopper functionality.
  7. Fixed: OFDM modulator creating incorrect bounding box on mc/deterministic-modulators.
  8. Fixed: OFDM bandwidth wrap around +-fs/2 boundary
  9. Upgrade: replace sp.resample_poly() within synthetic.py with a higher quality resampler
  10. Upgrade: PFB resamplers need to use fred harris approximation for number of branches
  11. Released: gr-spectrumdetect: The out-of-tree (OOT) module gr-spectrumdetect incorporates a YOLOv8x TorchSig ML model to detect signals in real time.
  12. Upgrade/Release: 05_example_wideband_yolo_to_disk.ipynb: This notebook showcases using the WBSig53 dataset to train a YOLOv8 model.
  13. Release: 06_example_wideband_yolo.ipynb: This notebook showcases using the WBSig53 dataset to train a YOLOv8 model.
  14. Release: 07_example_classify_yolo.ipnyb: This notebook showcases using the Sig53 dataset to train a YOLOv8 classification model.

@pvallance, @MattCarrickPL

v0.5.2.1

13 Jul 16:38

Choose a tag to compare

  1. Merge issue with previous release: Fixed pickle issue causing OOM issues. No longer stores tensors to db
  2. Removed unused print statements add collate_fn in generate_sig53.py to avoid torch Dataloader from converting the labels to tensors.

@pvalance