explaingit

johnzja/rydbergcomms

11MATLABAudience · researcherComplexity · 5/5ActiveSetup · hard

TLDR

Research code that simulates radio communication signals received by a Rydberg atomic receiver, with a Flask web UI, C++ RK4, and CUDA backends.

Mindmap

mindmap
  root((RydbergComms))
    Inputs
      TX waveforms
      Simulation params
      Backend choice
    Outputs
      RX waveforms
      Constellation plots
      MSE in dB
    Use Cases
      Test atomic receivers
      Reproduce paper results
      Run quantum sim on GPU
    Tech Stack
      Python
      Flask
      MATLAB
      C++
      CUDA

Things people build with this

USE CASE 1

Simulate a single-carrier signal hitting a Rydberg atomic receiver

USE CASE 2

Compare CPU and GPU quantum-solver backends on the same waveform

USE CASE 3

Reproduce the dynamic transfer function results from the paper

USE CASE 4

Drive simulations from a browser via the Flask web UI

Tech stack

PythonFlaskMATLABC++CUDA

Getting it running

Difficulty · hard Time to first run · 1day+

GPU path needs CUDA toolchain plus a CUDAHOSTCXX env var on Windows, and you must build C++ and CUDA binaries before the web app works.

In plain English

RydbergComms is a research code release from Jieao Zhu at Tsinghua University that simulates communication signals being received by a Rydberg atomic receiver. A Rydberg receiver is a physics-based way of detecting radio waves using atoms in a special excited state, and this repository lets researchers test how well such receivers handle real waveforms. The code is split into three parts. There is a Flask web application defined in app.py that gives a browser front end for kicking off a simulation, watching it run in the background, and looking at the resulting transmit and receive waveforms and a constellation plot. There is also a reusable Python single carrier simulator that researchers can call from their own scripts, and a set of MATLAB scripts that go with the author's paper on dynamic transfer functions of Rydberg atomic receivers. Under the simulation surface there are two compute backends, a C plus plus RK4 solver and a CUDA version that runs on a GPU. The README shows that the CUDA build gives a large speedup over the CPU build. You build the backends with make cpp and make cuda from the repository root, and the binaries end up under python/utils/bin/. On Windows the CUDA build may need a CUDAHOSTCXX environment variable. The web service is started with python app.py and listens on port 5000. The README documents a three step HTTP API: post to /api/generate_tx to make a transmit IF waveform, post to /api/start_simulation with that waveform and a backend choice of cpp or cuda, then poll /api/simulation_status with the returned job id until the status is completed. A worked Python client example is included. For local use the repository also shows a direct pipeline through sim_SingleCarrier.py and TransientQuantumSimulator, generating symbols, modulating to an intermediate frequency, running the quantum simulation, demodulating, and printing a mean squared error in decibels. The full reference is in python/study_sc.py.

Copy-paste prompts

Prompt 1
Walk me through building both the C++ and CUDA backends on Linux
Prompt 2
Show me how to call /api/generate_tx and poll /api/simulation_status from Python
Prompt 3
Help me run sim_SingleCarrier.py end-to-end and read the MSE output
Prompt 4
Explain what the MATLAB scripts add on top of the Python simulator
Prompt 5
Generate a curl-based client for the three-step simulation HTTP API
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.