QubeStack PennyLane plugin. Executes PennyLane circuits on IonQ, QPerfect Mimiq, IQM, and Rigetti via the QuREKA platform.
Project description
qubestack-pennylane
QuREKA backend plugin for PennyLane.
Run PennyLane circuits on IonQ hardware, the QPerfect Mimiq emulator,
IQM superconducting QPUs, or Rigetti superconducting QPUs through the
QuREKA platform. The plugin ships four PennyLane devices
that delegate execution to the same QuREKA gateway used by qubestack-cudaq;
the gateway then forwards jobs to the actual provider.
PennyLane circuit
│
├──► qureka.ionq ──► POST /api/quantum-jobs ──► IonQ Cloud v0.4
│ (qpu.forte-1, ...)
│
├──► qureka.mimiq ──► POST /api/quantum-jobs ──► QPerfect Mimiq
│ QuREKA gateway (sdt.qubesim*)
│ (qubestack-job-engine)
│
├──► qureka.iqm ──► POST /api/quantum-jobs ──► AWS Braket
│ (IQM Garnet / Emerald)
│
└──► qureka.rigetti ──► POST /api/quantum-jobs ──► AWS Braket
(Rigetti Ankaa-3, ...)
Supported Backends
IonQ (qureka.ionq)
| Backend ID | IonQ QPU |
|---|---|
ionq.forte-1 |
IonQ Forte |
ionq.aria-1 |
IonQ Aria 1 |
ionq.aria-2 |
IonQ Aria 2 |
ionq.forte-enterprise-1 |
IonQ Forte Enterprise |
ionq.simulator |
IonQ cloud simulator |
Mimiq (qureka.mimiq)
| Backend ID | Provider |
|---|---|
sdt.qubesim-mimiq |
QPerfect Mimiq emulator (canonical) |
sdt.qubesim* |
Any future Mimiq profile (gateway routes by prefix) |
IQM (qureka.iqm)
| Backend ID | IQM QPU (via AWS Braket) |
|---|---|
iqm.garnet |
IQM Garnet (arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet) |
iqm.emerald |
IQM Emerald (arn:aws:braket:eu-north-1::device/qpu/iqm/Emerald) |
Rigetti (qureka.rigetti)
| Backend ID | Rigetti QPU (via AWS Braket) |
|---|---|
rigetti.ankaa-3 |
Rigetti Ankaa-3 (arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3) |
These match the device maps in qubestack-cudaq and the routing in
qubestack-job-engine. Server-side routing happens by deviceCode prefix:
ionq.* → IonQ Cloud v0.4 directly, sdt.qubesim* → Mimiq, and
iqm.* / rigetti.* → AWS Braket.
Installation
pip install qubestack-pennylane
Requires Python 3.12 (matches qubestack-cudaq's runtime baseline). The
plugin pins pennylane>=0.44,<0.45; tested against the current PyPI stable
PennyLane 0.44.1.
Quick Start
import pennylane as qml
# IonQ hardware
dev = qml.device(
"qureka.ionq",
wires=2,
backend="ionq.forte-1", # see Supported Backends
api_key="<QUREKA_API_KEY>", # or set QUREKA_API_KEY env var
shots=1000,
)
# Mimiq emulator (drop-in alternative)
dev = qml.device(
"qureka.mimiq",
wires=2,
backend="sdt.qubesim-mimiq",
api_key="<QUREKA_API_KEY>",
shots=1000,
)
# IQM superconducting QPU (via AWS Braket)
dev = qml.device(
"qureka.iqm",
wires=2,
backend="iqm.garnet", # or "iqm.emerald"
api_key="<QUREKA_API_KEY>",
shots=1000,
)
# Rigetti superconducting QPU (via AWS Braket)
dev = qml.device(
"qureka.rigetti",
wires=2,
backend="rigetti.ankaa-3",
api_key="<QUREKA_API_KEY>",
shots=1000,
)
@qml.qnode(dev)
def bell():
qml.Hadamard(wires=0)
qml.CNOT(wires=[0, 1])
return qml.counts(wires=[0, 1])
print(bell())
# {'00': ~500, '11': ~500}
Configuration
| Parameter | Required | Description |
|---|---|---|
wires |
Yes | Number of qubits (or list of wire labels). |
shots |
Yes | Sampling shot count. All three devices are sample-based. |
backend |
Yes | Provider device code (tables above). |
api_key |
Yes (or QUREKA_API_KEY) |
QuREKA API key. |
url |
No | QuREKA gateway base URL. Default: QUREKA_TARGET_URL env var, then https://openapi.qureka.io. |
job_name |
No | Optional human-readable label. |
poll_interval |
No | Seconds between status polls (default 5.0). |
timeout |
No | Total seconds to wait for completion (default 600). |
endian |
No | Bit-ordering of gateway counts. Defaults: qureka.ionq="little" (raw IonQ integer keys), qureka.mimiq/qureka.iqm/qureka.rigetti="big" (bitstrings with qubit 0 leftmost). |
Supported Operations
The common qis gateset that the QuREKA gateway can forward to all four
providers (IonQ / Mimiq / IQM / Rigetti):
Hadamard, PauliX/Y/Z, S, T, SX, Identity, CNOT, CZ, SWAP,
RX, RY, RZ, PhaseShift, IsingXX, IsingYY, IsingZZ, plus the
adjoints of S, T, SX, RX, RY, RZ, IsingXX/YY/ZZ.
Higher-level operations (e.g. QFT, Toeplitz) must be decomposed first
via qml.transforms.decompose or qml.transforms.unitary_to_rot before
submission.
Development
git clone <repo>
cd qubestack-pennylane
# Python 3.12 is required.
python3.12 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip setuptools wheel
pip install -e . pytest responses
pytest -v
Architecture
- docs/ionq-integration.md — end-to-end IonQ flow
and side-by-side comparison with
qubestack-cudaq. - docs/mimiq-integration.md — Mimiq emulator integration: routing, JWT-based gateway interaction, big-endian protobuf result wrapper.
- docs/iqm-integration.md — IQM QPU integration via the gateway's AWS Braket route (Garnet / Emerald), whitelist validation, big-endian Braket measurement bitstrings.
- docs/rigetti-integration.md — Rigetti QPU integration via the gateway's AWS Braket route (Ankaa-3), whitelist validation, big-endian Braket measurement bitstrings.
- docs/testing-guide.md — how to run the full test suite and what each one verifies.
- docs/implementation-summary.md — high-level summary of what was built.
License
Apache License 2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qubestack_pennylane-1.2.2.tar.gz.
File metadata
- Download URL: qubestack_pennylane-1.2.2.tar.gz
- Upload date:
- Size: 38.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ea82cb6f482ac97524ea968d5b2a2569ac454c017caf57784205016a6e1fae9
|
|
| MD5 |
fd3f893bddf8dc9f4a594ef5a2c163c0
|
|
| BLAKE2b-256 |
8571544e85d664fd90789212f89e93174ae2b63a13fe0161ee92f018d8bfd017
|
File details
Details for the file qubestack_pennylane-1.2.2-py3-none-any.whl.
File metadata
- Download URL: qubestack_pennylane-1.2.2-py3-none-any.whl
- Upload date:
- Size: 29.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
824f80362497bf590f0c815b60a3253cf2e5faa4e57408581da5b95e6d2a98a7
|
|
| MD5 |
c8529a2426dcfa0c6fd814bd2cf70d5f
|
|
| BLAKE2b-256 |
c2cbe0b1bbdb7b893e66da7c50cc0efa8bc6b9723c6ff978d657c51f44bc4a70
|