Generate a Local Dataset

Start from a maintained template, materialize it into a directory you own, and edit its config.yaml. rfgen does not provide a catalog of scenario presets. This is the synchronous default compute mode; read Local execution for its job-level boundary.

Create and run a configuration

For a narrowband communications baseline:

rfgen init narrowband-baseline ./my-dataset
cd ./my-dataset
rfgen validate --config-dir .
rfgen generate --config-dir .
rfgen inspect ./rfgen-output

The generated directory is a published Signal Dataset snapshot. Publication is root-last: if a shard fails, the directory has no readable root.json. On success, the same path supports ordinal and metadata-only access; see Persist generated records with Signal Dataset.

rfgen init ships seven templates; the radar-response template has its own guide, Generate a coupled radar dataset. narrowband-baseline is the small labeled-modulation template and chirp-radar is the maintained LFM example; both are described in Golden Paths. nr-pusch-baseline, conformant-ofdm-baseline, and fec-constellation-baseline are additional starting points without a dedicated Golden Path page.

Copy multi-emitter-baseline when the dataset will be annotated. It plans eight concurrent emitters, against one in narrowband-baseline, conformant-ofdm-baseline, nr-pusch-baseline, and chirp-radar, and four in fec-constellation-baseline. A single-emitter scene leaves an annotator little to describe, which is why it is the template whose scenes are distinguishable enough for the remote annotation route; see Remote annotation.

Four communications templates select a Sionna channel — narrowband-baseline, conformant-ofdm-baseline, nr-pusch-baseline, and fec-constellation-baseline, which also selects a TorchSig emitter — so install .[torchsig,sionna] before generating from any of them. multi-emitter-baseline uses awgn_channel instead, which is what gives it a finite declared SNR, so it needs only .[torchsig]. Copying a template gives you a concrete starting point, not a special preset mode.

Adapt the configuration

Edit config.yaml and rerun validation before generating. Use the Reference config schema for field contracts. For a separate output location or a bounded trial, use supported command options:

rfgen validate --config-dir .
rfgen generate --config-dir . --output ./trial-output --num-samples 10 --seed 7
rfgen inspect ./trial-output

Keep the materialized YAML with experiment records. A modified configuration has its own behavior and evidence boundary.

The native storage block is:

storage:
  backend: signal_dataset
  path: ./rfgen-output

backend, path, and assets_path are the only keys storage accepts. Compression, chunk, filename, and record-axis options are refused by name, not ignored.

There is no record-fan-out knob: one sample publishes exactly one record. In a multi-receiver scene each receiver is a named subtree inside that record (projections/<projection_id>/receivers/rx0/iq, .../rx1/iq, …), so a consumer that wants one training example per receiver selects the subtree at read time. See Configure multi-receiver output. A custom composer supplies only the keys declared by its own parameter model.