Reproducibility code for the paper
Liang Dong and Robert W. Heath Jr., "On the Detection Limits of Power-Domain NOMA: Information-Theoretic Bounds and Spatial Diversity," IEEE Transactions on Communications, vol. 74, pp. 13995-14011, 2026, doi: 10.1109/TCOMM.2026.3726732.
The paper develops an information-theoretic framework for the detection limits
of power-domain NOMA under finite-alphabet modulation. It identifies the two
roles of power allocation (setting the SIC decoding order and shaping the
composite-constellation geometry), derives the constellation-constrained
mutual-information hierarchy
| File | Role |
|---|---|
sim_learned_mud.py |
Base SISO downlink NOMA library: constellations, Rayleigh channel, marginal-MAP / oracle / TIN detectors, mutual-information kernels, IEEE plotting style |
sim_mimo_noma.py |
Base MIMO uplink NOMA library: spatial channel, MMSE / MMSE-SIC / MAP / oracle detectors |
sim_it_bounds.py |
SISO information-theoretic bounds: CCMI hierarchy, structural gain and oracle deficit, Fano/PEP SER bounds, composite minimum-distance geometry, power-differentiation sweep |
sim_mimo_it_bounds.py |
MIMO information-theoretic bounds: MI hierarchy, SER, MAP-oracle gap vs. spatial diversity, the |
sim_revision1.py |
First-round revision additions: imperfect-CSI GMI, per-user fairness, and the power-allocation universality sweep across |
sim_revision2.py |
Second-round revision additions: the nearest-neighbor multiplicity factor (deterministic), MIMO-NOMA under spatially correlated receive channels, and an expectation-propagation (EP) approximate-MAP detector |
replot_it_bounds.py |
Regenerate the SISO figures from cached results, without re-running the simulation |
replot_mimo.py |
Regenerate the MIMO figures from cached results |
replot_revision1.py |
Regenerate the first-round revision figures from cached results |
replot_revision2.py |
Regenerate the second-round revision figures from cached results |
sim_it_bounds_results.pkl |
Cached SISO Monte Carlo results (MI/SER vs. SNR, power sweep) |
sim_mimo_results.pkl |
Cached MIMO Monte Carlo results (MI/SER vs. SNR for |
revision1_results.json |
Cached imperfect-CSI, fairness, and power-universality results |
sim_revision2_corr.pkl |
Cached correlated-channel MI sweep (MI hierarchy vs. SNR for |
sim_revision2_ep.pkl |
Cached EP approximate-MAP SER ( |
sim_it_bounds.py and sim_revision1.py import sim_learned_mud;
sim_mimo_it_bounds.py imports sim_mimo_noma; and sim_revision2.py imports
both sim_mimo_noma and sim_mimo_it_bounds. All base/analysis modules are
bundled here, so the repository is self-contained.
- Python 3.9 or later
- NumPy, SciPy, Matplotlib, PyTorch (CUDA optional but strongly recommended)
pip install -r requirements.txt# SISO bounds: CCMI hierarchy, information gaps, Fano/PEP SER bounds, power sweep
python sim_it_bounds.py
# MIMO bounds: MI hierarchy, SER, MAP-oracle gap, regime transition at N_r = K
python sim_mimo_it_bounds.py
# First-round revision additions: imperfect CSI, multi-user fairness, power-allocation universality
python sim_revision1.py
# Second-round revision additions: multiplicity factor, correlated channels, EP approximate-MAP detector
python sim_revision2.pyThe cached .pkl / .json results are included, so the figures can be
regenerated in seconds without a GPU:
python replot_it_bounds.py
python replot_mimo.py
python replot_revision1.py
python replot_revision2.py- All experiments use a fixed seed (
SEED = 42), three users with the default power allocationP = [0.2, 0.3, 0.5], i.i.d. Rayleigh block fading with unit variance, and a reference SNR of 16 dB for cross-comparisons. - The SISO and MIMO Monte Carlo runs use 4,000,000 samples per SNR point; the revision runs use 2,000,000 (MI/SER) and 500,000 (power sweep) samples.
- The power-differentiation sweep of
sim_it_bounds.py(Fig. "power_mi") and the$K=3$ curve of the universality sweep insim_revision1.pyshare the identical allocation path through the default[0.2, 0.3, 0.5], so they coincide to within Monte Carlo error. - Figures are written as EPS and PDF with Type-42 (TrueType) fonts for IEEE
production. They are not tracked in the repository (see
.gitignore); run thereplot_*.pyscripts to regenerate them. - The 16-QAM,
$K=4$ marginal-MAP case enumerates$16^4 = 65536$ composite hypotheses and is skipped on an 8 GB GPU. - The second-round additions (
sim_revision2.py) compute the nearest-neighbor multiplicity factor deterministically by enumerating the composite constellation (no Monte Carlo), use 1,500,000 samples per SNR point for the correlated-channel MI sweep, and 4,000,000 for the EP approximate-MAP SER. Receive correlation uses the exponential model$[\mathbf{R}]_{mn} = r^{|m-n|}$ , and the EP detector runs 10 iterations with damping 0.2. The EP run reuses the same seeds assim_mimo_results.pkl, so the MMSE-SIC / MAP / Oracle curves in the regenerated SER figure are identical to those ofsim_mimo_it_bounds.py.
@article{dong2026detection_limits,
author = {Liang Dong and Robert W. {Heath Jr.}},
title = {On the Detection Limits of Power-Domain {NOMA}:
Information-Theoretic Bounds and Spatial Diversity},
journal = {IEEE Trans. Commun.},
volume = {74},
pages = {13995--14011},
year = {2026},
doi = {10.1109/TCOMM.2026.3726732}
}The companion paper on coded NOMA achievable rates is
coded-noma-finite-alphabet,
published as IEEE Trans. Commun., vol. 74, pp. 13392-13407, 2026,
doi: 10.1109/TCOMM.2026.3726750.
Released under the MIT License. See LICENSE.