Coherence experiments#

%load_ext autoreload
%autoreload 2

from iqm.benchmarks.coherence.coherence import *
from iqm.qiskit_iqm import IQMProvider
import numpy as np
import os

Set IQM Token if using Resonance#

# import os
# from iqm.qiskit_iqm import IQMProvider
#
# token = ""
# os.environ["IQM_TOKEN"] = token
# quantum_computer = "" # provide actual quantum computer name. i.e. "emerald", "garnet", "sirius"
# iqm_server_url = "https://resonance.iqm.tech/" # provide actual IQM server URL
# os.environ["IQM_SERVER_URL"] = iqm_server_url
#
# provider = IQMProvider(iqm_server_url, quantum_computer=quantum_computer)
# backend = provider.get_backend()

Alternatively choose (or define) a simulator backend#

#backend = "fakeadonis"
backend = "fakeapollo"

Coherence Configuration#

EXAMPLE = CoherenceConfiguration(
    delays = list(np.linspace(0, 100e-6, 100)), # Delays specified in seconds
    qiskit_optim_level = 3,
    optimize_sqg = True,
    coherence_exp = "t2_echo", # Options: "t1", "t2_echo"
    qubits_to_plot=list(range(10)), # Give the list of qubits you want to plot
    shots = 1000,
    max_circuits_per_batch=100,
    )

Run the experiment#

benchmark = CoherenceBenchmark(backend, EXAMPLE)
run = benchmark.run()

Perform analysis and plot results#

result = benchmark.analyze()
result.plot_all()
# Shot individual results and uncertainties
result.observations