RF Data Generation Framework

A single configurable framework for generating synthetic, multimodal RF datasets (emitter scenes, channel propagation, time-frequency labels, and inference-grounded text annotations) under one pipeline.

Warning

Pre-release / design spec. This documentation describes a framework still under design. APIs, config schemas, and behavior are proposals, not shipped. Use this site as a design-review surface; expect changes before v0 lands.

Goal

Generate a synthetic multimodal RF dataset for foundation-model training and evaluation.

A single sample is one record that contains:

  • A scene of one or more coexisting emitters. Narrowband or wideband, drawn from a heterogeneous zoo (comms modulations, radar, drones, IoT, cellular, ADS-B), with realistic channel propagation and per-emitter time-frequency labels.

  • Paired text annotations. Captions, attribute Q&A, reasoning chains, and scene reports, generated by LLMs from verified ground-truth metadata.

These are components of the same record, not separate datasets. Bandwidth, signal density, single-emitter versus multi-emitter, sim versus HIL, comms-only versus heterogeneous emitter mix, captions-only versus full annotation suite: each is a configuration knob on the one pipeline. Text annotation is a thin layer on top of the metadata the scene generator already produces.

Hypothesis

A single configurable framework can generate a synthetic multimodal RF dataset whose every sample is a record combining a multi-emitter scene with paired text annotations, by composing pluggable backends (TorchSig, Sionna, custom generators, inference-grounded annotators) under one configuration system.

What You Get

  • Heterogeneous emitter zoo. Comms modulations, radar, drones, IoT (LoRa, BLE, Zigbee, Wi-Fi), ADS-B, cellular (LTE, 5G NR), all under one BaseEmitter interface.

  • Sionna-first channel backends. Sionna RT for ray-traced propagation and Sionna PHY for 3GPP statistical scenarios (UMa, UMi, RMa, TDL, CDL), with TorchSig retained for benchmark compatibility.

  • Multi-emitter scenes with realistic dynamics. Event-timed bursts (radar PRI, ADS-B, drone telemetry), heavy-tailed power, optional multi-RX/array.

  • Joint label format. Bbox + per-bin segmentation + per-emitter metadata, all in the same record.

  • Inference-grounded text annotations. Captions, attribute Q&A, reasoning chains, scene reports, with hallucination control.

  • One configuration system. Hydra config groups + Pydantic validation, every backend swappable by flag.

A Single Sample Is One Record

sample = {
    iq:           Tensor[2, N],          # canonical IQ
    spectrogram:  Tensor[F, T],          # optional, on-demand
    labels: {
        bboxes:     [...],               # time-freq rectangles per signal
        masks:      Tensor[F, T],        # per-bin segmentation
        emitters:   [...],               # class, SNR, CFO, channel, ...
        scene:      {...},               # scene-level metadata
    },
    text: {
        caption:        "...",
        qa:             [...],
        reasoning:      "...",
        scene_report:   "...",
    },
}

Where To Start

Getting Started

Install, quickstart, your first scene.

Overview
Concepts

Architecture, core types, emitters, channels, scenes, labels, annotations, and storage.

Concepts
How-To Guides

Generate datasets, add emitters, scale execution, and annotate existing records.

How-to Guides
Reference

Schemas, CLI, storage, algorithms, operations, determinism, and test contracts.

Overview
API Contracts

Proposed abstract classes, records, configs, enums, and extension interfaces.

API Reference
Background

Design decisions, Sionna mapping, literature review, validation, roadmap, and open questions.

Overview

Architecture At A Glance

The pipeline is six swappable layers, emitters, channels, scenes, labels, annotations, storage, wrapped by one configuration system. Mature libraries handle specialized RF, DSP, storage, and execution behavior where they fit. Framework contracts define the records, lifecycle, metadata, validation, reproducibility, and backend boundaries.

Configuration (Hydra-style composition + Pydantic-style validation)
  emitter | channel | scene | labeler | annotator | storage | executor

Lifecycle
  parse CLI
  compose and validate config
  resolve plugins and external assets
  capture environment and tool versions
  seed runtime
  plan scene geometry, timing, frequency, and power
  generate emitter components
  apply channel and receiver effects
  compose IQ and structured labels
  write canonical records and manifests
  attach or verify text annotations
  export training shards or reports

See Concepts / Architecture for the full scene, emitter, channel, label, annotation, and storage data flow.

Documentation Practice Notes

This site follows patterns from mature documentation systems:

  • Framework documentation separates getting started, concepts, how-to guides, reference contracts, API reference, and background rationale.

  • Reference pages define implementation contracts; concept pages explain mental models; how-to guides complete one task at a time.

  • Data generation uses mature tools by default. Custom framework code exists to stabilize records, boundaries, configuration, metadata, validation, reproducibility, and backend switching.