Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
ca4e612
* Added specializations.
eggerdj Oct 20, 2021
f4fef9a
Merge branch 'main' into fine_amp_cal_exp
eggerdj Oct 20, 2021
280738a
* Added tests.
eggerdj Oct 21, 2021
db7a6ed
Merge branch 'main' into fine_amp_cal_exp
eggerdj Oct 21, 2021
4c4a3c8
* Removed obsolete test.
eggerdj Oct 21, 2021
4153486
* Docs and lint.
eggerdj Oct 21, 2021
aec2347
* Docs and tests.
eggerdj Oct 21, 2021
cdf3cdd
* Begining of NB reworking.
eggerdj Oct 21, 2021
a1df97c
* Updated the tutorial.
eggerdj Oct 21, 2021
15b0056
Merge branch 'main' into fine_amp_cal_exp
eggerdj Oct 21, 2021
70f3b21
Update qiskit_experiments/library/characterization/fine_amplitude.py
eggerdj Oct 21, 2021
5bebeab
Update qiskit_experiments/library/characterization/fine_amplitude.py
eggerdj Oct 21, 2021
44450f6
Update qiskit_experiments/library/characterization/fine_amplitude.py
eggerdj Oct 21, 2021
4e54e95
Update qiskit_experiments/library/characterization/fine_amplitude.py
eggerdj Oct 21, 2021
4f1b2df
Update qiskit_experiments/library/characterization/fine_amplitude.py
eggerdj Oct 21, 2021
7c829e1
Update qiskit_experiments/library/characterization/fine_amplitude.py
eggerdj Oct 21, 2021
15000f6
Update qiskit_experiments/library/characterization/fine_amplitude.py
eggerdj Oct 21, 2021
b650b7e
Update qiskit_experiments/library/calibration/fine_amplitude.py
eggerdj Oct 21, 2021
77dbe7f
Update qiskit_experiments/library/characterization/fine_amplitude.py
eggerdj Oct 21, 2021
77d94cb
* Documentation.
eggerdj Oct 21, 2021
e473d3f
* Documentation.
eggerdj Oct 21, 2021
fd162ec
Merge branch 'main' into fine_amp_cal_exp
eggerdj Oct 21, 2021
735d81e
* Added metadata hook in base class.
eggerdj Oct 22, 2021
1546bdc
Merge branch 'main' into fine_amp_cal_exp
eggerdj Oct 22, 2021
24a1ca4
Merge branch 'main' into fine_amp_cal_exp
eggerdj Oct 22, 2021
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
1,101 changes: 547 additions & 554 deletions docs/tutorials/calibrating_armonk.ipynb

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions qiskit_experiments/calibration_management/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,5 +148,6 @@

from .calibrations import Calibrations
from .backend_calibrations import BackendCalibrations
from .base_calibration_experiment import BaseCalibrationExperiment

from .update_library import Frequency, Drag, Amplitude, FineDragUpdater
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@
"""Base class for calibration-type experiments."""

from abc import ABC
from typing import Dict, Optional, Tuple, Type
from typing import Dict, List, Optional, Tuple, Type
import warnings

from qiskit.providers.backend import Backend
from qiskit.circuit import Parameter
from qiskit.circuit import Parameter, QuantumCircuit
from qiskit.pulse import ScheduleBlock

