erado¶
Simulation suite for erasure noise and postselection as quantum error mitigation.
ērādō
Latin verb; third conjugation
to scrape away, pare
to abolish, eradicate, remove
to erase, delete
Overview¶
erado is OQC’s Qiskit-based Python library for the simulation of circuit-level erasure noise and postselection, with arbitrary quantum circuits.
For a conceptual introduction, usage instructions and API reference, please see the library documentation.
For theoretical background and numerical details, see our corresponding paper: coming very soon!
Installation¶
Published package¶
The erado Python package is published to PyPI (https://pypi.org/project/erado), so you can install it easily via pip (or any similar package manager), e.g.:
pip install erado
or add it as a dependency in your pyproject.toml file (automatically or manually) if using a package manager such as uv or Poetry, e.g.:
uv add erado
⚠️ NOTE: GPU capabilities are provided by the
qiskit-aer-gpu-cu11package, which is only available on x86_64 Linux. Therefore,qiskit-aer-gpu-cu11will be installed ifsys.platform() == "linux", otherwiseqiskit-aerwill be installed (i.e. if on Windows etc.).
From source (uv)¶
This package uses uv for Python project management. For more information on installation from source and development/testing utilities, please see our contribution guidelines.
Example usage¶
A motivating example for a simulation running a Qiskit circuit with erasure noise, imperfect erasure checks and postselection (including per-shot circuit fidelity) is as follows:
from erado import (
circuits,
models,
fidelity,
frontend,
)
import qiskit_aer
n_qubits = 5
circuit = circuits.qft_linear(n_qubits)
circuit.save_statevector(label=fidelity.STATE_LABEL, pershot=True)
circuit.measure_all()
erasure_model = models.ErasureCircuitSampler(
circuit=circuit,
erasure_rate=0.01,
)
backend = qiskit_aer.AerSimulator(method="statevector")
sim_frontend = frontend.ErasureSimFrontend(
model=erasure_model,
false_positive_rate=0.005,
false_negative_rate=0.010,
)
results = sim_frontend.run(
backend=backend,
shots=1000,
postselect=True,
get_fidelities=True,
)
For a more detailed introduction as to how and why to use this library, see our ‘Getting Started’ page.
Acknowledgements¶
This work was supported by the Innovate UK Quantum Missions pilot competition 10148061 DECIDE: Dimon error correction integrated into a data-centre environment.