Skip to main content

Try OpenDPD Studio in your browser →

No installation. Explore example data or upload your own CSV, train PA/DPD models on shared CUDA compute, and download your checkpoints. During the trial, 2 hours without user activity clears that IP’s temporary workspaces; all data is deleted within 12 hours.

OpenDPD Studio: click to try the web app

OpenDPD

OpenDPD Studio   EMI Lab — Efficient Machine Intelligence, TU Delft

Model a power amplifier. Train a digital predistorter. Understand the result.

OpenDPD is a PyTorch framework for power amplifier (PA) modeling and digital predistortion (DPD), developed by the Efficient Machine Intelligence Lab at TU Delft. Use OpenDPD Studio in the browser or locally for a guided workflow, or automate experiments with the CLI and Python API. All three use the original OpenDPD training core.

CI PyPI License

Documentation · Studio walkthrough · Examples & Colab · Papers & citation

What's new

OpenDPD 2.2.9 adds Signal Analyzer for real or complex CSV signals, generated waveforms and PA captures. Inspect PSD, spectrograms, I/Q, CCDF, eye diagrams and reference errors, then export the results. Signal Generator adds PSK, FSK/GFSK, noise, DFT-spread OFDM, repeatable payloads, burst envelopes and EVM trends.

Signal Generator → PA Library → PA training → DPD training/testing. Generate a PA input, simulate its output with one of nine Virtual PAs, or use existing input/output data. Standard presets remain uncoded engineering stimuli; Wi-Fi 8 is experimental.

2.2.9 release notes · Signal Generator · Signal Analyzer. During the hosted trial, 2 hours of inactivity clears that IP’s temporary workspaces; the top bar shows the expiry time.

Feature history · Verified platform status

Get started with Studio

Use Studio on the web, or install locally:

1. Install uv (then open a new terminal).

macOS / Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

2. Create an environment, install, and launch (same commands on all three platforms):

mkdir opendpd-lab
cd opendpd-lab
uv venv --python 3.12
uv pip install --python .venv "opendpd==2.2.9" --torch-backend=auto
uv run --no-project --python .venv opendpd gui

PyTorch, Studio and pywebview install together; no Node.js is needed. uv selects a PyTorch backend for the detected platform/drivers. Studio prefers available CUDA or Apple MPS, then CPU. Keep the terminal running. A 127.0.0.1 link opens on the computer running OpenDPD; for SSH, use the port-forwarding instructions.

Click Get Started → Signal Generator, or Use an existing dataset. See Installation for drivers, Linux system libraries, native-window troubleshooting and pip; Studio walkthrough for your first experiment.

Develop from source (Git and Node.js 22.22+ required)
git clone https://github.com/lab-emi/OpenDPD.git
cd OpenDPD
uv venv --python 3.12
uv pip install --python .venv -e ".[dev]" --torch-backend=auto
npm --prefix frontend ci
npm --prefix frontend run build
uv run --no-project --python .venv opendpd gui

The PA → DPD workflow

Step What you do What you learn
1. Make or select data Generate x → configure a Virtual PA → simulate y → create a paired dataset; or open existing x/y data. Input/output provenance, signal quality and data splits.
2. Model the PA Train a behavioral model, then test it on held-out data. How closely it predicts the dataset response, measured or explicitly synthetic.
3. Train DPD Place a predistorter before the trained PA model. Whether the simulated cascade becomes more linear.
4. Test & export Compare results and export the predistorted I/Q signal. A PA input signal ready for a separate measurement experiment.

A DPD result evaluated through a PA model is a simulation. Exported u = DPD(x) is the PA input; a physical PA measurement is needed to establish measured linearization performance. See the Studio walkthrough and measured DPD guide.

PA Library guide · Reading signal-chain PSD plots

Studio 2.2.9: Signal Analyzer with independent spectrum and spectrogram

Choose your next step

I want to… Read
Run the same workspace experiments from a terminal Headless CLI
Train from Python or try a notebook Examples · API reference
Understand the original training pipeline and quantization Training guide
Use my own I/Q measurements through Python or the CLI Dataset formats · Import & preprocessing
Configure plots, animations and dashboards Visualization guide
Compare models or reproduce a paper Benchmark · Reproduction guide
Evaluate waveforms, streaming or hardware export Advanced guides
Resolve installation or signal-metric questions FAQ

Contribute & cite

Contributions of models, tests and documentation are welcome. Start with CONTRIBUTING.md; see testing and how we maintain the docs.

If you use OpenDPD in research, cite the OpenDPD paper. BibTeX and related papers · CITATION.cff

Chang Gao — Project Leader · Yizhuo Wu — Leading Developer. Meet the team · EMI Lab

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opendpd-2.2.9.tar.gz (75.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opendpd-2.2.9-py3-none-any.whl (36.9 MB view details)

Uploaded Python 3

File details

Details for the file opendpd-2.2.9.tar.gz.

File metadata

  • Download URL: opendpd-2.2.9.tar.gz
  • Upload date:
  • Size: 75.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for opendpd-2.2.9.tar.gz
Algorithm Hash digest
SHA256 d89365c8b149cd3bd03b69169e780addf161c346e53f85805109483bf28d4496
MD5 97391c0a3bdaea2b62f21dbd24ee9337
BLAKE2b-256 2fa2d9e8c00e719a8ea8cf5f0ab7329b2ff318598e0d56a79a551d0444f7ca5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for opendpd-2.2.9.tar.gz:

Publisher: publish.yml on lab-emi/OpenDPD

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file opendpd-2.2.9-py3-none-any.whl.

File metadata

  • Download URL: opendpd-2.2.9-py3-none-any.whl
  • Upload date:
  • Size: 36.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for opendpd-2.2.9-py3-none-any.whl
Algorithm Hash digest
SHA256 b72d21416879ffb50ff35fdde2e9f7b0807e3cc3e9006281d058eb90b3f88ee7
MD5 cc7d5d015c504ff40cf591012f594f28
BLAKE2b-256 f0df2a5f7a25ecdb4b3788e43d14993a4dc73ee3f921d8b2457dfd58e1b3cbc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for opendpd-2.2.9-py3-none-any.whl:

Publisher: publish.yml on lab-emi/OpenDPD

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

2.2.14

2 files

2.2.13

2 files

2.2.12

2 files

2.2.11

2 files

2.2.10

2 files

This release

2.2.9 This release

2 files

2.2.8

2 files

2.2.7

2 files

2.2.6

2 files

2.2.5

2 files

2.2.4

2 files

2.2.3

2 files

2.2.2

2 files

2.2.1

2 files

2.2.0

2 files

2.1.0

2 files

2.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page