From e292ae5164089b7a7aa9f7367763b7f903d83f88 Mon Sep 17 00:00:00 2001 From: Andrea Date: Fri, 6 Dec 2024 14:46:06 +0400 Subject: [PATCH 1/5] feat: Adding number of flips to DRAG --- src/qibocal/protocols/drag.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/qibocal/protocols/drag.py b/src/qibocal/protocols/drag.py index ca22fae30..4afce36b4 100644 --- a/src/qibocal/protocols/drag.py +++ b/src/qibocal/protocols/drag.py @@ -39,6 +39,8 @@ class DragTuningParameters(Parameters): unrolling: bool = False """If ``True`` it uses sequence unrolling to deploy multiple sequences in a single instrument call. Defaults to ``False``.""" + nflips: int = 1 + """Repetitions of (Xpi - Xmpi).""" @dataclass @@ -97,11 +99,17 @@ def _acquisition( ) drag_negative = replace(drag, relative_phase=np.pi) - # TODO: here we can add pairs of this in a for loop - sequence.append((qd_channel, drag)) - sequence.append((qd_channel, drag_negative)) + for _ in range(params.nflips): + sequence.append((qd_channel, drag)) + sequence.append((qd_channel, drag_negative)) sequence.append( - (ro_channel, Delay(duration=drag.duration + drag_negative.duration)) + ( + ro_channel, + Delay( + duration=params.nflips + * (drag.duration + drag_negative.duration) + ), + ) ) sequence.append((ro_channel, ro_pulse)) From 1a2b2cc7b9bf1cde49b8f0c216e8445fd28b5100 Mon Sep 17 00:00:00 2001 From: Andrea Date: Fri, 6 Dec 2024 20:20:10 +0400 Subject: [PATCH 2/5] feat: Add new DRAG protocol --- src/qibocal/protocols/__init__.py | 2 + src/qibocal/protocols/drag_simple.py | 259 +++++++++++++++++++++++++++ 2 files changed, 261 insertions(+) create mode 100644 src/qibocal/protocols/drag_simple.py diff --git a/src/qibocal/protocols/__init__.py b/src/qibocal/protocols/__init__.py index f6aa87e61..37c9cea57 100644 --- a/src/qibocal/protocols/__init__.py +++ b/src/qibocal/protocols/__init__.py @@ -11,6 +11,7 @@ from .dispersive_shift import dispersive_shift from .dispersive_shift_qutrit import dispersive_shift_qutrit from .drag import drag_tuning +from .drag_simple import drag_simple from .flipping import flipping from .flux_dependence.qubit_crosstalk import qubit_crosstalk from .flux_dependence.qubit_flux_dependence import qubit_flux @@ -104,4 +105,5 @@ "standard_rb_2q_inter", "optimize_two_qubit_gate", "ramsey_zz", + "drag_simple", ] diff --git a/src/qibocal/protocols/drag_simple.py b/src/qibocal/protocols/drag_simple.py new file mode 100644 index 000000000..c0f2a824b --- /dev/null +++ b/src/qibocal/protocols/drag_simple.py @@ -0,0 +1,259 @@ +from dataclasses import dataclass + +import numpy as np +import plotly.graph_objects as go +from qibolab import AcquisitionType, AveragingMode, Delay, Drag, Pulse, PulseSequence +from scipy.optimize import curve_fit + +from qibocal import update +from qibocal.auto.operation import QubitId, Routine +from qibocal.calibration import CalibrationPlatform +from qibocal.protocols import drag +from qibocal.result import probability +from qibocal.update import replace + +from .utils import COLORBAND, COLORBAND_LINE, table_dict, table_html + +SEQUENCES = ["YpX9", "XpY9"] +"""Sequences used to fit drag parameter.""" + + +@dataclass +class DragTuningSimpleParameters(drag.DragTuningParameters): + """DragTuningSimple runcard inputs.""" + + +@dataclass +class DragTuningSimpleResults(drag.DragTuningResults): + """DragTuningSimple outputs.""" + + # TODO: to be removed + def __contains__(self, key): + return True + + +@dataclass +class DragTuningSimpleData(drag.DragTuningData): + """DragTuningSimple acquisition outputs.""" + + def __getitem__(self, key: tuple[QubitId, str]): + qubit, setup = key + if setup == "YpX9": + return self.data[qubit][::2] + return self.data[qubit][1::2] + + +def add_drag(pulse: Pulse, beta: float) -> Pulse: + """Add DRAG component to Gaussian Pulse.""" + return replace(pulse, envelope=Drag(rel_sigma=pulse.envelope.rel_sigma, beta=beta)) + + +def _acquisition( + params: DragTuningSimpleParameters, + platform: CalibrationPlatform, + targets: list[QubitId], +) -> DragTuningSimpleData: + """Acquisition function for DRAG experiments. + + We execute two sequences YpX9 and XpY9 following + https://rsl.yale.edu/sites/default/files/2024-08/2011-RSL-Thesis-Matthew-Reed.pdf + for different value of the DRAG parameter. + """ + + data = DragTuningSimpleData() + beta_range = np.arange(params.beta_start, params.beta_end, params.beta_step) + + sequences, all_ro_pulses = [], [] + for beta in beta_range: + for setup in SEQUENCES: + sequence = PulseSequence() + ro_pulses = {} + for q in targets: + natives = platform.natives.single_qubit[q] + ro_channel, ro_pulse = natives.MZ()[0] + if setup == "YpX9": + qd_channel, ry = natives.R(phi=np.pi / 2)[0] + _, rx90 = natives.R(theta=np.pi / 2)[0] + sequence.append((qd_channel, add_drag(ry, beta=beta))) + sequence.append((qd_channel, add_drag(rx90, beta=beta))) + sequence.append( + (ro_channel, Delay(duration=rx90.duration + ry.duration)) + ) + else: + qd_channel, rx = natives.RX()[0] + _, ry90 = natives.R(theta=np.pi / 2, phi=np.pi / 2)[0] + sequence.append((qd_channel, add_drag(rx, beta=beta))) + sequence.append((qd_channel, add_drag(ry90, beta=beta))) + sequence.append( + (ro_channel, Delay(duration=rx.duration + ry90.duration)) + ) + sequence.append((ro_channel, ro_pulse)) + + sequences.append(sequence) + all_ro_pulses.append( + { + qubit: list(sequence.channel(platform.qubits[q].acquisition))[-1] + for qubit in targets + } + ) + + options = { + "nshots": params.nshots, + "relaxation_time": params.relaxation_time, + "acquisition_type": AcquisitionType.DISCRIMINATION, + "averaging_mode": AveragingMode.SINGLESHOT, + } + + # execute the pulse sequence + if params.unrolling: + results = platform.execute(sequences, **options) + for beta, ro_pulses in zip(np.repeat(beta_range, 2), all_ro_pulses): + for qubit in targets: + result = results[ro_pulses[qubit].id] + prob = probability(result, state=1) + # store the results + data.register_qubit( + drag.DragTuningType, + (qubit), + dict( + prob=np.array([prob]), + error=np.array([np.sqrt(prob * (1 - prob) / params.nshots)]), + beta=np.array([beta]), + ), + ) + else: + for i, sequence in enumerate(sequences): + result = platform.execute([sequence], **options) + setup = "YpX9" if i % 2 == 2 else "XpY9" + for qubit in targets: + ro_pulse = list(sequence.channel(platform.qubits[qubit].acquisition))[ + -1 + ] + prob = probability(result[ro_pulse.id], state=1) + # store the results + data.register_qubit( + drag.DragTuningType, + (qubit), + dict( + prob=np.array([prob]), + error=np.array([np.sqrt(prob * (1 - prob) / params.nshots)]), + beta=np.array([beta_range[i // 2]]), + ), + ) + + return data + + +def _fit(data: DragTuningSimpleData) -> DragTuningSimpleResults: + """Post-processing for DRAG protocol. + + A linear fit is applied for the probability of both sequences. + The optimal is determined as the point in which the two lines met. + """ + qubits = data.qubits + fitted_parameters = {} + betas_optimal = {} + for qubit in qubits: + for setup in SEQUENCES: + qubit_data = data[qubit, setup] + popt, _ = curve_fit( + lambda x, a, b: a * x + b, qubit_data.beta, qubit_data.prob + ) + fitted_parameters[qubit, setup] = popt.tolist() + betas_optimal[qubit] = -( + fitted_parameters[qubit, "YpX9"][1] - fitted_parameters[qubit, "XpY9"][1] + ) / (fitted_parameters[qubit, "YpX9"][0] - fitted_parameters[qubit, "XpY9"][0]) + + return DragTuningSimpleResults(betas_optimal, fitted_parameters) + + +def _plot(data: DragTuningSimpleData, target: QubitId, fit: DragTuningSimpleResults): + """Plotting function for DragTuning.""" + + figures = [] + fitting_report = "" + + fig = go.Figure() + for setup in SEQUENCES: + qubit_data = data[target, setup] + fig.add_trace( + go.Scatter( + x=qubit_data.beta, + y=qubit_data.prob, + opacity=1, + mode="lines", + name=setup, + showlegend=True, + legendgroup=setup, + ) + ) + + fig.add_trace( + go.Scatter( + x=np.concatenate((qubit_data.beta, qubit_data.beta[::-1])), + y=np.concatenate( + ( + qubit_data.prob + qubit_data.error, + (qubit_data.prob - qubit_data.error)[::-1], + ) + ), + fill="toself", + fillcolor=COLORBAND, + line=dict(color=COLORBAND_LINE), + name=setup, + showlegend=False, + legendgroup=setup, + ) + ) + + # # add fitting traces + if fit is not None: + for setup in SEQUENCES: + qubit_data = data[target, setup] + betas = qubit_data.beta + beta_range = np.linspace( + min(betas), + max(betas), + 20, + ) + + fig.add_trace( + go.Scatter( + x=beta_range, + y=fit.fitted_parameters[target, setup][0] * betas + + fit.fitted_parameters[target, setup][1], + name=f"Fit {setup}", + line=go.scatter.Line(dash="dot"), + ), + ) + fitting_report = table_html( + table_dict( + target, + ["Best DRAG parameter"], + [np.round(fit.betas[target], 4)], + ) + ) + + fig.update_layout( + showlegend=True, + xaxis_title="Beta parameter", + yaxis_title="Excited state probability", + ) + + figures.append(fig) + + return figures, fitting_report + + +def _update( + results: DragTuningSimpleResults, platform: CalibrationPlatform, target: QubitId +): + update.drag_pulse_beta( + results.betas[target], + platform, + target, + ) + + +drag_simple = Routine(_acquisition, _fit, _plot, _update) +"""DragTuning Routine object.""" From e873e5f27ee01d1d22ed0178ecbea3c3569e2d2f Mon Sep 17 00:00:00 2001 From: Andrea Date: Fri, 10 Jan 2025 14:18:28 +0400 Subject: [PATCH 3/5] chore: Add drag_simple to tests --- src/qibocal/protocols/drag_simple.py | 3 +-- tests/runcards/protocols.yml | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/qibocal/protocols/drag_simple.py b/src/qibocal/protocols/drag_simple.py index c0f2a824b..a93acac0a 100644 --- a/src/qibocal/protocols/drag_simple.py +++ b/src/qibocal/protocols/drag_simple.py @@ -27,9 +27,8 @@ class DragTuningSimpleParameters(drag.DragTuningParameters): class DragTuningSimpleResults(drag.DragTuningResults): """DragTuningSimple outputs.""" - # TODO: to be removed def __contains__(self, key): - return True + return key in self.betas @dataclass diff --git a/tests/runcards/protocols.yml b/tests/runcards/protocols.yml index 9c54bd387..d4a1f2816 100644 --- a/tests/runcards/protocols.yml +++ b/tests/runcards/protocols.yml @@ -551,6 +551,23 @@ actions: nshots: 10 unrolling: true + - id: drag_pulse_simple + operation: drag_simple + parameters: + beta_start: 0 + beta_end: 0.1 + beta_step: 0.01 + nshots: 10 + + - id: drag_pulse_simple_unrolling + operation: drag_simple + parameters: + beta_start: 0 + beta_end: 0.1 + beta_step: 0.01 + nshots: 10 + unrolling: true + - id: spin_echo operation: spin_echo parameters: From 4448a5bb4ee82081c7c2417e3d4eedbe6e7d56e7 Mon Sep 17 00:00:00 2001 From: Andrea Date: Wed, 15 Jan 2025 13:26:27 +0400 Subject: [PATCH 4/5] doc: Add documentation for DRAG --- doc/source/protocols/drag/drag.rst | 94 ++++++++++++++++++++++ doc/source/protocols/drag/drag_simple.png | Bin 0 -> 44734 bytes doc/source/protocols/drag/drag_tuning.png | Bin 0 -> 30157 bytes doc/source/protocols/index.rst | 1 + doc/source/refs.bib | 50 ++++++++++++ 5 files changed, 145 insertions(+) create mode 100644 doc/source/protocols/drag/drag.rst create mode 100644 doc/source/protocols/drag/drag_simple.png create mode 100644 doc/source/protocols/drag/drag_tuning.png diff --git a/doc/source/protocols/drag/drag.rst b/doc/source/protocols/drag/drag.rst new file mode 100644 index 000000000..4c986f886 --- /dev/null +++ b/doc/source/protocols/drag/drag.rst @@ -0,0 +1,94 @@ +DRAG experiments +================ + +In this section we show how to run Ramsey experiments using Qibocal + +.. _drag: + + +DRAG :cite:p:`Motzoi_2009, Gambetta_2011`: pulses can be used to lower both phase and leakage errors, +it consists in adding a quadrature component to the pulse which is proportional +to the time derivative of the phase component. Given a pulse with a phase component :math:`\Omega_x` +the quadrature component :math:`\Omega_y` is evaluated as + +.. math:: + + \Omega_y (t) = \beta \frac{d\Omega_x}{dt} , + +where :math:`\beta` is a scaling parameter. + +Qibocal provides two separate protocols to extract :math:`\beta`. + + +Method 1 +-------- + +:math:`\beta` can be extracted by playing the pulse sequence composed by +:math:`[R_X(\pi) - R_X(-\pi)]^N` for different values of :math:`\beta` as shown in :cite:p:`Sheldon_2016`. +The post-processing consists in measuring the probability of :math:`\ket{0}` for every :math:`\beta` +and fitting the curve with a cosine. The correct :math:`\beta` value is the one which maximizes +the curve. + +Parameters +^^^^^^^^^^ + +.. autoclass:: qibocal.protocols.drag.DragTuningParameters + :noindex: + +Example +^^^^^^^ + +.. code-block:: yaml + + - id: drag tuning + operation: drag_tuning + parameters: + beta_start: -1 + beta_end: 1 + beta_step: 0.1 + nflips: 5 + unrolling: true + + +Running this protocol you should get something like this: + +.. image:: drag_tuning.png + + +Method 2 +-------- + +The second method consists in playing two different sequences +:math:`R_Y(\pi) R_X(\pi/2)` and :math:`R_X(\pi) R_Y(\pi/2)` which are two +of the AllXY pulses which exhibit opposite sign of phase error as highlighted +in :cite:p:`reed2013entanglementquantumerrorcorrection`. +The post-processing consists in measuring the probability of :math:`\ket{1}` for every :math:`\beta` +and performing a linear fit for both sequences. The correct :math:`\beta` value is the one where the two lines +cross. + +Parameters +^^^^^^^^^^ + +.. autoclass:: qibocal.protocols.drag_simple.DragTuningSimpleParameters + :noindex: + +Example +^^^^^^^ + +.. code-block:: yaml + + - id: drag simple + operation: drag_simple + parameters: + beta_start: -1 + beta_end: 1 + beta_step: 0.1 + unrolling: true + +.. image:: drag_simple.png + + +Requirements +^^^^^^^^^^^^ + +- :ref:`single-shot` diff --git a/doc/source/protocols/drag/drag_simple.png b/doc/source/protocols/drag/drag_simple.png new file mode 100644 index 0000000000000000000000000000000000000000..8cdb0c3df1bcf778a2095856eae0eb72458c04e6 GIT binary patch literal 44734 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 literal 0 HcmV?d00001 diff --git a/doc/source/protocols/drag/drag_tuning.png b/doc/source/protocols/drag/drag_tuning.png new file mode 100644 index 0000000000000000000000000000000000000000..5077f1cf460d5248fc25ef6eb7b750459571e3d3 GIT binary patch literal 30157 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

