Source code for oitg.circuits.protocols.gst

"""Implements circuit generation for Gate Set Tomography.

Gate Set Tomography is a method for self-consistent process tomography of a given set of
gates. It does not require any prior knowledge about the gates used to prepare and
measure in various bases, and is robust against state preparation and measurement
errors.

The protocol was developed by and around Robin Blume-Kohout at Sandia; see e.g.
[BGN+13]_ and [Blum15]_ for more details, and [KWS+14]_ and [BGN+17]_ for experimental
demonstrations.

This module only contains the (small amount of) code necessary to generate a list of
gate sequences for a GST experiment. While analysis is relatively straightforward, there
is a comprehensive and well-tested open-source implementation already available in the
form of the [pyGSTi]_ package.

.. rubric:: References
.. [BGN+13] Blume-Kohout, R. et al. Robust, self-consistent, closed-form tomography of
   quantum logic gates on a trapped ion qubit. arxiv:1310.4492 (2013).
.. [Blum15] Blume-Kohout, R. et al. Report: Turbocharging Quantum Tomography.
   (Sandia National Laboratories, 2015).
.. [KWS+14] Kim, D. et al. Microwave-driven coherent operation of a semiconductor
   quantum dot charge qubit. Nature Nanotechnology 10, 243–247 (2015).
.. [BGN+17] Blume-Kohout, R. et al. Demonstration of qubit operations below a rigorous
   fault tolerance threshold with gate set tomography. Nature Communications 8, (2017).
.. [pyGSTi] A python implementation of Gate Set Tomography. http://www.pygsti.info/
"""

from typing import List
from ...gate import GateSequence


[docs] class GSTSpec: """Specifies a model for Gate Set Tomography. :param prep_fiducials: The list of preparation fiducials to use. :param meas_fiducials: The list of measurement fiducials to use. :param germs: The list of gate sequence germs to use. :param pygsti_name: The name of the equivalent pyGSTi standard model construction, if any. """ def __init__(self, prep_fiducials: List[GateSequence], meas_fiducials: List[GateSequence], germs: List[GateSequence], pygsti_name: str = ""): self.prep_fiducials = prep_fiducials self.meas_fiducials = meas_fiducials self.germs = germs self.pygsti_name = pygsti_name