Skip to content

TorchSig v1.0.0-beta

Latest
Compare
Choose a tag to compare
@ereoh ereoh released this 19 Feb 21:32
· 4 commits to main since this release
6741904

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