Source code for qiskit_experiments.library.characterization.analysis.fine_amplitude_analysis
# This code is part of Qiskit.
#
# (C) Copyright IBM 2021.
#
# This code is licensed under the Apache License, Version 2.0. You may
# obtain a copy of this license in the LICENSE.txt file in the root directory
# of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
#
# Any modifications or derivative works of this code must retain this
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.
"""Fine Amplitude calibration analysis."""
import lmfit
import qiskit_experiments.curve_analysis as curve
[docs]
class FineAmplitudeAnalysis(curve.ErrorAmplificationAnalysis):
r"""An analysis class for fine amplitude calibrations to define the fixed parameters.
# section: note
The following parameters are fixed.
* :math:`{\rm apg}` The angle per gate is set by the user, for example pi for a pi-pulse.
* :math:`{\rm phase\_offset}` The phase offset in the cosine oscillation, for example,
:math:`\pi/2` if a square-root of X gate is added before the repeated gates.
"""
# pylint: disable=super-init-not-called
def __init__(self):
# pylint: disable=non-parent-init-called
curve.CurveAnalysis.__init__(
self,
models=[
lmfit.models.ExpressionModel(
expr="amp / 2 * (2 * x - 1) + base",
name="spam cal.",
),
lmfit.models.ExpressionModel(
expr="amp / 2 * cos((d_theta + angle_per_gate) * x - phase_offset) + base",
name="fine amp.",
),
],
)
@classmethod
def _default_options(cls):
"""Return the default analysis options."""
default_options = super()._default_options()
default_options.data_subfit_map = {
"spam cal.": {"series": "spam-cal"},
"fine amp.": {"series": 1},
}
return default_options