Skip to content

Examples

Common quantum circuits utilizing a range of qBraid-compatible frameworks, ready to run in qBraid Lab or your preferred local code editor.

Note

In qBraid Lab, the qBraid SDK is preinstalled and your API key is detected automatically, so you can drop the api_key argument: provider = QbraidProvider().

Bell State (Qiskit)

Target an Open Quantum backend from the qBraid runtime, build a Bell state with Qiskit, run it, and print the measurement counts.

from qbraid.runtime import QbraidProvider
from qiskit import QuantumCircuit

# Your qBraid API key (auto-detected inside qBraid Lab)
provider = QbraidProvider(api_key="YOUR_QBRAID_API_KEY")

# Target an Open Quantum backend
device = provider.get_device("openquantum:iqm:qpu:garnet")

# Build a Bell state with standard Qiskit
circuit = QuantumCircuit(2, 2)
circuit.h(0)
circuit.cx(0, 1)
circuit.measure([0, 1], [0, 1]) 

# Run on real quantum hardware
job = device.run(circuit, shots=1024)
result = job.result()
print(result.data.get_counts())
# e.g. {'00': 503, '11': 521}

Bell State (Cirq)

The same Bell state, built in Cirq.

from qbraid.runtime import QbraidProvider
import cirq

provider = QbraidProvider(api_key="YOUR_QBRAID_API_KEY")
device = provider.get_device("openquantum:iqm:qpu:garnet")

# Build a Bell state with Cirq
q0, q1 = cirq.LineQubit.range(2)
circuit = cirq.Circuit(
    cirq.H(q0),
    cirq.CNOT(q0, q1),
    cirq.measure(q0, q1, key="result"),
)

job = device.run(circuit, shots=1024)
result = job.result()
print(result.data.get_counts())

GHZ State (Qiskit)

3-qubit GHZ State using Qiskit.

from qbraid.runtime import QbraidProvider
from qiskit import QuantumCircuit

provider = QbraidProvider(api_key="YOUR_QBRAID_API_KEY")
device = provider.get_device("openquantum:iqm:qpu:garnet")

# 3-qubit GHZ state
circuit = QuantumCircuit(3, 3)
circuit.h(0)
circuit.cx(0, 1)
circuit.cx(1, 2)
circuit.measure([0, 1, 2], [0, 1, 2])

job = device.run(circuit, shots=1024)
result = job.result()
print(result.data.get_counts())
# e.g. {'000': 490, '111': 502, '010': 16, '101': 16}

Parameterized Rotation with Expectation Value (PennyLane)

Use qBraid's PennyLane plugin to sweep an RX rotation angle and measure the expectation value of PauliZ.

import numpy as np
import pennylane as qml
from pennylane.tape import QuantumTape

from qbraid import QbraidProvider

provider = QbraidProvider(api_key="YOUR_QBRAID_API_KEY")
device = provider.get_device("openquantum:iqm:qpu:garnet")

def rotation_circuit(angle, shots=10):
    with QuantumTape() as tape:
        qml.RX(angle, wires=0)
        qml.sample(wires=0)

    job = device.run(tape, shots=shots)
    result = job.result()
    counts = result.data.get_counts()

    # Compute <Z> manually from measured bitstrings: +1 for '0', -1 for '1'
    total = sum(counts.values())
    expval = sum((1 if bit == "0" else -1) * n for bit, n in counts.items()) / total
    return expval

# Sweep over angles from 0 to 2*pi
angles = np.linspace(0, 2 * np.pi, 8)
for angle in angles:
    result = rotation_circuit(angle)
    print(f"RX({angle:.2f}):  = {result:.4f}")

# e.g.
# RX(0.00):  = 1.0000
# RX(0.90):  = 0.6235
# RX(1.80):  = -0.2272
# RX(2.69):  = -0.9010
# RX(3.59):  = -0.9010
# RX(4.49):  = -0.2272
# RX(5.39):  = 0.6235
# RX(6.28):  = 1.0000

Tip

Simply change the device id to run the same circuit on different hardware, for example provider.get_device("openquantum:ionq:qpu:forte-1"). See Backends & Targets for the full list.

Next Steps