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. Temporary data and results are deleted within 24 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.4 separates PSD plots by signal-chain position: DPD Input, DPD Output / PA Input, and PA Output. Output references and with/without-DPD comparisons share only the PA Output plot, with compact legends and independent chart controls.

Signal Generator creates a PA Input Dataset with separate CSV and metadata downloads. The new PA Library offers nine mathematical Virtual PAs with editable formulas and linked parameter controls. Explicitly simulate the output, create a paired synthetic dataset, and continue to PA/DPD training and testing. An expandable workflow diagram follows your progress.

See the 2.2.4 release notes and Signal Generator guide. Standard presets are uncoded engineering stimuli; Wi-Fi 8 is experimental. Local Studio also adds research comparisons, publication figures and reproduction, measurement sessions, Sweep Board, hardware cost evidence and optional dataset contribution PRs for human review.

  • CUDA replay for supported native models reduces dispatch overhead while retaining the existing optimizer, precision, batches and scheduler.
  • Quick/full training defaults are 10/150 epochs; plots update once per epoch; DPD previews capture the intermediate signal in a bounded shadow-model forward pass.
  • See the 2.2.1 performance measurements and release notes.
  • Guided experiments: explore built-in I/Q data, train and test PA/DPD models, and choose from the original backbone registry.
  • Live feedback: separate epoch and batch progress bars, NMSE and other task metrics, live signal plots, reconnectable experiments and a Stop control.
  • Download models while training: save the best checkpoint so far; after training, download the selected final model. Compare compatible runs and export reports.
  • Browser and local workbench: nine interface languages, English by default, CUDA when available, touch-friendly plots and system light/dark themes.

Bring your own CSV: upload UTF-8 CSV with two complex columns or four real I/Q columns, up to 25 MiB and 1,000,000 paired samples. Every row is validated in quarantine before preview; rejected uploads are deleted. Code, package and checkpoint uploads are unavailable in the public app.

For a hosted installation, the public Studio deployment guide covers GitHub Pages, a Cloudflare Tunnel and isolated local VM compute, with temporary sessions and automatic file deletion within 24 hours.

Feature history · Verified platform status

Get started with Studio

Open the hosted Studio now, or install the packaged local app with Python 3.10–3.13:

python -m pip install "opendpd[gui]==2.2.4"
opendpd gui

The wheel includes the frontend; Node.js is not needed. For development from source, also install Git and Node.js 22.22+:

git clone https://github.com/lab-emi/OpenDPD.git
cd OpenDPD
python -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[gui]"
npm --prefix frontend ci
npm --prefix frontend run build
opendpd gui

This opens Studio locally in your browser. For Windows, a native desktop window, GPU setup, or a core-only installation, see Installation.

Click Get Started → Signal Generator to create a waveform, then Choose Virtual PA to simulate a paired dataset. Or choose Use an existing dataset → DPA_200MHz to go directly to PA Training. Use Starting settings → Quick trial to check the pipeline, then choose Full training for a longer experiment. Quick trial defaults to 10 epochs; full training defaults to 150 epochs. Plots update once per epoch; DPD previews show x, u and PA(u) from the same bounded validation probe. Advanced settings offer an optional batch preview interval with a red warning because extra previews can severely slow training.

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.4: independent signal-chain PSD plots

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.4.tar.gz (74.0 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.4-py3-none-any.whl (35.8 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: opendpd-2.2.4.tar.gz
  • Upload date:
  • Size: 74.0 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.4.tar.gz
Algorithm Hash digest
SHA256 651394936f0c80f0620cf8377797e8b1dcd3e11bda7ec22ea18e3ed4d04d2017
MD5 d5d222b6f52adcf6e2bc0d7e072884ef
BLAKE2b-256 123994fc64eb994100795d64c85d725cfd4cb75dc5de1ad6a3d6b65d0c99e87f

See more details on using hashes here.

Provenance

The following attestation bundles were made for opendpd-2.2.4.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.4-py3-none-any.whl.

File metadata

  • Download URL: opendpd-2.2.4-py3-none-any.whl
  • Upload date:
  • Size: 35.8 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1bd350e7119de5045a14db9d21c5476ee7215fd7e8af02fa93abee0ef2c8a1ef
MD5 dd074bf7dba49c3787f87257a316f866
BLAKE2b-256 98a5f307103890aee9f80a17acd2f03a993cdf829858877f5dc818acfe57305c

See more details on using hashes here.

Provenance

The following attestation bundles were made for opendpd-2.2.4-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

2.2.9

2 files

2.2.8

2 files

2.2.7

2 files

2.2.6

2 files

2.2.5

2 files

This release

2.2.4 This release

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