Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion qiskit_experiments/calibration_management/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@
:toctree: ../stubs/

Calibrations
ParameterValue
FixedFrequencyTransmon
BasisGateLibrary
BaseCalibrationExperiment


Managing Calibration Data
=========================
Expand Down Expand Up @@ -143,5 +148,6 @@
"""

from .calibrations import Calibrations
from .parameter_value import ParameterValue
from .base_calibration_experiment import BaseCalibrationExperiment
from .basis_gate_library import FixedFrequencyTransmon
from .basis_gate_library import FixedFrequencyTransmon, BasisGateLibrary
20 changes: 10 additions & 10 deletions qiskit_experiments/library/characterization/fine_drag.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.

"""Fine DRAG calibration experiment."""
"""Fine DRAG characterization experiment."""

from typing import List, Optional
import numpy as np
Expand All @@ -30,11 +30,11 @@ class FineDrag(BaseExperiment):

# section: overview

The class :class:`FineDrag` runs fine DRAG calibration experiments (see :class:`DragCal`
for the definition of DRAG pulses). Fine DRAG calibration proceeds by iterating the
gate sequence Rp - Rm where Rp is a rotation around an axis and Rm is the same rotation
but in the opposite direction and is implemented by the gates Rz - Rp - Rz where the Rz
gates are virtual Z-rotations, see Ref. [1]. The executed circuits are of the form
:class:`FineDrag` runs fine DRAG characterization experiments (see :class:`DragCal`
for the definition of DRAG pulses). Fine DRAG proceeds by iterating the gate sequence
Rp - Rm where Rp is a rotation around an axis and Rm is the same rotation but in the
opposite direction and is implemented by the gates Rz - Rp - Rz where the Rz gates
are virtual Z-rotations, see Ref. [1]. The executed circuits are of the form

.. parsed-literal::

Expand Down Expand Up @@ -217,10 +217,10 @@ def circuits(self) -> List[QuantumCircuit]:


class FineXDrag(FineDrag):
"""Class to fine calibrate the DRAG parameter of an X gate.
"""Class to fine characterize the DRAG parameter of an X gate.

# section: see_also
qiskit_experiments.library.calibration.fine_drag.FineDrag
qiskit_experiments.library.characterization.fine_drag.FineDrag
"""

def __init__(self, qubit: int, backend: Optional[Backend] = None):
Expand All @@ -246,10 +246,10 @@ def _pre_circuit() -> QuantumCircuit:


class FineSXDrag(FineDrag):
"""Class to fine calibrate the DRAG parameter of an SX gate.
"""Class to fine characterize the DRAG parameter of an SX gate.