from qiskit_experiments.calibration_management.calibrations import Calibrations
Expand Down Expand Up @@ -339,6 +339,23 @@ def get_schedule(

return schedules

def circuits(self, backend: Optional[Backend] = None) -> List[QuantumCircuit]:
"""A wrapper to introduce an optional hook to add circuit metadata."""
circuits = super().circuits(backend)

self._add_cal_metadata(circuits)

return circuits

def _add_cal_metadata(self, circuits: List[QuantumCircuit]):
"""A hook to add calibration metadata to the circuits.

Many calibration experiments will not define the circuits method but rely on those defined
by the experiment in the characterization module. This hook allows calibration experiments
to add their own meta data to the circuits if needed.
"""
pass

def run(
self,
backend: Backend,
Expand Down
21 changes: 4 additions & 17 deletions qiskit_experiments/calibration_management/update_library.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ def _time_stamp(exp_data: ExperimentData) -> datetime:
return datetime.now(timezone.utc).astimezone()

@classmethod
def _add_parameter_value(
def add_parameter_value(
cls,
cal: Calibrations,
exp_data: ExperimentData,
Expand Down Expand Up @@ -123,7 +123,7 @@ def update(
fit_parameter = fit_parameter or cls.__fit_parameter__
value = BaseUpdater.get_value(exp_data, fit_parameter, result_index)

cls._add_parameter_value(
cls.add_parameter_value(
calibrations, exp_data, value, parameter, schedule=schedule, group=group
)

Expand Down Expand Up @@ -244,7 +244,7 @@ def update(
old_beta = calibrations.get_parameter_value(parameter, qubits, schedule, group=group)
new_beta = old_beta + d_beta

cls._add_parameter_value(calibrations, exp_data, new_beta, parameter, schedule, group)
cls.add_parameter_value(calibrations, exp_data, new_beta, parameter, schedule, group)


class Amplitude(BaseUpdater):
Expand Down Expand Up @@ -281,7 +281,6 @@ def update(
CalibrationError: If the experiment is not of the supported type.
"""
from qiskit_experiments.library.calibration.rabi import Rabi
from qiskit_experiments.library.calibration.fine_amplitude import FineAmplitude

if angles_schedules is None:
angles_schedules = [(np.pi, "amp", "xp")]
Expand All @@ -295,19 +294,7 @@ def update(

value = np.round(angle / rate, decimals=8) * np.exp(1.0j * np.angle(prev_amp))

cls._add_parameter_value(calibrations, exp_data, value, param, schedule, group)

elif isinstance(exp_data.experiment, FineAmplitude):
d_theta = BaseUpdater.get_value(exp_data, "d_theta", result_index)

for target_angle, param, schedule in angles_schedules:
qubits = exp_data.metadata["physical_qubits"]

prev_amp = calibrations.get_parameter_value(param, qubits, schedule, group=group)
scale = target_angle / (target_angle + d_theta)
new_amp = prev_amp * scale

cls._add_parameter_value(calibrations, exp_data, new_amp, param, schedule, group)
cls.add_parameter_value(calibrations, exp_data, value, param, schedule, group)

else:
raise CalibrationError(f"{cls.__name__} updates from {type(Rabi.__name__)}.")
18 changes: 12 additions & 6 deletions qiskit_experiments/library/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@
~characterization.EFSpectroscopy
~characterization.CrossResonanceHamiltonian
~characterization.EchoedCrossResonanceHamiltonian
~characterization.FineAmplitude
~characterization.FineXAmplitude
~characterization.FineSXAmplitude

.. _calibration:

Expand All @@ -85,9 +88,9 @@ class instance to manage parameters and pulse schedules.
~calibration.FineSXDrag
~calibration.Rabi
~calibration.EFRabi
~calibration.FineAmplitude
~calibration.FineXAmplitude
~calibration.FineSXAmplitude
~calibration.FineAmplitudeCal
~calibration.FineXAmplitudeCal
~calibration.FineSXAmplitudeCal
~calibration.RamseyXY

"""
Expand All @@ -98,9 +101,9 @@ class instance to manage parameters and pulse schedules.
FineSXDrag,
Rabi,
EFRabi,
FineAmplitude,
FineXAmplitude,
FineSXAmplitude,
FineAmplitudeCal,
FineXAmplitudeCal,
FineSXAmplitudeCal,
RoughFrequencyCal,
RamseyXY,
)
Expand All @@ -111,6 +114,9 @@ class instance to manage parameters and pulse schedules.
EFSpectroscopy,
CrossResonanceHamiltonian,
EchoedCrossResonanceHamiltonian,
FineAmplitude,
FineXAmplitude,
FineSXAmplitude,
)
from .randomized_benchmarking import StandardRB, InterleavedRB
from .tomography import StateTomography, ProcessTomography
Expand Down
8 changes: 4 additions & 4 deletions qiskit_experiments/library/calibration/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@
FineXDrag
FineSXDrag
Rabi
FineAmplitude
FineXAmplitude
FineSXAmplitude
FineAmplitudeCal
FineXAmplitudeCal
FineSXAmplitudeCal
RamseyXY

Calibration analysis
Expand All @@ -70,8 +70,8 @@
from .rough_frequency import RoughFrequencyCal
from .drag import DragCal
from .fine_drag import FineDrag, FineXDrag, FineSXDrag
from .fine_amplitude import FineAmplitudeCal, FineXAmplitudeCal, FineSXAmplitudeCal
from .rabi import Rabi, EFRabi
from .fine_amplitude import FineAmplitude, FineXAmplitude, FineSXAmplitude
from .ramsey_xy import RamseyXY

from .analysis.drag_analysis import DragCalAnalysis
Expand Down
Loading