Backend-agnostic bridge for quantum-classical hybrid workflows with auto-fallback and error mitigation
Project description
Quantum-Bridge
Backend-agnostic bridge for quantum-classical hybrid workflows with automatic fallback and error mitigation.
For Python Developers Learning Quantum Computing
Quantum computing uses qubits instead of classical bits. Unlike regular bits (which are 0 or 1), qubits can be in "superposition" - effectively both 0 and 1 at once. When measured, they collapse to a definite value.
A quantum circuit is a sequence of operations (gates) applied to qubits:
- H gate: Puts a qubit in superposition
- CX gate: Entangles two qubits
- Measurement: Reads the qubit state (collapses superposition)
Quantum-Bridge lets you run these circuits without worrying about which quantum computer or simulator is available.
Installation
# Core package (simulator only)
pip install quantum-bridge
# With IBM Quantum support
pip install quantum-bridge[qiskit]
# With Google Cirq support
pip install quantum-bridge[cirq]
# With error mitigation
pip install quantum-bridge[mitiq]
# Everything
pip install quantum-bridge[all]
Quick Start
Python API
from quantum_bridge import HybridExecutor
# Create executor (auto-discovers available backends)
executor = HybridExecutor()
# Run a circuit (Qiskit, Cirq, or QASM string)
result = executor.execute(my_circuit, shots=1024)
print(result.counts) # {'00': 512, '11': 512}
print(result.backend_name) # 'simulator'
Command Line
# List available backends
qbridge backends list
# Run a QASM file
qbridge run bell.qasm --shots 2048
# See execution plan before running
qbridge plan my_circuit.qasm
# Run with error mitigation
qbridge run circuit.qasm --mitigate
Features
Automatic Backend Fallback
If your primary backend fails, Quantum-Bridge automatically tries the next one:
from quantum_bridge import HybridExecutor
from quantum_bridge.backends import get_backend
executor = HybridExecutor([
get_backend("qiskit"), # Try IBM Quantum first
get_backend("simulator"), # Fall back to simulator
])
# If Qiskit times out or errors, simulator is used automatically
result = executor.execute(circuit)
Multiple Circuit Formats
Accept circuits from any major framework:
# Qiskit circuit
from qiskit import QuantumCircuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
result = executor.execute(qc)
# Cirq circuit
import cirq
q0, q1 = cirq.LineQubit.range(2)
circuit = cirq.Circuit([cirq.H(q0), cirq.CNOT(q0, q1)])
result = executor.execute(circuit)
# OpenQASM string
qasm = """
OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
creg c[2];
h q[0];
cx q[0], q[1];
measure q -> c;
"""
result = executor.execute(qasm)
Error Mitigation
Improve result quality using Zero-Noise Extrapolation (requires mitiq):
# Enable mitigation
result = executor.execute(circuit, mitigate=True)
print(result.metadata["zne_applied"]) # True
Execution Plans
Preview what will happen before running:
plan = executor.plan(circuit, shots=2048)
print(plan)
# Execution Plan:
# Circuit: 2 qubits, 3 gates
# Backend: qiskit
# Fallback: simulator
# Shots: 2048
# Mitigation: disabled
# Approve and execute
result = executor.execute(circuit, shots=plan.estimated_shots)
Batch Execution
Run multiple circuits efficiently:
circuits = [circuit1, circuit2, circuit3]
batch = executor.execute_batch(circuits, shots=1024)
print(f"Succeeded: {batch.succeeded}, Failed: {batch.failed}")
for result in batch.successful_results():
print(result.counts)
Configuration
from quantum_bridge import ExecutionConfig, HybridExecutor
from quantum_bridge.config import BackendConfig, FallbackConfig
config = ExecutionConfig(
default_shots=2048,
backends=[
BackendConfig(name="qiskit", priority=0),
BackendConfig(name="simulator", priority=1),
],
fallback=FallbackConfig(
enabled=True,
max_attempts=3,
timeout_seconds=300,
),
)
executor = HybridExecutor(config=config)
Requirements
- Python 3.10+
- numpy
Optional:
- qiskit, qiskit-aer, qiskit-ibm-runtime (for IBM Quantum)
- cirq (for Google Cirq)
- mitiq (for error mitigation)
License
MIT License - see LICENSE file.
Support
If you find this project useful, consider supporting development:
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 quantum_bridge-1.0.0.tar.gz.
File metadata
- Download URL: quantum_bridge-1.0.0.tar.gz
- Upload date:
- Size: 42.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
867fc8f3a232fe0a1b65dbdfbbc9b988ae266409939aae7a7ca8a1602650cb08
|
|
| MD5 |
eba4fa314dbb99528fceec9f215fc5ac
|
|
| BLAKE2b-256 |
8f9331c7b883d59d6a01f2a7653e6e1471124b35581839acb10c4cd8cc42e0fa
|
File details
Details for the file quantum_bridge-1.0.0-py3-none-any.whl.
File metadata
- Download URL: quantum_bridge-1.0.0-py3-none-any.whl
- Upload date:
- Size: 42.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fcfcca4bd2cc265d6c612b9888941f4de38c4e49484961e4faedfa85819fd88
|
|
| MD5 |
0f1d008de7ec5fe9f5b06b31572bf72e
|
|
| BLAKE2b-256 |
4a6836e6b32489a37823287e6e41af32b3bf5ae6784f624f8ba38667ad030a35
|