# section: see_also
qiskit_experiments.library.calibration.fine_drag.FineDrag
qiskit_experiments.library.characterization.fine_drag.FineDrag
"""

def __init__(self, qubit: int, backend: Optional[Backend] = None):
Expand Down
4 changes: 2 additions & 2 deletions qiskit_experiments/library/characterization/ramsey_xy.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ class RamseyXY(BaseExperiment):
# section: overview

This experiment differs from the :class:`~qiskit_experiments.characterization.\
t2ramsey.T2Ramsey` since it is sensitive to the sign of frequency offset from the main
transition. This experiment consists of following two circuits:
t2ramsey.T2Ramsey` since it is sensitive to the sign of the frequency offset from
the main transition. This experiment consists of following two circuits:

.. parsed-literal::

Expand Down
129 changes: 129 additions & 0 deletions releasenotes/notes/calibrations-97c6ae807d54015d.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
---
features:
- |
Adds a collection of experiments for performing single-qubit gate
:mod:`~qiskit_experiments.library.characterization` and
:mod:`~qiskit_experiments.library.calibration`. The new experiments are

* :class:`~qiskit_experiments.library.characterization.Rabi`:
This experiment scans the amplitude of a pulse and measures the qubit
population. This allows us to determine the amplitude that creates,
for example, an ``X`` gate and/or a ``SX`` gate.

* :class:`~qiskit_experiments.library.calibration.RoughXSXAmplitudeCal`:
The calibration version of :class:`~qiskit_experiments.library.characterization.Rabi`.
It extracts the amplitudes needed to implement an ``X`` gate an a ``SX`` gate.
This type of calibration is a rough amplitude calibration since the resulting
parameter value is typically not very precises.

* :class:`~qiskit_experiments.library.characterization.FineAmplitude`: This experiment repeats
a rotation a variable number of times to amplify over- and under-rotations.
The resulting ping-pong pattern in the qubit population is fit to determine
the error in the rotation angle.
This experiment has specializations for X
(:class:`~qiskit_experiments.library.characterization.FineXAmplitude`) and SX
(:class:`~qiskit_experiments.library.characterization.FineSXAmplitude`) gates.

* :class:`~qiskit_experiments.library.calibration.FineAmplitudeCal`: The calibration version
of :class:`~qiskit_experiments.library.characterization.FineAmplitude`.
It will update the amplitude of the pulse according to the measurred deviation.
This experiment has specializations for X
(:class:`~qiskit_experiments.library.calibration.FineXAmplitudeCal`) and SX
(:class:`~qiskit_experiments.library.calibration.FineSXAmplitudeCal`) gates.

* :class:`~qiskit_experiments.library.characterization.RoughDrag`:
This experiment scans the DRAG parameter of a repeated
sequence of rotation and anti-rotation. If the DRAG parameter does not have
the correct value phase errors will accumulate and the repeated sequece of
gates will not return the qubit to the ground state.

* :class:`~qiskit_experiments.library.calibration.RoughDragCal`: The calibration version of
:class:`~qiskit_experiments.library.characterization.RoughDrag`.

* :class:`~qiskit_experiments.library.characterization.FineDrag`: This experiment iterates the
gate sequence Rp - Rm where Rp is a rotation around an axis and Rm is the same
rotation but in the opposite direction. This sequence amplifies phase errors due
to the presence of higher excited states.
This experiment has specializations for X
(:class:`~qiskit_experiments.library.characterization.FineXDrag`) and SX
(:class:`~qiskit_experiments.library.characterization.FineSXDrag`) gates.

* :class:`~qiskit_experiments.library.calibration.FineDragCal`: The calibration version of
:class:`~qiskit_experiments.library.characterization.FineDrag`.
This will update the DRAG parameter in the instance of the
:class:`:class:`~qiskit_experiments.calibration_management.Calibrations` class.
This experiment has specializations for X
(:class:`~qiskit_experiments.library.calibration.FineXDragCal`) and SX
(:class:`~qiskit_experiments.library.calibration.FineSXDragCal`) gates.

* :class:`~qiskit_experiments.library.characterization.QubitSpectroscopy`: This experiment
performs spectroscopy by applying a frequency shift to a long pulse. This experiment
is typically used to identify the resonance frequency of the qubit.

* :class:`~qiskit_experiments.library.calibration.RoughFrequencyCal` the calibration
version of :class:`~qiskit_experiments.library.characterization.QubitSpectroscopy`.
This gives us a first rough estimate of the qubits frequency.

* :class:`~qiskit_experiments.library.characterization.RamseyXY`: This experiment
performs a Ramsey-XY experiment which allows us to measure the frequency of the qubit.
This experiment is sensitive to the sign of the frequency offset from the main transition.
It is a more precise measurement than spectroscopy.

* :class:`~qiskit_experiments.library.calibration.FrequencyCal`: This is the calibration
version of :class:`~qiskit_experiments.library.characterization.RamseyXY`.

* :class:`~qiskit_experiments.library.characterization.FineFrequency`:
This experiment performs an error amplifying sequence to measure the frequency of the qubit.
This is done with delay instructions with a variable length and RZ gates.

* :class:`~qiskit_experiments.library.calibration.FineFrequencyCal`:
This is the calibration version of
:class:`~qiskit_experiments.library.characterization.FineFrequency`.

* :class:`~qiskit_experiments.library.characterization.HalfAngle`:
This experiment measures the amount by which the SX and X gates are not parallel.
Such errors can occur due to phase errors. For example,
the non-linearities in the mixer's skew for :math:`\pi/2` pulses may be
different from the :math:`\pi` pulse.

* :class:`~qiskit_experiments.library.calibration.HalfAngleCal`:
This is the calibration version of
:class:`~qiskit_experiments.library.characterization.HalfAngle`.
- |
Added support for JSON serialization to
:class:`qiskit_experiments.calibration_management.BasisGateLibrary`.
- |
Simplified the update library for calibration experiments by merging
this functionality into the
:class:`qiskit_experiments.calibration_management.BaseCalibrationExperiment`.

Future releases may fully deprecate the
:class:`qiskit_experiments.calibration_management.update_library.BaseUpdater`
in favour of moving its functionality into the
:class:`~qiskit_experiments.calibration_management.BaseCalibrationExperiment`.
upgrade:
- |
The ``BackendCalibrations`` class has bas been removed and its functionality
has been merged into the
:class:`qiskit_experiments.calibration_management.Calibrations` class. Users
should now use the :class:`Calibrations`
class which can be instantiated from a backend by using the
:meth:`~qiskit_experiments.calibration_management.Calibrations.from_backend`
method.
developer:
- |
:mod:`~qiskit_experiments.library.calibration` experiments have been changed
so that each experiment is a subclass of a
:mod:`~qiskit_experiments.library.characterization` experiment.

Calibration experiments should now be constructed as subclasses of both
the relevant characterization experiment and the new
:class:`qiskit_experiments.calibration_management.BaseCalibrationExperiment`
abstract base class.

This new base class implements the functionality to manage schedules
stored in instances of the
:class:`qiskit_experiments.calibration_management.Calibrations` class and
implements a framework where calibration experiments can specify an
:meth:`~qiskit_experiments.calibration_management.BaseCalibrationExperiment.update`
method to update the parameters that they are designed to calibrate.