P@VaEI*I#sf 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 V%?{dr2=on}A0*}9mW%88{vXBU073u& literal 0 HcmV?d00001 diff --git a/doc/source/protocols/index.rst b/doc/source/protocols/index.rst index 65d13f95d..9923293bc 100644 --- a/doc/source/protocols/index.rst +++ b/doc/source/protocols/index.rst @@ -28,6 +28,7 @@ In this section we introduce the basics of all protocols supported by ``qibocal` dispersive_shift allxy flipping + drag/drag readout_mitigation_matrix readout_optimization standard_rb diff --git a/doc/source/refs.bib b/doc/source/refs.bib index b971ff08d..a6fb06f20 100644 --- a/doc/source/refs.bib +++ b/doc/source/refs.bib @@ -190,3 +190,53 @@ @article{Nielsen_2002 author={Nielsen, Michael A}, year={2002}, month=oct, pages={249–252} } + +@article{Motzoi_2009, + title={Simple Pulses for Elimination of Leakage in Weakly Nonlinear Qubits}, + volume={103}, + ISSN={1079-7114}, + url={http://dx.doi.org/10.1103/PhysRevLett.103.110501}, + DOI={10.1103/physrevlett.103.110501}, + number={11}, + journal={Physical Review Letters}, + publisher={American Physical Society (APS)}, + author={Motzoi, F. and Gambetta, J. M. and Rebentrost, P. and Wilhelm, F. K.}, + year={2009}, + month=sep } + + +@article{Gambetta_2011, + title={Analytic control methods for high-fidelity unitary operations in a weakly nonlinear oscillator}, + volume={83}, + ISSN={1094-1622}, + url={http://dx.doi.org/10.1103/PhysRevA.83.012308}, + DOI={10.1103/physreva.83.012308}, + number={1}, + journal={Physical Review A}, + publisher={American Physical Society (APS)}, + author={Gambetta, J. M. and Motzoi, F. and Merkel, S. T. and Wilhelm, F. K.}, + year={2011}, + month=jan } + +@article{Sheldon_2016, + title={Characterizing errors on qubit operations via iterative randomized benchmarking}, + volume={93}, + ISSN={2469-9934}, + url={http://dx.doi.org/10.1103/PhysRevA.93.012301}, + DOI={10.1103/physreva.93.012301}, + number={1}, + journal={Physical Review A}, + publisher={American Physical Society (APS)}, + author={Sheldon, Sarah and Bishop, Lev S. and Magesan, Easwar and Filipp, Stefan and Chow, Jerry M. and Gambetta, Jay M.}, + year={2016}, + month=jan } + +@misc{reed2013entanglementquantumerrorcorrection, + title={Entanglement and Quantum Error Correction with Superconducting Qubits}, + author={Matthew Reed}, + year={2013}, + eprint={1311.6759}, + archivePrefix={arXiv}, + primaryClass={quant-ph}, + url={https://arxiv.org/abs/1311.6759}, +} From 2faf087fe1b3013bb8ec8897461baa433415b0c1 Mon Sep 17 00:00:00 2001 From: Andrea Pasquale Date: Thu, 16 Jan 2025 08:42:18 +0100 Subject: [PATCH 5/5] doc: Hayk review Co-authored-by: Hayk Sargsyan <52532457+hay-k@users.noreply.github.com> --- doc/source/protocols/drag/drag.rst | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/doc/source/protocols/drag/drag.rst b/doc/source/protocols/drag/drag.rst index 4c986f886..f05fdb6ba 100644 --- a/doc/source/protocols/drag/drag.rst +++ b/doc/source/protocols/drag/drag.rst @@ -1,14 +1,14 @@ DRAG experiments ================ -In this section we show how to run Ramsey experiments using Qibocal +In this section we show how to run DRAG experiments using Qibocal .. _drag: -DRAG :cite:p:`Motzoi_2009, Gambetta_2011`: pulses can be used to lower both phase and leakage errors, -it consists in adding a quadrature component to the pulse which is proportional -to the time derivative of the phase component. Given a pulse with a phase component :math:`\Omega_x` +DRAG :cite:p:`Motzoi_2009, Gambetta_2011`: pulses can be used to lower both phase and leakage errors. +It consists of adding a quadrature component to the pulse which is proportional +to the time derivative of the in-phase component. Given a pulse with an in-phase component :math:`\Omega_x` the quadrature component :math:`\Omega_y` is evaluated as .. math:: @@ -17,15 +17,15 @@ the quadrature component :math:`\Omega_y` is evaluated as where :math:`\beta` is a scaling parameter. -Qibocal provides two separate protocols to extract :math:`\beta`. +Qibocal provides two separate protocols to calibrate :math:`\beta`. Method 1 -------- -:math:`\beta` can be extracted by playing the pulse sequence composed by +:math:`\beta` can be extracted by playing the pulse sequence composed of :math:`[R_X(\pi) - R_X(-\pi)]^N` for different values of :math:`\beta` as shown in :cite:p:`Sheldon_2016`. -The post-processing consists in measuring the probability of :math:`\ket{0}` for every :math:`\beta` +The post-processing consists of measuring the probability of :math:`\ket{0}` for every :math:`\beta` and fitting the curve with a cosine. The correct :math:`\beta` value is the one which maximizes the curve. @@ -58,11 +58,11 @@ Running this protocol you should get something like this: Method 2 -------- -The second method consists in playing two different sequences -:math:`R_Y(\pi) R_X(\pi/2)` and :math:`R_X(\pi) R_Y(\pi/2)` which are two -of the AllXY pulses which exhibit opposite sign of phase error as highlighted +The second method consists of playing two different sequences +:math:`R_Y(\pi) R_X(\pi/2)` and :math:`R_X(\pi) R_Y(\pi/2)`. These are two +of the AllXY sequences which exhibit opposite sign of phase error as highlighted in :cite:p:`reed2013entanglementquantumerrorcorrection`. -The post-processing consists in measuring the probability of :math:`\ket{1}` for every :math:`\beta` +The post-processing consists of measuring the probability of :math:`\ket{1}` for every :math:`\beta` and performing a linear fit for both sequences. The correct :math:`\beta` value is the one where the two lines cross.