User guide#
A link is a chain of blocks applied to NumPy arrays; a campaign evaluates that link
on a grid of conditions (an SNR, a launch power, a modulation order…), as many times
as a stopping rule requires, and reports every metric with a confidence interval.
comnum offers two ways to run one:
Monte Carlo campaigns in Python: the trial is a Python function, run by
comnum.sim— the quickest way to prototype;Declarative campaigns: the whole campaign is a YAML file run by the parallel Rust runner — the way to produce the numbers of a study.
A chain of named blocks bridges the two: built and inspected in Python, it runs on the Rust runner and converts to and from a specification. The blocks cover wireless and coded links (antennas, fading, OFDM, MIMO detection, channel codes), the waveforms beyond OFDM (FBMC/OQAM, UFMC, OTFS, chirp spread spectrum), optical links (WDM, dual polarisation, nonlinear propagation, back-propagation, and how the fibre solvers are validated) and optical wireless links (visible light and infrared indoors, free-space optics), and the functions that follow a standard clause by clause.
Both draw trial t of condition i from the same stream
Rng.stream(seed, name, i, t), so a scenario gives the same draws in both, and the
results never depend on the number of threads.
- Monte Carlo campaigns in Python
- Chains of blocks
- Analysing a campaign
- Wireless and coded links
- Waveforms beyond OFDM
- Optical links: WDM and nonlinearity
- Fibre propagation: how the split step is validated
- Optical wireless links
- Standards
- 5G NR PDSCH: the conformance tests and the industry
- Declarative campaigns
- Recordings