UCL Optical Networks Group (ONG) Real-Time Constellation Shaper
Here you can find code for constellation shaping for AWGN/PC-AWGN simulation including pyQT5 gui, or headless "animator" to produce lovely mp4 animations.
It also includes "remote channel" that connects to the lab and does experimental transmission. DSP is mostly handled by QAMpy library.
It's a word "constellation" in Ukrainian (сузір'я) with "jax" suffix because python side computation is implemented in JAX.
Find out more in OFC23 Demo video
A demonstration of constellation shaping used in Transnet EAB meeting 2023-03-22. In a long simulation video channel noise oscillates between 10dB and 2.5dB SNR.
Experimental setup includes single channel transmission over 1550nm with real-time updatable channel and launch power parameters. Encoding and DSP is done remotely (server side), GMI calculations and optimisation are done locally (gui client) with new constellations being sent back to server.
Preparation
python -m venv env
pip install -r requirements.txt
# for CUDA acceleration
pip install "jax[cuda]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
Run GUI
python -m suzirjax
Run Animation generator
python -m suzirjax.animation