Install¶
Warning
Pre-implementation. The framework is not yet on PyPI. The instructions below describe the target install experience for v0; until then, install from a development branch.
Requirements¶
Requirement |
Version |
|---|---|
Python |
3.11+ |
OS |
Linux (primary), macOS (development), Windows (best-effort via WSL) |
GPU |
Optional. CPU is enough for quickstart and non-ray-tracing examples. Sionna ray tracing (Sionna RT) can use Dr.Jit’s LLVM backend on CPU. Linux wheels may provide a usable LLVM runtime; on macOS ARM64, install LLVM separately and set |
Memory |
16 GB+ for narrowband examples; 32 GB+ for wideband examples such as 200 million samples per second (Msps), multi-second scenes. |
Install¶
# Once published to PyPI (target: v0):
pip install rfgen
# During pre-release, from a development branch or pinned commit:
pip install "git+https://github.com/superpose-labs/rf-data-generation.git@<branch-or-commit>"
# SSH works too if your GitHub key is configured:
pip install "git+ssh://git@github.com/superpose-labs/rf-data-generation.git@<branch-or-commit>"
Optional extras¶
Extras install optional waveform, propagation, annotation, and distributed-compute backends. The base package is enough to inspect configs and use the minimal command surface; install extras when a preset or backend requires them.
Extra |
What it pulls in |
When you need it |
|---|---|---|
|
sionna >= 2.0.1 and < 2.1, the validated Sionna PHY / RT range, plus its transitive Mitsuba / Dr.Jit ray-tracing dependencies |
A channel chain whose propagation transform is |
|
torchsig >= 2.1.1 and < 2.2, the tested TorchSig v2.1 API range |
TorchSig-backed comms emitters; HDF5 interop with |
|
h5py >= 3.10 |
HDF5 storage and TorchSig HDF5 interop |
|
No PyPI packages; requires GNU Radio plus |
LoRa SDR wrapper |
|
No PyPI packages; requires the LoRaPHY runtime installed separately |
LoRa PHY wrapper |
|
No PyPI packages; requires |
LTE emitter |
|
radarsimpy >= 11.0 |
High-fidelity radar backend |
|
openai |
OpenAI-hosted Phase 2 annotation and batch jobs |
|
anthropic |
Anthropic-hosted Phase 2 annotation and batch jobs |
|
google-cloud-storage, google-cloud-aiplatform, google-auth, google-genai |
Gemini, GCP storage, and Vertex Batch paths |
|
boto3 |
AWS-backed storage / orchestration paths |
|
azure-ai-ml, azure-identity, azure-storage-blob |
Azure-backed storage and Azure ML batch paths |
|
torch >= 2.1 |
PyTorch dataset adapter and DataLoader integration |
|
webdataset >= 0.2 |
WebDataset storage |
|
sigmf >= 1.2 |
SigMF export |
|
pytest, mypy, ruff |
Local development and validation |
# Typical setup for a Phase-1 generation workstation
pip install "rfgen[torchsig,sionna]"
# HDF5/TorchSig interop needs both extras
pip install "rfgen[torchsig,hdf5]"
# Add annotation SDKs only when generating Phase-2 captions or reports
pip install "rfgen[openai-batch,anthropic-batch,gcp]"
# Local vLLM uses the OpenAI-compatible HTTP client in core
pip install rfgen
# CI / minimal
pip install rfgen
Verify¶
rfgen version
rfgen doctor --json
# rfgen 0.0.0.dev0
rfgen list-emitters | head
# comms torchsig_adapter bpsk, qpsk, 16qam, 64qam, ofdm, ...
# radar pulse, fmcw, lfm
# ...
Verify signed release evidence¶
rfgen release verify is an application boundary, not a standalone evidence
resolver. Before invoking it, the embedding application must install a runtime
with configure_release_verification_runtime(factory). The factory receives
the parsed ReleaseManifestV1, the Path | None supplied by
--offline-bundle, and the integer timeout; it returns
ReleasePromotionOutcomeV1.
rfgen release verify release-manifest.json --offline-bundle ./release-bundle --json --timeout 900
The embedding application resolves the offline directory into
OfflineBundleIndexV1, builds ReleaseVerificationInputsV1, and configures
the verifier’s policy, evidence reader, and trust boundary. The CLI does not
discover an index or synthesize those inputs. If no factory is configured, it
returns exit 6 with the redacted JSON error RUNTIME_UNCONFIGURED.
When a factory is installed, --offline-bundle passes its directory path to
that factory. Offline verification does not fall back to network trust
retrieval. --timeout accepts 1 through 3600 seconds; the default is 900. The
JSON result includes the self-hashed verification report and, only after a
complete offline pass, any Chapter 7 receipt and release-qualified status
records.
The command returns 0 on success; 2 for invocation or schema failures; 3 for trust, signature, or transparency failures; 4 for artifact or evidence-hash failures; 5 for support or gate failures; and 6 for a deadline or internal runtime failure. See Release evidence verification for the full artifact, receipt, and offline-trust contract.
Sionna RT CPU and GPU backends¶
Sionna RT requires either a working Dr.Jit LLVM CPU backend or CUDA / OptiX. The Python extra installs Sionna, Mitsuba, and Dr.Jit, but it cannot guarantee that the operating system exposes a compatible LLVM shared library. On macOS ARM64 with a conda environment, install LLVM and point Dr.Jit at it explicitly:
conda install -n superpose_py311 -c conda-forge llvmdev
export DRJIT_LIBLLVM_PATH="$CONDA_PREFIX/lib/libLLVM.dylib"
python -c "import sionna.rt, mitsuba; print(mitsuba.variant())"
# llvm_ad_mono_polarized
Keep DRJIT_LIBLLVM_PATH set when running Sionna RT commands or tests. If
sionna.rt raises an error saying libLLVM.dylib or libLLVM.so cannot be
found, the top-level sionna package is installed but the RT backend is not
usable yet.
GPU acceleration is optional and is most useful for production-scale or large batch generation. CUDA / OptiX moves the ray-tracing solve onto the GPU, which matters when running many scenes back-to-back rather than the single-scene examples on this page. Verify PyTorch GPU visibility:
python -c "import torch; print(torch.cuda.is_available())"
# True
If this prints False, use the LLVM setup above. A real SionnaRT test run on
macOS ARM64 with Sionna 2.0.1 and the llvm_ad_mono_polarized variant produced
finite RT solves without a GPU. For GPU setup, follow the PyTorch install
selector, the Sionna installation
notes, and the Mitsuba
installation notes
for CUDA / OptiX support.
Troubleshooting¶
ImportError: Sionna requires PyTorch >= 2.9
Install or upgrade with a wheel matching your platform and CUDA version. For CPU-only development, pip install -U torch sionna is usually enough; for GPU acceleration, use the PyTorch CUDA wheel recommended for your driver.
srsRAN binary not found
The [lte] extra is only needed for LTE emitter work. It installs the Python wrapper; the actual srsRAN_4G binary must be on $PATH. Build from github.com/srsran/srsRAN_4G or use the prebuilt Docker image referenced in the repository README.
pip install is slow on first run
Sionna, TorchSig, PyTorch, and the RT dependencies are large. Use --cache-dir to share across environments, or pre-download wheels.