From 14f80b4e02ae187ceda641435e3329498781fc86 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Tue, 19 Nov 2024 11:19:08 +0400 Subject: [PATCH 01/73] first test for swittching from pi to pi-half --- src/qibocal/protocols/rabi/utils.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/qibocal/protocols/rabi/utils.py b/src/qibocal/protocols/rabi/utils.py index 97d3a7e23..72fbdf4a3 100644 --- a/src/qibocal/protocols/rabi/utils.py +++ b/src/qibocal/protocols/rabi/utils.py @@ -238,6 +238,8 @@ def sequence_amplitude( if params.pulse_length is not None: qd_pulse = replace(qd_pulse, duration=params.pulse_length) + # added the following line + qd_pulse.amplitude = 2 * qd_pulse.amplitude durations[q] = qd_pulse.duration qd_pulses[q] = qd_pulse ro_pulses[q] = ro_pulse @@ -268,6 +270,8 @@ def sequence_length( if params.pulse_amplitude is not None: qd_pulse = replace(qd_pulse, amplitude=params.pulse_amplitude) + # check following line + qd_pulse.amplitude = 2 * qd_pulse.amplitude amplitudes[q] = qd_pulse.amplitude qd_pulses[q] = qd_pulse ro_pulses[q] = ro_pulse From ec4b7ad5a3492605f50779740412af239d62cdaf Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Wed, 20 Nov 2024 08:47:32 +0400 Subject: [PATCH 02/73] fixed pi half calibration sequence --- src/qibocal/protocols/rabi/utils.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/qibocal/protocols/rabi/utils.py b/src/qibocal/protocols/rabi/utils.py index 72fbdf4a3..2310eb9ee 100644 --- a/src/qibocal/protocols/rabi/utils.py +++ b/src/qibocal/protocols/rabi/utils.py @@ -238,12 +238,11 @@ def sequence_amplitude( if params.pulse_length is not None: qd_pulse = replace(qd_pulse, duration=params.pulse_length) - # added the following line - qd_pulse.amplitude = 2 * qd_pulse.amplitude durations[q] = qd_pulse.duration qd_pulses[q] = qd_pulse ro_pulses[q] = ro_pulse + sequence.append((qd_channel, qd_pulses[q])) sequence.append((qd_channel, qd_pulses[q])) sequence.append((ro_channel, Delay(duration=durations[q]))) sequence.append((ro_channel, ro_pulse)) @@ -270,12 +269,11 @@ def sequence_length( if params.pulse_amplitude is not None: qd_pulse = replace(qd_pulse, amplitude=params.pulse_amplitude) - # check following line - qd_pulse.amplitude = 2 * qd_pulse.amplitude amplitudes[q] = qd_pulse.amplitude qd_pulses[q] = qd_pulse ro_pulses[q] = ro_pulse + sequence.append((qd_channel, qd_pulse)) sequence.append((qd_channel, qd_pulse)) if use_align: sequence.align([qd_channel, ro_channel]) From 9f63c69574423ac17b66d0c8b9b40dfae34805d3 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Wed, 20 Nov 2024 19:31:45 +0400 Subject: [PATCH 03/73] modified classes and methods for running rabi for RX90 --- src/qibocal/protocols/rabi/amplitude.py | 11 +++++++++-- .../protocols/rabi/amplitude_frequency.py | 5 +++++ .../protocols/rabi/amplitude_frequency_signal.py | 10 +++++++++- src/qibocal/protocols/rabi/amplitude_signal.py | 13 +++++++++++-- src/qibocal/protocols/rabi/length.py | 11 +++++++++-- .../protocols/rabi/length_frequency_signal.py | 10 +++++++++- src/qibocal/protocols/rabi/length_signal.py | 15 +++++++++++++-- src/qibocal/protocols/rabi/utils.py | 16 +++++++++++++--- src/qibocal/update.py | 9 +++++++-- 9 files changed, 85 insertions(+), 15 deletions(-) diff --git a/src/qibocal/protocols/rabi/amplitude.py b/src/qibocal/protocols/rabi/amplitude.py index 9907b6f52..f108c6be2 100644 --- a/src/qibocal/protocols/rabi/amplitude.py +++ b/src/qibocal/protocols/rabi/amplitude.py @@ -41,6 +41,8 @@ class RabiAmplitudeData(Data): """Pulse durations provided by the user.""" data: dict[QubitId, npt.NDArray[RabiAmpType]] = field(default_factory=dict) """Raw data acquired.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" def _acquisition( @@ -65,6 +67,7 @@ def _acquisition( ) data = RabiAmplitudeData(durations=durations) + data.pihalf_pulse = params.pihalf_pulse # sweep the parameter results = platform.execute( @@ -128,7 +131,9 @@ def _fit(data: RabiAmplitudeData) -> RabiAmplitudeResults: except Exception as e: log.warning(f"Rabi fit failed for qubit {qubit} due to {e}.") - return RabiAmplitudeResults(pi_pulse_amplitudes, durations, fitted_parameters, chi2) + return RabiAmplitudeResults( + pi_pulse_amplitudes, durations, fitted_parameters, data.pihalf_pulse, chi2 + ) def _plot(data: RabiAmplitudeData, target: QubitId, fit: RabiAmplitudeResults = None): @@ -139,7 +144,9 @@ def _plot(data: RabiAmplitudeData, target: QubitId, fit: RabiAmplitudeResults = def _update( results: RabiAmplitudeResults, platform: CalibrationPlatform, target: QubitId ): - update.drive_amplitude(results.amplitude[target], platform, target) + update.drive_amplitude( + results.amplitude[target], results.pihalf_pulse, platform, target + ) update.drive_duration(results.length[target], platform, target) diff --git a/src/qibocal/protocols/rabi/amplitude_frequency.py b/src/qibocal/protocols/rabi/amplitude_frequency.py index 8f060b583..19398f001 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency.py @@ -60,6 +60,9 @@ class RabiAmplitudeFreqData(RabiAmplitudeFreqSignalData): data: dict[QubitId, npt.NDArray[RabiAmpFreqType]] = field(default_factory=dict) """Raw data acquired.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" + def register_qubit(self, qubit, freq, amp, prob, error): """Store output for single qubit.""" size = len(freq) * len(amp) @@ -102,6 +105,7 @@ def _acquisition( ) data = RabiAmplitudeFreqData(durations=durations) + data.pihalf_pulse = params.pihalf_pulse results = platform.execute( [sequence], @@ -186,6 +190,7 @@ def _fit(data: RabiAmplitudeFreqData) -> RabiAmplitudeFrequencyResults: fitted_parameters=fitted_parameters, frequency=fitted_frequencies, chi2=chi2, + pihalf_pulse=data.pihalf_pulse, ) diff --git a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py index 5314d6bf6..a259c4f0d 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py @@ -44,6 +44,8 @@ class RabiAmplitudeFrequencySignalParameters(Parameters): """Frequency to use as step for the scan.""" pulse_length: Optional[float] = None """RX pulse duration [ns].""" + pihalf_pulse: Optional[bool] = True + """Calibration of native pihalf pulse, if false calibrates pi pulse""" @dataclass @@ -75,6 +77,8 @@ class RabiAmplitudeFreqSignalData(Data): default_factory=dict ) """Raw data acquired.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" def register_qubit(self, qubit, freq, amp, signal, phase): """Store output for single qubit.""" @@ -127,6 +131,7 @@ def _acquisition( ) data = RabiAmplitudeFreqSignalData(durations=durations) + data.pihalf_pulse = params.pihalf_pulse results = platform.execute( [sequence], @@ -198,6 +203,7 @@ def _fit(data: RabiAmplitudeFreqSignalData) -> RabiAmplitudeFrequencySignalResul length=data.durations, fitted_parameters=fitted_parameters, frequency=fitted_frequencies, + pihalf_pulse=data.pihalf_pulse, ) @@ -296,7 +302,9 @@ def _update( target: QubitId, ): update.drive_duration(results.length[target], platform, target) - update.drive_amplitude(results.amplitude[target], platform, target) + update.drive_amplitude( + results.amplitude[target], results.pihalf_pulse, platform, target + ) update.drive_frequency(results.frequency[target], platform, target) diff --git a/src/qibocal/protocols/rabi/amplitude_signal.py b/src/qibocal/protocols/rabi/amplitude_signal.py index 5b23f46cb..d5111f558 100644 --- a/src/qibocal/protocols/rabi/amplitude_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_signal.py @@ -27,6 +27,8 @@ class RabiAmplitudeSignalParameters(Parameters): """Step amplitude.""" pulse_length: Optional[float] = None """RX pulse duration [ns].""" + pihalf_pulse: Optional[bool] = True + """Calibration of native pihalf pulse, if false calibrates pi pulse""" @dataclass @@ -39,6 +41,8 @@ class RabiAmplitudeSignalResults(Results): """Drive pulse duration. Same for all qubits.""" fitted_parameters: dict[QubitId, dict[str, float]] """Raw fitted parameters.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" RabiAmpSignalType = np.dtype( @@ -55,6 +59,8 @@ class RabiAmplitudeSignalData(Data): """Pulse durations provided by the user.""" data: dict[QubitId, npt.NDArray[RabiAmpSignalType]] = field(default_factory=dict) """Raw data acquired.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" def _acquisition( @@ -80,6 +86,7 @@ def _acquisition( ) data = RabiAmplitudeSignalData(durations=durations) + data.pihalf_pulse = params.pihalf_pulse # sweep the parameter results = platform.execute( @@ -142,7 +149,7 @@ def _fit(data: RabiAmplitudeSignalData) -> RabiAmplitudeSignalResults: log.warning(f"Rabi fit failed for qubit {qubit} due to {e}.") return RabiAmplitudeSignalResults( - pi_pulse_amplitudes, data.durations, fitted_parameters + pi_pulse_amplitudes, data.durations, fitted_parameters, data.pihalf_pulse ) @@ -158,7 +165,9 @@ def _plot( def _update( results: RabiAmplitudeSignalResults, platform: CalibrationPlatform, target: QubitId ): - update.drive_amplitude(results.amplitude[target], platform, target) + update.drive_amplitude( + results.amplitude[target], results.pihalf_pulse, platform, target + ) update.drive_duration(results.length[target], platform, target) diff --git a/src/qibocal/protocols/rabi/length.py b/src/qibocal/protocols/rabi/length.py index d0921ba12..7fb679ed0 100644 --- a/src/qibocal/protocols/rabi/length.py +++ b/src/qibocal/protocols/rabi/length.py @@ -31,6 +31,8 @@ class RabiLengthParameters(Parameters): """Step pi pulse duration [ns].""" pulse_amplitude: Optional[float] = None """Pi pulse amplitude. Same for all qubits.""" + pihalf_pulse: Optional[bool] = True + """Calibration of native pihalf pulse, if false calibrates pi pulse""" interpolated_sweeper: bool = False """Use real-time interpolation if supported by instruments.""" @@ -87,6 +89,7 @@ def _acquisition( ) data = RabiLengthData(amplitudes=amplitudes) + data.pihalf_pulse = params.pihalf_pulse # execute the sweep results = platform.execute( @@ -155,11 +158,15 @@ def _fit(data: RabiLengthData) -> RabiLengthResults: except Exception as e: log.warning(f"Rabi fit failed for qubit {qubit} due to {e}.") - return RabiLengthResults(durations, amplitudes, fitted_parameters, chi2) + return RabiLengthResults( + durations, amplitudes, fitted_parameters, data.pihalf_pulse, chi2 + ) def _update(results: RabiLengthResults, platform: CalibrationPlatform, target: QubitId): - update.drive_duration(results.length[target], platform, target) + update.drive_duration( + results.length[target], results.pihalf_pulse, platform, target + ) update.drive_amplitude(results.amplitude[target], platform, target) diff --git a/src/qibocal/protocols/rabi/length_frequency_signal.py b/src/qibocal/protocols/rabi/length_frequency_signal.py index 93bb7dbfa..1bfce6d6b 100644 --- a/src/qibocal/protocols/rabi/length_frequency_signal.py +++ b/src/qibocal/protocols/rabi/length_frequency_signal.py @@ -39,6 +39,8 @@ class RabiLengthFrequencySignalParameters(Parameters): """Frequency to use as step for the scan.""" pulse_amplitude: Optional[float] = None """Pi pulse amplitude. Same for all qubits.""" + pihalf_pulse: Optional[bool] = True + """Calibration of native pihalf pulse, if false calibrates pi pulse""" interpolated_sweeper: bool = False """Use real-time interpolation if supported by instruments.""" @@ -72,6 +74,8 @@ class RabiLengthFreqSignalData(Data): default_factory=dict ) """Raw data acquired.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" def register_qubit(self, qubit, freq, lens, signal, phase): """Store output for single qubit.""" @@ -137,6 +141,7 @@ def _acquisition( ) data = RabiLengthFreqSignalData(amplitudes=amplitudes) + data.pihalf_pulse = params.pihalf_pulse results = platform.execute( [sequence], @@ -207,6 +212,7 @@ def _fit(data: RabiLengthFreqSignalData) -> RabiLengthFrequencySignalResults: amplitude=data.amplitudes, fitted_parameters=fitted_parameters, frequency=fitted_frequencies, + pihalf_pulse=data.pihalf_pulse, ) @@ -305,7 +311,9 @@ def _update( platform: CalibrationPlatform, target: QubitId, ): - update.drive_amplitude(results.amplitude[target], platform, target) + update.drive_amplitude( + results.amplitude[target], results.pihalf_pulse, platform, target + ) update.drive_duration(results.length[target], platform, target) update.drive_frequency(results.frequency[target], platform, target) diff --git a/src/qibocal/protocols/rabi/length_signal.py b/src/qibocal/protocols/rabi/length_signal.py index 94572de16..34803f297 100644 --- a/src/qibocal/protocols/rabi/length_signal.py +++ b/src/qibocal/protocols/rabi/length_signal.py @@ -27,6 +27,8 @@ class RabiLengthSignalParameters(Parameters): """Step pi pulse duration [ns].""" pulse_amplitude: Optional[float] = None """Pi pulse amplitude. Same for all qubits.""" + pihalf_pulse: Optional[bool] = True + """Calibration of native pihalf pulse, if false calibrates pi pulse""" interpolated_sweeper: bool = False """Use real-time interpolation if supported by instruments.""" @@ -41,6 +43,8 @@ class RabiLengthSignalResults(Results): """Pi pulse amplitude. Same for all qubits.""" fitted_parameters: dict[QubitId, dict[str, float]] """Raw fitting output.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" RabiLenSignalType = np.dtype( @@ -57,6 +61,8 @@ class RabiLengthSignalData(Data): """Pulse durations provided by the user.""" data: dict[QubitId, npt.NDArray[RabiLenSignalType]] = field(default_factory=dict) """Raw data acquired.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" def _acquisition( @@ -92,6 +98,7 @@ def _acquisition( ) data = RabiLengthSignalData(amplitudes=amplitudes) + data.pihalf_pulse = params.pihalf_pulse # execute the sweep results = platform.execute( @@ -153,13 +160,17 @@ def _fit(data: RabiLengthSignalData) -> RabiLengthSignalResults: except Exception as e: log.warning(f"Rabi fit failed for qubit {qubit} due to {e}.") - return RabiLengthSignalResults(durations, data.amplitudes, fitted_parameters) + return RabiLengthSignalResults( + durations, data.amplitudes, fitted_parameters, data.pihalf_pulse + ) def _update( results: RabiLengthSignalResults, platform: CalibrationPlatform, target: QubitId ): - update.drive_duration(results.length[target], platform, target) + update.drive_duration( + results.length[target], results.pihalf_pulse, platform, target + ) update.drive_amplitude(results.amplitude[target], platform, target) diff --git a/src/qibocal/protocols/rabi/utils.py b/src/qibocal/protocols/rabi/utils.py index 2310eb9ee..1463a9626 100644 --- a/src/qibocal/protocols/rabi/utils.py +++ b/src/qibocal/protocols/rabi/utils.py @@ -223,9 +223,13 @@ def period_correction_factor(phase: float): def sequence_amplitude( - targets: list[QubitId], params: Parameters, platform: Platform + targets: list[QubitId], + params: Parameters, + platform: Platform, + pulse: bool, # if true calibrate pi_half pulse ) -> tuple[PulseSequence, dict, dict, dict]: """Return sequence for rabi amplitude.""" + sequence = PulseSequence() qd_pulses = {} ro_pulses = {} @@ -242,7 +246,9 @@ def sequence_amplitude( qd_pulses[q] = qd_pulse ro_pulses[q] = ro_pulse - sequence.append((qd_channel, qd_pulses[q])) + if pulse: + sequence.append((qd_channel, qd_pulses[q])) + sequence.append((qd_channel, qd_pulses[q])) sequence.append((ro_channel, Delay(duration=durations[q]))) sequence.append((ro_channel, ro_pulse)) @@ -253,9 +259,11 @@ def sequence_length( targets: list[QubitId], params: Parameters, platform: Platform, + pulse: bool, # if true calibrate pi_half pulse use_align: bool = False, ) -> tuple[PulseSequence, dict, dict, dict]: """Return sequence for rabi length.""" + sequence = PulseSequence() qd_pulses = {} delays = {} @@ -273,7 +281,9 @@ def sequence_length( qd_pulses[q] = qd_pulse ro_pulses[q] = ro_pulse - sequence.append((qd_channel, qd_pulse)) + if pulse: + sequence.append((qd_channel, qd_pulse)) + sequence.append((qd_channel, qd_pulse)) if use_align: sequence.align([qd_channel, ro_channel]) diff --git a/src/qibocal/update.py b/src/qibocal/update.py index e87eeea01..120732dc6 100644 --- a/src/qibocal/update.py +++ b/src/qibocal/update.py @@ -54,11 +54,16 @@ def drive_frequency( platform.update({f"configs.{drive_channel}.frequency": freq}) -def drive_amplitude(amp: Union[float, tuple, list], platform: Platform, qubit: QubitId): +def drive_amplitude( + amp: Union[float, tuple, list], pi_half: bool, platform: Platform, qubit: QubitId +): """Update drive frequency value in platform for specific qubit.""" if isinstance(amp, Iterable): amp = amp[0] - platform.update({f"native_gates.single_qubit.{qubit}.RX.0.1.amplitude": amp}) + if pi_half: + platform.update({f"native_gates.single_qubit.{qubit}.RX90.0.1.amplitude": amp}) + else: + platform.update({f"native_gates.single_qubit.{qubit}.RX.0.1.amplitude": amp}) def drive_duration( From 33db217090c91677b6708245d5da81f7a6dbbbf1 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Thu, 21 Nov 2024 08:37:00 +0400 Subject: [PATCH 04/73] added option to save duration of RX90 pulse --- src/qibocal/protocols/rabi/amplitude.py | 4 +++- .../protocols/rabi/amplitude_frequency_signal.py | 4 +++- src/qibocal/protocols/rabi/amplitude_signal.py | 4 +++- src/qibocal/protocols/rabi/length.py | 4 +++- .../protocols/rabi/length_frequency_signal.py | 4 +++- src/qibocal/update.py | 13 +++++++++---- 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/qibocal/protocols/rabi/amplitude.py b/src/qibocal/protocols/rabi/amplitude.py index f108c6be2..488fb231f 100644 --- a/src/qibocal/protocols/rabi/amplitude.py +++ b/src/qibocal/protocols/rabi/amplitude.py @@ -147,7 +147,9 @@ def _update( update.drive_amplitude( results.amplitude[target], results.pihalf_pulse, platform, target ) - update.drive_duration(results.length[target], platform, target) + update.drive_duration( + results.length[target], results.pihalf_pulse, platform, target + ) rabi_amplitude = Routine(_acquisition, _fit, _plot, _update) diff --git a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py index a259c4f0d..9bda592ce 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py @@ -301,7 +301,9 @@ def _update( platform: CalibrationPlatform, target: QubitId, ): - update.drive_duration(results.length[target], platform, target) + update.drive_duration( + results.length[target], results.pihalf_pulse, platform, target + ) update.drive_amplitude( results.amplitude[target], results.pihalf_pulse, platform, target ) diff --git a/src/qibocal/protocols/rabi/amplitude_signal.py b/src/qibocal/protocols/rabi/amplitude_signal.py index d5111f558..4384c8a0f 100644 --- a/src/qibocal/protocols/rabi/amplitude_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_signal.py @@ -168,7 +168,9 @@ def _update( update.drive_amplitude( results.amplitude[target], results.pihalf_pulse, platform, target ) - update.drive_duration(results.length[target], platform, target) + update.drive_duration( + results.length[target], results.pihalf_pulse, platform, target + ) rabi_amplitude_signal = Routine(_acquisition, _fit, _plot, _update) diff --git a/src/qibocal/protocols/rabi/length.py b/src/qibocal/protocols/rabi/length.py index 7fb679ed0..507f97abf 100644 --- a/src/qibocal/protocols/rabi/length.py +++ b/src/qibocal/protocols/rabi/length.py @@ -167,7 +167,9 @@ def _update(results: RabiLengthResults, platform: CalibrationPlatform, target: Q update.drive_duration( results.length[target], results.pihalf_pulse, platform, target ) - update.drive_amplitude(results.amplitude[target], platform, target) + update.drive_amplitude( + results.amplitude[target], results.pihalf_pulse, platform, target + ) def _plot(data: RabiLengthData, fit: RabiLengthResults, target: QubitId): diff --git a/src/qibocal/protocols/rabi/length_frequency_signal.py b/src/qibocal/protocols/rabi/length_frequency_signal.py index 1bfce6d6b..dce02fd8d 100644 --- a/src/qibocal/protocols/rabi/length_frequency_signal.py +++ b/src/qibocal/protocols/rabi/length_frequency_signal.py @@ -314,7 +314,9 @@ def _update( update.drive_amplitude( results.amplitude[target], results.pihalf_pulse, platform, target ) - update.drive_duration(results.length[target], platform, target) + update.drive_duration( + results.length[target], results.pihalf_pulse, platform, target + ) update.drive_frequency(results.frequency[target], platform, target) diff --git a/src/qibocal/update.py b/src/qibocal/update.py index 120732dc6..7fb93d501 100644 --- a/src/qibocal/update.py +++ b/src/qibocal/update.py @@ -67,14 +67,19 @@ def drive_amplitude( def drive_duration( - duration: Union[int, tuple, list], platform: Platform, qubit: QubitId + duration: Union[int, tuple, list], pi_half: bool, platform: Platform, qubit: QubitId ): """Update drive duration value in platform for specific qubit.""" if isinstance(duration, Iterable): duration = duration[0] - platform.update( - {f"native_gates.single_qubit.{qubit}.RX.0.1.duration": int(duration)} - ) + if pi_half: + platform.update( + {f"native_gates.single_qubit.{qubit}.RX90.0.1.duration": int(duration)} + ) + else: + platform.update( + {f"native_gates.single_qubit.{qubit}.RX.0.1.duration": int(duration)} + ) def crosstalk_matrix( From 32ccedae58b93be7ce794e322ee9182dd2ba5b2d Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Thu, 21 Nov 2024 09:23:33 +0400 Subject: [PATCH 05/73] started modifying rabi ef for using RX90 --- src/qibocal/protocols/rabi/ef.py | 10 +++++++--- src/qibocal/protocols/rabi/length_signal.py | 4 +++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/qibocal/protocols/rabi/ef.py b/src/qibocal/protocols/rabi/ef.py index 9774e42a7..0e60d613b 100644 --- a/src/qibocal/protocols/rabi/ef.py +++ b/src/qibocal/protocols/rabi/ef.py @@ -85,8 +85,8 @@ def _acquisition( ) data = RabiAmplitudeEFData(durations=durations) + data.pihalf_pulse = params.pihalf_pulse - # sweep the parameter # sweep the parameter results = platform.execute( [sequence], @@ -124,8 +124,12 @@ def _update( results: RabiAmplitudeEFResults, platform: CalibrationPlatform, target: QubitId ): """Update RX2 amplitude_signal""" - update.drive_12_amplitude(results.amplitude[target], platform, target) - update.drive_12_duration(results.length[target], platform, target) + update.drive_12_amplitude( + results.amplitude[target], results.pihalf_pulse, platform, target + ) + update.drive_12_duration( + results.length[target], results.pihalf_pulse, platform, target + ) rabi_amplitude_ef = Routine(_acquisition, amplitude_signal._fit, _plot, _update) diff --git a/src/qibocal/protocols/rabi/length_signal.py b/src/qibocal/protocols/rabi/length_signal.py index 34803f297..e8c47408d 100644 --- a/src/qibocal/protocols/rabi/length_signal.py +++ b/src/qibocal/protocols/rabi/length_signal.py @@ -171,7 +171,9 @@ def _update( update.drive_duration( results.length[target], results.pihalf_pulse, platform, target ) - update.drive_amplitude(results.amplitude[target], platform, target) + update.drive_amplitude( + results.amplitude[target], results.pihalf_pulse, platform, target + ) def _plot(data: RabiLengthSignalData, fit: RabiLengthSignalResults, target: QubitId): From 76613617d978a44c1b65102e45634d6d3678b403 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Thu, 21 Nov 2024 11:56:47 +0400 Subject: [PATCH 06/73] modified pihalf_pulse to rx90 in parameters --- src/qibocal/protocols/rabi/amplitude.py | 2 +- src/qibocal/protocols/rabi/amplitude_frequency.py | 2 +- src/qibocal/protocols/rabi/amplitude_frequency_signal.py | 4 ++-- src/qibocal/protocols/rabi/amplitude_signal.py | 2 +- src/qibocal/protocols/rabi/length.py | 2 +- src/qibocal/protocols/rabi/length_frequency.py | 1 + src/qibocal/protocols/rabi/length_frequency_signal.py | 2 +- src/qibocal/protocols/rabi/length_signal.py | 2 +- 8 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/qibocal/protocols/rabi/amplitude.py b/src/qibocal/protocols/rabi/amplitude.py index 488fb231f..e3c38258e 100644 --- a/src/qibocal/protocols/rabi/amplitude.py +++ b/src/qibocal/protocols/rabi/amplitude.py @@ -67,7 +67,7 @@ def _acquisition( ) data = RabiAmplitudeData(durations=durations) - data.pihalf_pulse = params.pihalf_pulse + data.pihalf_pulse = params.rx90 # sweep the parameter results = platform.execute( diff --git a/src/qibocal/protocols/rabi/amplitude_frequency.py b/src/qibocal/protocols/rabi/amplitude_frequency.py index 19398f001..b99b195a6 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency.py @@ -105,7 +105,7 @@ def _acquisition( ) data = RabiAmplitudeFreqData(durations=durations) - data.pihalf_pulse = params.pihalf_pulse + data.pihalf_pulse = params.rx90 results = platform.execute( [sequence], diff --git a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py index 9bda592ce..b0c32eaf1 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py @@ -44,7 +44,7 @@ class RabiAmplitudeFrequencySignalParameters(Parameters): """Frequency to use as step for the scan.""" pulse_length: Optional[float] = None """RX pulse duration [ns].""" - pihalf_pulse: Optional[bool] = True + rx90: Optional[bool] = True """Calibration of native pihalf pulse, if false calibrates pi pulse""" @@ -131,7 +131,7 @@ def _acquisition( ) data = RabiAmplitudeFreqSignalData(durations=durations) - data.pihalf_pulse = params.pihalf_pulse + data.pihalf_pulse = params.rx90 results = platform.execute( [sequence], diff --git a/src/qibocal/protocols/rabi/amplitude_signal.py b/src/qibocal/protocols/rabi/amplitude_signal.py index 4384c8a0f..92e60654b 100644 --- a/src/qibocal/protocols/rabi/amplitude_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_signal.py @@ -86,7 +86,7 @@ def _acquisition( ) data = RabiAmplitudeSignalData(durations=durations) - data.pihalf_pulse = params.pihalf_pulse + data.pihalf_pulse = params.rx90 # sweep the parameter results = platform.execute( diff --git a/src/qibocal/protocols/rabi/length.py b/src/qibocal/protocols/rabi/length.py index 507f97abf..3f4f2ed83 100644 --- a/src/qibocal/protocols/rabi/length.py +++ b/src/qibocal/protocols/rabi/length.py @@ -89,7 +89,7 @@ def _acquisition( ) data = RabiLengthData(amplitudes=amplitudes) - data.pihalf_pulse = params.pihalf_pulse + data.pihalf_pulse = params.rx90 # execute the sweep results = platform.execute( diff --git a/src/qibocal/protocols/rabi/length_frequency.py b/src/qibocal/protocols/rabi/length_frequency.py index 536aeb245..eaed1e201 100644 --- a/src/qibocal/protocols/rabi/length_frequency.py +++ b/src/qibocal/protocols/rabi/length_frequency.py @@ -110,6 +110,7 @@ def _acquisition( ) data = RabiLengthFreqData(amplitudes=amplitudes) + data.pihalf_pulse = params.rx90 results = platform.execute( [sequence], diff --git a/src/qibocal/protocols/rabi/length_frequency_signal.py b/src/qibocal/protocols/rabi/length_frequency_signal.py index dce02fd8d..31ea4ec69 100644 --- a/src/qibocal/protocols/rabi/length_frequency_signal.py +++ b/src/qibocal/protocols/rabi/length_frequency_signal.py @@ -141,7 +141,7 @@ def _acquisition( ) data = RabiLengthFreqSignalData(amplitudes=amplitudes) - data.pihalf_pulse = params.pihalf_pulse + data.pihalf_pulse = params.rx90 results = platform.execute( [sequence], diff --git a/src/qibocal/protocols/rabi/length_signal.py b/src/qibocal/protocols/rabi/length_signal.py index e8c47408d..95914297e 100644 --- a/src/qibocal/protocols/rabi/length_signal.py +++ b/src/qibocal/protocols/rabi/length_signal.py @@ -98,7 +98,7 @@ def _acquisition( ) data = RabiLengthSignalData(amplitudes=amplitudes) - data.pihalf_pulse = params.pihalf_pulse + data.pihalf_pulse = params.rx90 # execute the sweep results = platform.execute( From d03f3838e7b4b738f4045723957fb5d26e5ea426 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Thu, 21 Nov 2024 10:03:39 +0100 Subject: [PATCH 07/73] Update rabi.rst --- doc/source/protocols/rabi/rabi.rst | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/doc/source/protocols/rabi/rabi.rst b/doc/source/protocols/rabi/rabi.rst index e2ab3bb83..442fcca27 100644 --- a/doc/source/protocols/rabi/rabi.rst +++ b/doc/source/protocols/rabi/rabi.rst @@ -29,6 +29,9 @@ Rabi rate is larger than the decay and the pure dephasing rate, where :math:`\Omega_R` is the Rabi frequency and :math:`\tau` the decay time. +In qibocal we implemented also another version of the Rabi experiment which can be used to tune the amplitude (duration) of the drive pulse in order +to excite the qubit from the ground state up to state :math:`\frac{\ket{0}+\ket{1}}{\sqrt{2}}`. + Parameters ^^^^^^^^^^ @@ -103,6 +106,30 @@ It follows an example runcard and plot for the signal exepriment .. image:: rabi_signal.png +In all the previous examples we run Rabi experiments for calibrating the amplitude (duration) of the drive pulse +to excite the qubit from the ground state up to state :math:`\frac{\ket{0}+\ket{1}}{\sqrt{2}}`. +All the prievious example runcard can be modified to calibrate the amplitude (duration) of the drive pulse +to excite the qubit from the ground state up to state :math:`\ket{1}` by simply setting the `RX90` parameter to `False`. + +In the following we show an example runcard + +.. code-block:: yaml + + + - id: Rabi signal + operation: rabi_amplitude_signal + parameters: + min_amp: 0.2 + max_amp: 1. + step_amp: 0.01 + pulse_length: 40 + nshots: 3000 + relaxation_time: 50000 + RX90: False + +.. + _Remember image and modify runcard! + Requirements ^^^^^^^^^^^^ - :ref:`qubit-spectroscopy` From d0c12288249c005cec2043612c808c57a2ea29f6 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 21 Nov 2024 09:04:14 +0000 Subject: [PATCH 08/73] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- doc/source/protocols/rabi/rabi.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/protocols/rabi/rabi.rst b/doc/source/protocols/rabi/rabi.rst index 442fcca27..8cb1e7d07 100644 --- a/doc/source/protocols/rabi/rabi.rst +++ b/doc/source/protocols/rabi/rabi.rst @@ -109,7 +109,7 @@ It follows an example runcard and plot for the signal exepriment In all the previous examples we run Rabi experiments for calibrating the amplitude (duration) of the drive pulse to excite the qubit from the ground state up to state :math:`\frac{\ket{0}+\ket{1}}{\sqrt{2}}`. All the prievious example runcard can be modified to calibrate the amplitude (duration) of the drive pulse -to excite the qubit from the ground state up to state :math:`\ket{1}` by simply setting the `RX90` parameter to `False`. +to excite the qubit from the ground state up to state :math:`\ket{1}` by simply setting the `RX90` parameter to `False`. In the following we show an example runcard From e6a23952b77f00691357a112a9aa2d28eed021ac Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Thu, 21 Nov 2024 15:25:58 +0400 Subject: [PATCH 09/73] set pi calibration as default and change rx90 dtype --- src/qibocal/protocols/rabi/amplitude_frequency_signal.py | 4 ++-- src/qibocal/protocols/rabi/amplitude_signal.py | 4 ++-- src/qibocal/protocols/rabi/length.py | 4 ++-- src/qibocal/protocols/rabi/length_frequency_signal.py | 4 ++-- src/qibocal/protocols/rabi/length_signal.py | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py index b0c32eaf1..e9715ba5b 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py @@ -44,8 +44,8 @@ class RabiAmplitudeFrequencySignalParameters(Parameters): """Frequency to use as step for the scan.""" pulse_length: Optional[float] = None """RX pulse duration [ns].""" - rx90: Optional[bool] = True - """Calibration of native pihalf pulse, if false calibrates pi pulse""" + rx90: bool = False + """Calibration of native pi pulse, if true calibrates pi/2 pulse""" @dataclass diff --git a/src/qibocal/protocols/rabi/amplitude_signal.py b/src/qibocal/protocols/rabi/amplitude_signal.py index 92e60654b..dc12033a6 100644 --- a/src/qibocal/protocols/rabi/amplitude_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_signal.py @@ -27,8 +27,8 @@ class RabiAmplitudeSignalParameters(Parameters): """Step amplitude.""" pulse_length: Optional[float] = None """RX pulse duration [ns].""" - pihalf_pulse: Optional[bool] = True - """Calibration of native pihalf pulse, if false calibrates pi pulse""" + rx90: bool = False + """Calibration of native pi pulse, if true calibrates pi/2 pulse""" @dataclass diff --git a/src/qibocal/protocols/rabi/length.py b/src/qibocal/protocols/rabi/length.py index 3f4f2ed83..81bd102a0 100644 --- a/src/qibocal/protocols/rabi/length.py +++ b/src/qibocal/protocols/rabi/length.py @@ -31,8 +31,8 @@ class RabiLengthParameters(Parameters): """Step pi pulse duration [ns].""" pulse_amplitude: Optional[float] = None """Pi pulse amplitude. Same for all qubits.""" - pihalf_pulse: Optional[bool] = True - """Calibration of native pihalf pulse, if false calibrates pi pulse""" + pihalf_pulse: bool = False + """Calibration of native pi pulse, if true calibrates pi/2 pulse""" interpolated_sweeper: bool = False """Use real-time interpolation if supported by instruments.""" diff --git a/src/qibocal/protocols/rabi/length_frequency_signal.py b/src/qibocal/protocols/rabi/length_frequency_signal.py index 31ea4ec69..5c94786f4 100644 --- a/src/qibocal/protocols/rabi/length_frequency_signal.py +++ b/src/qibocal/protocols/rabi/length_frequency_signal.py @@ -39,8 +39,8 @@ class RabiLengthFrequencySignalParameters(Parameters): """Frequency to use as step for the scan.""" pulse_amplitude: Optional[float] = None """Pi pulse amplitude. Same for all qubits.""" - pihalf_pulse: Optional[bool] = True - """Calibration of native pihalf pulse, if false calibrates pi pulse""" + rx90: bool = False + """Calibration of native pi pulse, if true calibrates pi/2 pulse""" interpolated_sweeper: bool = False """Use real-time interpolation if supported by instruments.""" diff --git a/src/qibocal/protocols/rabi/length_signal.py b/src/qibocal/protocols/rabi/length_signal.py index 95914297e..7193a4622 100644 --- a/src/qibocal/protocols/rabi/length_signal.py +++ b/src/qibocal/protocols/rabi/length_signal.py @@ -27,8 +27,8 @@ class RabiLengthSignalParameters(Parameters): """Step pi pulse duration [ns].""" pulse_amplitude: Optional[float] = None """Pi pulse amplitude. Same for all qubits.""" - pihalf_pulse: Optional[bool] = True - """Calibration of native pihalf pulse, if false calibrates pi pulse""" + rx90: bool = False + """Calibration of native pi pulse, if true calibrates pi/2 pulse""" interpolated_sweeper: bool = False """Use real-time interpolation if supported by instruments.""" From c112748e343edc9cffa1a44b476b83a29f330ce5 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Thu, 21 Nov 2024 15:33:18 +0400 Subject: [PATCH 10/73] fix ordering error --- src/qibocal/protocols/rabi/amplitude_frequency_signal.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py index e9715ba5b..60f716d07 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py @@ -42,10 +42,10 @@ class RabiAmplitudeFrequencySignalParameters(Parameters): """Maximum frequency as an offset.""" step_freq: int """Frequency to use as step for the scan.""" - pulse_length: Optional[float] = None - """RX pulse duration [ns].""" rx90: bool = False """Calibration of native pi pulse, if true calibrates pi/2 pulse""" + pulse_length: Optional[float] = None + """RX pulse duration [ns].""" @dataclass @@ -71,14 +71,14 @@ class RabiAmplitudeFrequencySignalResults(RabiAmplitudeSignalResults): class RabiAmplitudeFreqSignalData(Data): """RabiAmplitudeFreqSignal data acquisition.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" durations: dict[QubitId, float] = field(default_factory=dict) """Pulse durations provided by the user.""" data: dict[QubitId, npt.NDArray[RabiAmpFreqSignalType]] = field( default_factory=dict ) """Raw data acquired.""" - pihalf_pulse: bool - """Pi or Pi_half calibration""" def register_qubit(self, qubit, freq, amp, signal, phase): """Store output for single qubit.""" From f083434bbbb0f62746136064e437c5a9c73fe8ef Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Thu, 21 Nov 2024 15:38:30 +0400 Subject: [PATCH 11/73] moved all pihalf_pulses in Rabi-Data class --- src/qibocal/protocols/rabi/amplitude_frequency.py | 6 +++--- src/qibocal/protocols/rabi/length_frequency_signal.py | 4 ++-- src/qibocal/protocols/rabi/length_signal.py | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/qibocal/protocols/rabi/amplitude_frequency.py b/src/qibocal/protocols/rabi/amplitude_frequency.py index b99b195a6..7fc244169 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency.py @@ -57,12 +57,12 @@ class RabiAmplitudeFrequencyResults(RabiAmplitudeFrequencySignalResults): class RabiAmplitudeFreqData(RabiAmplitudeFreqSignalData): """RabiAmplitudeFreq data acquisition.""" - data: dict[QubitId, npt.NDArray[RabiAmpFreqType]] = field(default_factory=dict) - """Raw data acquired.""" - pihalf_pulse: bool """Pi or Pi_half calibration""" + data: dict[QubitId, npt.NDArray[RabiAmpFreqType]] = field(default_factory=dict) + """Raw data acquired.""" + def register_qubit(self, qubit, freq, amp, prob, error): """Store output for single qubit.""" size = len(freq) * len(amp) diff --git a/src/qibocal/protocols/rabi/length_frequency_signal.py b/src/qibocal/protocols/rabi/length_frequency_signal.py index 5c94786f4..89bcee78d 100644 --- a/src/qibocal/protocols/rabi/length_frequency_signal.py +++ b/src/qibocal/protocols/rabi/length_frequency_signal.py @@ -68,14 +68,14 @@ class RabiLengthFrequencySignalResults(RabiLengthSignalResults): class RabiLengthFreqSignalData(Data): """RabiLengthFreqSignal data acquisition.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" amplitudes: dict[QubitId, float] = field(default_factory=dict) """Pulse amplitudes provided by the user.""" data: dict[QubitId, npt.NDArray[RabiLenFreqSignalType]] = field( default_factory=dict ) """Raw data acquired.""" - pihalf_pulse: bool - """Pi or Pi_half calibration""" def register_qubit(self, qubit, freq, lens, signal, phase): """Store output for single qubit.""" diff --git a/src/qibocal/protocols/rabi/length_signal.py b/src/qibocal/protocols/rabi/length_signal.py index 7193a4622..7a10199f7 100644 --- a/src/qibocal/protocols/rabi/length_signal.py +++ b/src/qibocal/protocols/rabi/length_signal.py @@ -57,12 +57,12 @@ class RabiLengthSignalResults(Results): class RabiLengthSignalData(Data): """RabiLength acquisition outputs.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" amplitudes: dict[QubitId, float] = field(default_factory=dict) """Pulse durations provided by the user.""" data: dict[QubitId, npt.NDArray[RabiLenSignalType]] = field(default_factory=dict) """Raw data acquired.""" - pihalf_pulse: bool - """Pi or Pi_half calibration""" def _acquisition( From f52765f87bda605c009599f9822fc8e08f9e771b Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Thu, 21 Nov 2024 15:44:47 +0400 Subject: [PATCH 12/73] moved all pihalf_pulses in Rabi-Data class --- src/qibocal/protocols/rabi/amplitude_signal.py | 4 ++-- src/qibocal/protocols/rabi/length_frequency.py | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/qibocal/protocols/rabi/amplitude_signal.py b/src/qibocal/protocols/rabi/amplitude_signal.py index dc12033a6..3fcb0ecf2 100644 --- a/src/qibocal/protocols/rabi/amplitude_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_signal.py @@ -55,12 +55,12 @@ class RabiAmplitudeSignalResults(Results): class RabiAmplitudeSignalData(Data): """RabiAmplitudeSignal data acquisition.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" durations: dict[QubitId, float] = field(default_factory=dict) """Pulse durations provided by the user.""" data: dict[QubitId, npt.NDArray[RabiAmpSignalType]] = field(default_factory=dict) """Raw data acquired.""" - pihalf_pulse: bool - """Pi or Pi_half calibration""" def _acquisition( diff --git a/src/qibocal/protocols/rabi/length_frequency.py b/src/qibocal/protocols/rabi/length_frequency.py index eaed1e201..2ed8dafe5 100644 --- a/src/qibocal/protocols/rabi/length_frequency.py +++ b/src/qibocal/protocols/rabi/length_frequency.py @@ -51,6 +51,9 @@ class RabiLengthFrequencyResults(RabiLengthFrequencySignalResults): class RabiLengthFreqData(RabiLengthFreqSignalData): """RabiLengthFreq data acquisition.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" + data: dict[QubitId, npt.NDArray[RabiLenFreqType]] = field(default_factory=dict) """Raw data acquired.""" From efcb55a8fc0afa02cbeeb22c095644f125c47766 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Thu, 21 Nov 2024 15:49:55 +0400 Subject: [PATCH 13/73] fixed errors --- src/qibocal/protocols/rabi/amplitude.py | 4 ++-- src/qibocal/protocols/rabi/amplitude_frequency_signal.py | 2 ++ src/qibocal/protocols/rabi/length.py | 2 ++ src/qibocal/protocols/rabi/length_frequency.py | 2 ++ src/qibocal/protocols/rabi/length_frequency_signal.py | 2 ++ 5 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/qibocal/protocols/rabi/amplitude.py b/src/qibocal/protocols/rabi/amplitude.py index e3c38258e..780c07fed 100644 --- a/src/qibocal/protocols/rabi/amplitude.py +++ b/src/qibocal/protocols/rabi/amplitude.py @@ -37,12 +37,12 @@ class RabiAmplitudeResults(RabiAmplitudeSignalResults): class RabiAmplitudeData(Data): """RabiAmplitude data acquisition.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" durations: dict[QubitId, float] = field(default_factory=dict) """Pulse durations provided by the user.""" data: dict[QubitId, npt.NDArray[RabiAmpType]] = field(default_factory=dict) """Raw data acquired.""" - pihalf_pulse: bool - """Pi or Pi_half calibration""" def _acquisition( diff --git a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py index 60f716d07..b3be671a8 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py @@ -54,6 +54,8 @@ class RabiAmplitudeFrequencySignalResults(RabiAmplitudeSignalResults): frequency: dict[QubitId, Union[float, list[float]]] """Drive frequency for each qubit.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" RabiAmpFreqSignalType = np.dtype( diff --git a/src/qibocal/protocols/rabi/length.py b/src/qibocal/protocols/rabi/length.py index 81bd102a0..727cfb950 100644 --- a/src/qibocal/protocols/rabi/length.py +++ b/src/qibocal/protocols/rabi/length.py @@ -41,6 +41,8 @@ class RabiLengthParameters(Parameters): class RabiLengthResults(RabiLengthSignalResults): """RabiLength outputs.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" chi2: dict[QubitId, list[float]] = field(default_factory=dict) diff --git a/src/qibocal/protocols/rabi/length_frequency.py b/src/qibocal/protocols/rabi/length_frequency.py index 2ed8dafe5..a35e175d7 100644 --- a/src/qibocal/protocols/rabi/length_frequency.py +++ b/src/qibocal/protocols/rabi/length_frequency.py @@ -33,6 +33,8 @@ class RabiLengthFrequencyParameters(RabiLengthFrequencySignalParameters): class RabiLengthFrequencyResults(RabiLengthFrequencySignalResults): """RabiLengthFrequency outputs.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" chi2: dict[QubitId, list[float]] = field(default_factory=dict) diff --git a/src/qibocal/protocols/rabi/length_frequency_signal.py b/src/qibocal/protocols/rabi/length_frequency_signal.py index 89bcee78d..12fc379a8 100644 --- a/src/qibocal/protocols/rabi/length_frequency_signal.py +++ b/src/qibocal/protocols/rabi/length_frequency_signal.py @@ -49,6 +49,8 @@ class RabiLengthFrequencySignalParameters(Parameters): class RabiLengthFrequencySignalResults(RabiLengthSignalResults): """RabiLengthFrequency outputs.""" + pihalf_pulse: bool + """Pi or Pi_half calibration""" frequency: dict[QubitId, Union[float, list[float]]] """Drive frequency for each qubit.""" From 66f0b71cfb282a9c5ae94bf574fa253d73e6d231 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Thu, 21 Nov 2024 13:05:20 +0100 Subject: [PATCH 14/73] Update rabi.rst We changed the default runcard option to False (by default will calibrate pi pulse) --- doc/source/protocols/rabi/rabi.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/source/protocols/rabi/rabi.rst b/doc/source/protocols/rabi/rabi.rst index 8cb1e7d07..ae83b1e24 100644 --- a/doc/source/protocols/rabi/rabi.rst +++ b/doc/source/protocols/rabi/rabi.rst @@ -107,9 +107,9 @@ It follows an example runcard and plot for the signal exepriment .. image:: rabi_signal.png In all the previous examples we run Rabi experiments for calibrating the amplitude (duration) of the drive pulse -to excite the qubit from the ground state up to state :math:`\frac{\ket{0}+\ket{1}}{\sqrt{2}}`. +to excite the qubit from the ground state up to state :math:`\ket{1}`. All the prievious example runcard can be modified to calibrate the amplitude (duration) of the drive pulse -to excite the qubit from the ground state up to state :math:`\ket{1}` by simply setting the `RX90` parameter to `False`. +to excite the qubit from the ground state up to state :math:`\frac{\ket{0}+\ket{1}}{\sqrt{2}}` by simply setting the `rx90` parameter to `True`. In the following we show an example runcard From 1f16f5090401da827bfb3f3c769ee46bc0b732e4 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Thu, 21 Nov 2024 18:17:13 +0400 Subject: [PATCH 15/73] fixed amplitude_sequence and length_sequence inputs --- src/qibocal/protocols/rabi/amplitude.py | 2 +- .../protocols/rabi/amplitude_frequency.py | 2 +- .../rabi/amplitude_frequency_signal.py | 2 +- src/qibocal/protocols/rabi/amplitude_signal.py | 2 +- src/qibocal/protocols/rabi/length.py | 4 +++- src/qibocal/protocols/rabi/length_frequency.py | 2 +- .../protocols/rabi/length_frequency_signal.py | 2 +- src/qibocal/protocols/rabi/length_signal.py | 2 +- .../protocols/rabi/simulation_pihalf.ipynb | 18 ++++++++++++++++++ 9 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 src/qibocal/protocols/rabi/simulation_pihalf.ipynb diff --git a/src/qibocal/protocols/rabi/amplitude.py b/src/qibocal/protocols/rabi/amplitude.py index 780c07fed..f7273f327 100644 --- a/src/qibocal/protocols/rabi/amplitude.py +++ b/src/qibocal/protocols/rabi/amplitude.py @@ -57,7 +57,7 @@ def _acquisition( """ sequence, qd_pulses, ro_pulses, durations = utils.sequence_amplitude( - targets, params, platform + targets, params, platform, params.rx90 ) sweeper = Sweeper( diff --git a/src/qibocal/protocols/rabi/amplitude_frequency.py b/src/qibocal/protocols/rabi/amplitude_frequency.py index 7fc244169..8f6e2f1e4 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency.py @@ -83,7 +83,7 @@ def _acquisition( """Data acquisition for Rabi experiment sweeping amplitude.""" sequence, qd_pulses, ro_pulses, durations = sequence_amplitude( - targets, params, platform + targets, params, platform, params.rx90 ) frequency_range = np.arange( params.min_freq, diff --git a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py index b3be671a8..c3394c192 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py @@ -110,7 +110,7 @@ def _acquisition( """Data acquisition for Rabi experiment sweeping amplitude.""" sequence, qd_pulses, ro_pulses, durations = sequence_amplitude( - targets, params, platform + targets, params, platform, params.rx90 ) frequency_range = np.arange( diff --git a/src/qibocal/protocols/rabi/amplitude_signal.py b/src/qibocal/protocols/rabi/amplitude_signal.py index 3fcb0ecf2..b5c2bd41c 100644 --- a/src/qibocal/protocols/rabi/amplitude_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_signal.py @@ -76,7 +76,7 @@ def _acquisition( # create a sequence of pulses for the experiment sequence, qd_pulses, ro_pulses, durations = utils.sequence_amplitude( - targets, params, platform + targets, params, platform, params.rx90 ) sweeper = Sweeper( diff --git a/src/qibocal/protocols/rabi/length.py b/src/qibocal/protocols/rabi/length.py index 727cfb950..0a3b970cf 100644 --- a/src/qibocal/protocols/rabi/length.py +++ b/src/qibocal/protocols/rabi/length.py @@ -35,6 +35,8 @@ class RabiLengthParameters(Parameters): """Calibration of native pi pulse, if true calibrates pi/2 pulse""" interpolated_sweeper: bool = False """Use real-time interpolation if supported by instruments.""" + rx90: bool = False + """Calibration of native pi pulse, if true calibrates pi/2 pulse""" @dataclass @@ -70,7 +72,7 @@ def _acquisition( """ sequence, qd_pulses, delays, ro_pulses, amplitudes = utils.sequence_length( - targets, params, platform, use_align=params.interpolated_sweeper + targets, params, platform, params.rx90, use_align=params.interpolated_sweeper ) sweep_range = ( params.pulse_duration_start, diff --git a/src/qibocal/protocols/rabi/length_frequency.py b/src/qibocal/protocols/rabi/length_frequency.py index a35e175d7..f4ecfda50 100644 --- a/src/qibocal/protocols/rabi/length_frequency.py +++ b/src/qibocal/protocols/rabi/length_frequency.py @@ -79,7 +79,7 @@ def _acquisition( """Data acquisition for Rabi experiment sweeping length.""" sequence, qd_pulses, delays, ro_pulses, amplitudes = sequence_length( - targets, params, platform + targets, params, platform, params.rx90 ) sweep_range = ( diff --git a/src/qibocal/protocols/rabi/length_frequency_signal.py b/src/qibocal/protocols/rabi/length_frequency_signal.py index 12fc379a8..71b6d846e 100644 --- a/src/qibocal/protocols/rabi/length_frequency_signal.py +++ b/src/qibocal/protocols/rabi/length_frequency_signal.py @@ -107,7 +107,7 @@ def _acquisition( """Data acquisition for Rabi experiment sweeping length.""" sequence, qd_pulses, delays, ro_pulses, amplitudes = sequence_length( - targets, params, platform + targets, params, platform, params.rx90 ) sweep_range = ( diff --git a/src/qibocal/protocols/rabi/length_signal.py b/src/qibocal/protocols/rabi/length_signal.py index 7a10199f7..fcc8e660d 100644 --- a/src/qibocal/protocols/rabi/length_signal.py +++ b/src/qibocal/protocols/rabi/length_signal.py @@ -77,7 +77,7 @@ def _acquisition( """ sequence, qd_pulses, delays, ro_pulses, amplitudes = utils.sequence_length( - targets, params, platform + targets, params, platform, params.rx90 ) sweep_range = ( params.pulse_duration_start, diff --git a/src/qibocal/protocols/rabi/simulation_pihalf.ipynb b/src/qibocal/protocols/rabi/simulation_pihalf.ipynb new file mode 100644 index 000000000..709d82cff --- /dev/null +++ b/src/qibocal/protocols/rabi/simulation_pihalf.ipynb @@ -0,0 +1,18 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From a08cf3c592ebbc3d41c11cf9c3a424d3aaebec00 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Thu, 21 Nov 2024 18:39:25 +0400 Subject: [PATCH 16/73] fixed acquisition error --- src/qibocal/protocols/rabi/amplitude.py | 2 +- src/qibocal/protocols/rabi/amplitude_frequency.py | 3 +-- src/qibocal/protocols/rabi/amplitude_frequency_signal.py | 3 +-- src/qibocal/protocols/rabi/amplitude_signal.py | 3 +-- src/qibocal/protocols/rabi/ef.py | 3 +-- src/qibocal/protocols/rabi/length.py | 3 +-- src/qibocal/protocols/rabi/length_frequency.py | 3 +-- src/qibocal/protocols/rabi/length_frequency_signal.py | 3 +-- src/qibocal/protocols/rabi/length_signal.py | 2 +- 9 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/qibocal/protocols/rabi/amplitude.py b/src/qibocal/protocols/rabi/amplitude.py index f7273f327..e9c8d2ba8 100644 --- a/src/qibocal/protocols/rabi/amplitude.py +++ b/src/qibocal/protocols/rabi/amplitude.py @@ -66,7 +66,7 @@ def _acquisition( pulses=[qd_pulses[qubit] for qubit in targets], ) - data = RabiAmplitudeData(durations=durations) + data = RabiAmplitudeData(durations=durations, pihalf_pulse=params.rx90) data.pihalf_pulse = params.rx90 # sweep the parameter diff --git a/src/qibocal/protocols/rabi/amplitude_frequency.py b/src/qibocal/protocols/rabi/amplitude_frequency.py index 8f6e2f1e4..ef2e13368 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency.py @@ -104,8 +104,7 @@ def _acquisition( pulses=[qd_pulses[qubit] for qubit in targets], ) - data = RabiAmplitudeFreqData(durations=durations) - data.pihalf_pulse = params.rx90 + data = RabiAmplitudeFreqData(durations=durations, pihalf_pulse=params.rx90) results = platform.execute( [sequence], diff --git a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py index c3394c192..0c418aee8 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py @@ -132,8 +132,7 @@ def _acquisition( pulses=[qd_pulses[qubit] for qubit in targets], ) - data = RabiAmplitudeFreqSignalData(durations=durations) - data.pihalf_pulse = params.rx90 + data = RabiAmplitudeFreqSignalData(durations=durations, pihalf_pulse=params.rx90) results = platform.execute( [sequence], diff --git a/src/qibocal/protocols/rabi/amplitude_signal.py b/src/qibocal/protocols/rabi/amplitude_signal.py index b5c2bd41c..cb0c996a0 100644 --- a/src/qibocal/protocols/rabi/amplitude_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_signal.py @@ -85,8 +85,7 @@ def _acquisition( pulses=[qd_pulses[qubit] for qubit in targets], ) - data = RabiAmplitudeSignalData(durations=durations) - data.pihalf_pulse = params.rx90 + data = RabiAmplitudeSignalData(durations=durations, pihalf_pulse=params.rx90) # sweep the parameter results = platform.execute( diff --git a/src/qibocal/protocols/rabi/ef.py b/src/qibocal/protocols/rabi/ef.py index 0e60d613b..8061fb6bf 100644 --- a/src/qibocal/protocols/rabi/ef.py +++ b/src/qibocal/protocols/rabi/ef.py @@ -84,8 +84,7 @@ def _acquisition( pulses=[qd_pulses[qubit] for qubit in targets], ) - data = RabiAmplitudeEFData(durations=durations) - data.pihalf_pulse = params.pihalf_pulse + data = RabiAmplitudeEFData(durations=durations, pihalf_pulse=params.rx90) # sweep the parameter results = platform.execute( diff --git a/src/qibocal/protocols/rabi/length.py b/src/qibocal/protocols/rabi/length.py index 0a3b970cf..5fe9413c6 100644 --- a/src/qibocal/protocols/rabi/length.py +++ b/src/qibocal/protocols/rabi/length.py @@ -92,8 +92,7 @@ def _acquisition( pulses=[qd_pulses[q] for q in targets] + [delays[q] for q in targets], ) - data = RabiLengthData(amplitudes=amplitudes) - data.pihalf_pulse = params.rx90 + data = RabiLengthData(amplitudes=amplitudes, pihalf_pulse=params.rx90) # execute the sweep results = platform.execute( diff --git a/src/qibocal/protocols/rabi/length_frequency.py b/src/qibocal/protocols/rabi/length_frequency.py index f4ecfda50..390b6407e 100644 --- a/src/qibocal/protocols/rabi/length_frequency.py +++ b/src/qibocal/protocols/rabi/length_frequency.py @@ -114,8 +114,7 @@ def _acquisition( channels=[channel], ) - data = RabiLengthFreqData(amplitudes=amplitudes) - data.pihalf_pulse = params.rx90 + data = RabiLengthFreqData(amplitudes=amplitudes, pihalf_pulse=params.rx90) results = platform.execute( [sequence], diff --git a/src/qibocal/protocols/rabi/length_frequency_signal.py b/src/qibocal/protocols/rabi/length_frequency_signal.py index 71b6d846e..d5a380014 100644 --- a/src/qibocal/protocols/rabi/length_frequency_signal.py +++ b/src/qibocal/protocols/rabi/length_frequency_signal.py @@ -142,8 +142,7 @@ def _acquisition( channels=[channel], ) - data = RabiLengthFreqSignalData(amplitudes=amplitudes) - data.pihalf_pulse = params.rx90 + data = RabiLengthFreqSignalData(amplitudes=amplitudes, pihalf_pulse=params.rx90) results = platform.execute( [sequence], diff --git a/src/qibocal/protocols/rabi/length_signal.py b/src/qibocal/protocols/rabi/length_signal.py index fcc8e660d..3f3108e99 100644 --- a/src/qibocal/protocols/rabi/length_signal.py +++ b/src/qibocal/protocols/rabi/length_signal.py @@ -97,7 +97,7 @@ def _acquisition( pulses=[qd_pulses[q] for q in targets] + [delays[q] for q in targets], ) - data = RabiLengthSignalData(amplitudes=amplitudes) + data = RabiLengthSignalData(amplitudes=amplitudes, pihalf_pulse=params.rx90) data.pihalf_pulse = params.rx90 # execute the sweep From 0f9ec82ec655acf45650049028e8075da4b53692 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Thu, 21 Nov 2024 18:46:34 +0400 Subject: [PATCH 17/73] fixed error --- src/qibocal/protocols/rabi/amplitude.py | 1 - src/qibocal/protocols/rabi/length_signal.py | 5 +++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/qibocal/protocols/rabi/amplitude.py b/src/qibocal/protocols/rabi/amplitude.py index e9c8d2ba8..315c9f502 100644 --- a/src/qibocal/protocols/rabi/amplitude.py +++ b/src/qibocal/protocols/rabi/amplitude.py @@ -67,7 +67,6 @@ def _acquisition( ) data = RabiAmplitudeData(durations=durations, pihalf_pulse=params.rx90) - data.pihalf_pulse = params.rx90 # sweep the parameter results = platform.execute( diff --git a/src/qibocal/protocols/rabi/length_signal.py b/src/qibocal/protocols/rabi/length_signal.py index 3f3108e99..89413407c 100644 --- a/src/qibocal/protocols/rabi/length_signal.py +++ b/src/qibocal/protocols/rabi/length_signal.py @@ -97,8 +97,9 @@ def _acquisition( pulses=[qd_pulses[q] for q in targets] + [delays[q] for q in targets], ) - data = RabiLengthSignalData(amplitudes=amplitudes, pihalf_pulse=params.rx90) - data.pihalf_pulse = params.rx90 + data = RabiLengthSignalData( + amplitudes=amplitudes, + ) # execute the sweep results = platform.execute( From 6111a46930dff2179e09da75755179d1c1ded43c Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Fri, 22 Nov 2024 12:34:39 +0400 Subject: [PATCH 18/73] fix rabi length signal --- src/qibocal/protocols/rabi/length_signal.py | 4 +- .../protocols/rabi/simulation_pihalf.ipynb | 83 ++++++++++++++++++- 2 files changed, 83 insertions(+), 4 deletions(-) diff --git a/src/qibocal/protocols/rabi/length_signal.py b/src/qibocal/protocols/rabi/length_signal.py index 89413407c..5ad796c38 100644 --- a/src/qibocal/protocols/rabi/length_signal.py +++ b/src/qibocal/protocols/rabi/length_signal.py @@ -97,9 +97,7 @@ def _acquisition( pulses=[qd_pulses[q] for q in targets] + [delays[q] for q in targets], ) - data = RabiLengthSignalData( - amplitudes=amplitudes, - ) + data = RabiLengthSignalData(amplitudes=amplitudes, pihalf_pulse=params.rx90) # execute the sweep results = platform.execute( diff --git a/src/qibocal/protocols/rabi/simulation_pihalf.ipynb b/src/qibocal/protocols/rabi/simulation_pihalf.ipynb index 709d82cff..67497f2b2 100644 --- a/src/qibocal/protocols/rabi/simulation_pihalf.ipynb +++ b/src/qibocal/protocols/rabi/simulation_pihalf.ipynb @@ -1,16 +1,97 @@ { "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## RX($\\pi$)" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], + "source": [ + "#Define paramters\n", + "A_min = 0\n", + "A_max = 0.4\n", + "A_step = 0.002\n", + "A = np.linspace(A_min, A_max, A_step)\n", + "\n", + "t = 1\n", + "\n", + "omega_q_min = -100000000\n", + "omega_q_max = 100000000\n", + "omega_q_step = 1000000\n", + "omega_q = np.linspace(omega_q_min, omega_q_max, omega_q_step)\n", + "\n", + "omega_d = 1\n", + "\n", + "A_grid, omega_q_grid = np.meshgrid(A, omega_q)\n", + "Delta_d = omega_q_grid - omega_d\n", + "\n", + "Omega_R = np.sqrt(A_grid**2 + Delta_d**2)\n", + "\n", + "# Compute Pe(t)\n", + "Pe = (A_grid**2) * (Omega_R**2) * np.sin((Omega_R / 2) * t)**2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(10, 7))\n", + "plt.contourf(A_grid, Delta_d, Pe, levels=100, cmap='plasma')\n", + "plt.colorbar(label=r'$P_e$ (Color)')\n", + "plt.title(r'Heatmap of $P_e$ vs $A$ and $\\Delta_d$')\n", + "plt.xlabel(r'$A$ (Amplitude)')\n", + "plt.ylabel(r'$\\Delta_d$ (Detuning)')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## RX($\\pi$/2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, "source": [] } ], "metadata": { + "kernelspec": { + "display_name": "calibration", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" } }, "nbformat": 4, From 973b31841a5e12a108c12e4f1dc68b926c7cf4ff Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Fri, 22 Nov 2024 12:35:48 +0400 Subject: [PATCH 19/73] fix rabi length signal --- .../protocols/rabi/simulation_pihalf.ipynb | 99 ------------------- 1 file changed, 99 deletions(-) delete mode 100644 src/qibocal/protocols/rabi/simulation_pihalf.ipynb diff --git a/src/qibocal/protocols/rabi/simulation_pihalf.ipynb b/src/qibocal/protocols/rabi/simulation_pihalf.ipynb deleted file mode 100644 index 67497f2b2..000000000 --- a/src/qibocal/protocols/rabi/simulation_pihalf.ipynb +++ /dev/null @@ -1,99 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## RX($\\pi$)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#Define paramters\n", - "A_min = 0\n", - "A_max = 0.4\n", - "A_step = 0.002\n", - "A = np.linspace(A_min, A_max, A_step)\n", - "\n", - "t = 1\n", - "\n", - "omega_q_min = -100000000\n", - "omega_q_max = 100000000\n", - "omega_q_step = 1000000\n", - "omega_q = np.linspace(omega_q_min, omega_q_max, omega_q_step)\n", - "\n", - "omega_d = 1\n", - "\n", - "A_grid, omega_q_grid = np.meshgrid(A, omega_q)\n", - "Delta_d = omega_q_grid - omega_d\n", - "\n", - "Omega_R = np.sqrt(A_grid**2 + Delta_d**2)\n", - "\n", - "# Compute Pe(t)\n", - "Pe = (A_grid**2) * (Omega_R**2) * np.sin((Omega_R / 2) * t)**2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.figure(figsize=(10, 7))\n", - "plt.contourf(A_grid, Delta_d, Pe, levels=100, cmap='plasma')\n", - "plt.colorbar(label=r'$P_e$ (Color)')\n", - "plt.title(r'Heatmap of $P_e$ vs $A$ and $\\Delta_d$')\n", - "plt.xlabel(r'$A$ (Amplitude)')\n", - "plt.ylabel(r'$\\Delta_d$ (Detuning)')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## RX($\\pi$/2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "calibration", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} From 3164fd80d6ec6a3a9070183b55a212850456b42e Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Fri, 22 Nov 2024 13:51:19 +0400 Subject: [PATCH 20/73] align True --- src/qibocal/protocols/rabi/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/qibocal/protocols/rabi/utils.py b/src/qibocal/protocols/rabi/utils.py index 1463a9626..a86686dfd 100644 --- a/src/qibocal/protocols/rabi/utils.py +++ b/src/qibocal/protocols/rabi/utils.py @@ -260,7 +260,7 @@ def sequence_length( params: Parameters, platform: Platform, pulse: bool, # if true calibrate pi_half pulse - use_align: bool = False, + use_align: bool = True, ) -> tuple[PulseSequence, dict, dict, dict]: """Return sequence for rabi length.""" @@ -278,8 +278,8 @@ def sequence_length( qd_pulse = replace(qd_pulse, amplitude=params.pulse_amplitude) amplitudes[q] = qd_pulse.amplitude - qd_pulses[q] = qd_pulse ro_pulses[q] = ro_pulse + qd_pulses[q] = qd_pulse if pulse: sequence.append((qd_channel, qd_pulse)) From 393d039133caf98db26e38d664981a9334833e3f Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Fri, 22 Nov 2024 14:53:54 +0100 Subject: [PATCH 21/73] Update rabi.rst Fix final state for RX90 --- doc/source/protocols/rabi/rabi.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/source/protocols/rabi/rabi.rst b/doc/source/protocols/rabi/rabi.rst index ae83b1e24..db1bcecf8 100644 --- a/doc/source/protocols/rabi/rabi.rst +++ b/doc/source/protocols/rabi/rabi.rst @@ -30,7 +30,7 @@ Rabi rate is larger than the decay and the pure dephasing rate, where :math:`\Omega_R` is the Rabi frequency and :math:`\tau` the decay time. In qibocal we implemented also another version of the Rabi experiment which can be used to tune the amplitude (duration) of the drive pulse in order -to excite the qubit from the ground state up to state :math:`\frac{\ket{0}+\ket{1}}{\sqrt{2}}`. +to excite the qubit from the ground state up to state :math:`\frac{\ket{0}-i\ket{1}}{\sqrt{2}}`. Parameters ^^^^^^^^^^ @@ -109,7 +109,7 @@ It follows an example runcard and plot for the signal exepriment In all the previous examples we run Rabi experiments for calibrating the amplitude (duration) of the drive pulse to excite the qubit from the ground state up to state :math:`\ket{1}`. All the prievious example runcard can be modified to calibrate the amplitude (duration) of the drive pulse -to excite the qubit from the ground state up to state :math:`\frac{\ket{0}+\ket{1}}{\sqrt{2}}` by simply setting the `rx90` parameter to `True`. +to excite the qubit from the ground state up to state :math:`\frac{\ket{0}-i\ket{1}}{\sqrt{2}}` by simply setting the `rx90` parameter to `True`. In the following we show an example runcard From 1742dc1e7378b4e4f40e21c711bd4e85b08db671 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Fri, 22 Nov 2024 18:07:09 +0400 Subject: [PATCH 22/73] Add rabi_amplitude_rx90 --- .../protocols/rabi/rabi_amplitude_rx90.png | Bin 0 -> 34569 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/source/protocols/rabi/rabi_amplitude_rx90.png diff --git a/doc/source/protocols/rabi/rabi_amplitude_rx90.png b/doc/source/protocols/rabi/rabi_amplitude_rx90.png new file mode 100644 index 0000000000000000000000000000000000000000..ac6c53ebdcdf8df1f3c4a91589f3860f32b72b0b GIT binary patch literal 34569 zcmcG#RaBf`@GaO0!QCA~fS|#pae@YScXvqRF2NmwySqCCOK^AB;O_4C%kMvTt@|(! zGi%NC3y1F0UmvTgy?50Km6sJqMj$`{fk4O--$WEap!fYC&^rq_7~q}naDiWdKOY=~ zB$VNRmnWQY2=G6?qo}&0lAWoei-Elf$jsKx#^j5Gk-dqDt%JFp;~7*ZKhTNlUngOE z69Y#JJKK-S7B(gzXA|3xEG!>w?VLZdFtM=Fe`E%8GqG{Avdx#H0N?lsk`Vc-?3#YO z>gI{*^xA(hPa!i^c<@y#8y3s`V}U$^3WE8L;swZ0R6#`4S@hYBbl5IQ1y}VpX7y$v z>!_xz{AiOQ%=IIpeQ~y8AP$#g4pz<=EJ?)r9C3FF3zkj+MJ(*pq zXZW8}ru{A77_i1h* zR{#HWtB=`K|F3@tjv^7_f6tf{3N!kzL8kc)LjUinWFmd@Q~9H**~xc$a}> z;8wNr6OPQAbGt)(qb^y%J>;DxESgZrSSg1KbJO#u;25jI8hup^2oBV3*e6wbow2T9 zsS*zhvbs3G{S96g#>`^#3e2ofzW~C$8b?*6&*4pTDLv#;x|_OID5$b}hZPA3WFlq% z&3vy{;&zBA>a*NN=T%>v>*2<>>r}AFpKhr^I_ltUyy_l@UiJ&kAU@7KKl$**vNAUO z(PVm<2(hY4RX8&5c*ineTvwYt8{pw8dJB5>XDpu#tgVMT)L$yfmm78A&6b-wNW^bw zP4r9O3~mj@BHz9Y)AClm3}U)4Ux!*Fa6X4?OrM$TC%57;U*Y3qt?6{9j&D-!I;cn` zMWHM0UHzUCvSc)_BTDeR>|&M9aAy?mA2HnTY030#bl~0ltyoFGnj{J<>oYNJvQ>&3 z#y}B?Cghs&Z|fntBS^!NU9S4js0`YpRL}_vS`Q;#1>@(PR#teo`@E`O9=Ps$_s$m( z1C_au^goU@H=5=JT_Okk6)A===i*dWj{V4z~mo?578yHXK z=I7P!b(?Uv=bIhgW&ptM zN&R%W9j(RWp=oENvbpFVGil~2YRnC20#(0-!Wj)c7qxVme;zVC-ww^}k~uTJQnW>n zkm9MbkxXZcR++~O2{%75MdwRg)F{)4%aDV&$WNay12%u}KZ8kcVq!6SPLH-Nr(opF zs%UvIK3f?Rz%jXsR#QxVE6Q?ksNHClgTyN-zJup7!Z(}Ioj4xO=&D&!W<6$?$SMZr@<}l6tWD>%52volyyZq8Lp-Vk>@6eUzm3U> zP{=onq~x=ruk%~_F+1XA$Q7c9O`D*=RdhwBi6Zy8iq2 z)pmFIBAS3-kzVTWYFF0Jmg>%D!t~r{$R!)yqT|)oA4B!Ve8OmibK#&7^d7J|%lXc5 zv4uipMIQm1?{TZuqATI;&TgBSfgc$|=vL4axw!MOU^8O-(S5Nh)I7GkZN2q0R;05snRBcSwdWm?7sK9yeBB9wVbww~^3}AWdt&l2gBoMjSAZk)O#W|9 z{IqkdR)^ZVZA$JzewOS+73RJnc)1;KbW&KM=o|tqzrOF|EBdju&$UTCjBmZqyuNK&#gt2h}VVFf`IbWKX|`gA6}h=ep;UV^#gS)zBZ zi7i%i%b8MeWNqL6XW5zKZuW%|3mMEVhHmJ!wInj2A`+=F6qQ`J8K;xEwnw1t9@Ak{ z>~u!L5q)}DjIa*23NM~CxK^sGH;%m`IvEY=uSmZbp3*Toyl6tzl;HES*l}oJOD*2? zxSzg4w{?u{-XT{YMRq9OwMp9eUbj#m#!KI=5fAf-om6^NL@vI*AGPu z*#;~^R#)RSbrPQq6S3&vfqja~G}g#vx=e$M5)&e1EK=&+OV2Q8vVikXqADsXM?hSd zYyg)ud@bHt{_19OHe&XC#Qgly?lEw=q_ZXI=DcgS7;|H#Iy(6m#kSh8ZLacihsLpH-C5ggR6wx<*g`y)+~KQ}2kD;}NOhgWuo zu9ErR2B39_|Ic>{M%-ieh^5?47e(6)oD3sE4AkfNo?l+$=UmFnIb|giUlU`ckRzT} z%bsWHzBG%{r#@({6@!?*S8%G*1fW$=tkV7$)qu$Of416=%~kT|(8s7bSO(1M9%vWM zY^a{fPmHq~GLGx6$e${J=1a_CKGjO@;NMVZ@-P3tgwXS|&E`+RRA(8(Ar~&pmbSS zeR8vPD+*yTLQ)$^9sL1OAZ{q=3I=CXUpNFFGhTzzdEuMZHs` z4{!=CiN!+@cRPD)MnhNeoHffT-^KO%uI^gj*rTLj#!Y@->VlCLqiPV?PlY@lvCEs$ zQ7kh@cXnc@AMr%r$aht)w+w`0uB-6Rhm!a)?Y0z zcoCw5FemT^9m>qm*QE^h^@)>^Cef#-!~d{T^ryaEtZyzD{@yO;viX>f**Y3JXlQ$5 zFBbgHqxYb<9<#MuFg~`9mB5#xP&(|c9!w?ocX#H-Q}OTit~r!=8Nsr_){>sJam={s z74$o*Xta7esHipJ>V9OHkBzQ`)_Tytm!SMzi#82GKR0Q=)tr3_)FE;Zxzdn*zn`I< zrV`1+bX*+Xt8{ z?{0d@=;C-12>R_}T{-eEEH6oz5~z6!y zZ*1?C6%`FWlP#?r?rhR4%B2RA^<>!<-l@`aOTa*a7vJItje$0UT9=Ns1_+s z#q^ZkYKKOmqVGDU$ab9_8IswJ`s~99n}d=G?_26>?<8S=bGTy2;6~!zaF+E`Y&Y+r#u~tIct#7I?-S4$&pXLH|`t>3FMl|n0s4D z=Jn&ml_T#}?fEGhu92=4+Kn;ZaJPOn>dULw{`@H^r~_NQ7J9g`sU-E;Ls=M2Jc^o# zrncrz9*z>W^T~^aYjX4kQ{`7+){{*=rCNWml@k)P?QW_REt8%bALtQ=?(364e?pR^tfz`Y)I~3OurDCQycK;H}7fIlDC6!)=~96cj^j1 zId#+Y@`m>7SF^WcrPMURNd*Oy&EC#~6#QqOYgu@z^Fu;;sP{aMt!<)F4WyUBw%D&a zL{A^}yfB?+Ih!kVa|#J$RfU}*qyE5VlK0-CgXoS0jJ&4Vh>Dzen$(ps9t9P1B~5>Y zn(7?gEm9F;^DpO%R|RK{Iijy?QC<(vS08(lijTi4M|&ji+O{uwV0uZa@r^MA9M?6* zdEIVZJN1WX-%z}xLft|^+7Y;T%YRm9a^6cZo9BYOCm_I<{+tjxUz(36$E^t2zs-p}j%2?N}<@iY(wZeVdVyANK~gQW@|z zM*AL;d+PxJ)zg1@1$o6*d)M|jDy!RU(Nqw6Z0&|Drz(xGus9&7v0dhik+zHO;+M zst{aF@dud9mlH_G)A5PR^)Z7y9D*YL&q@{+r2?~6l;ieb&$@_BYZ3PQ^=m<$1F#k2 ze;kR#&82Y{-zI~{V**kLC2VGKuz>)Cr zP>I%1>mO}`j+>Z|%&EmwGj}Yq5lu8Y3C`b950UNL2%xmvr{T+uS=ss!9mF41^T-4x zyfTB_Sz%J5pS@+f0-26v(6&2T&?+{%!U-JJ(ieO~VjwP=qSB>wy$k+8vJl|3`M&cY zi7H?sakCb)=J9U-xFJ3H78gX&{aC%N!Z&8RzdS!Gql83M!96eXiu;*EjPghkcTq3s z{8chR+_viDr9aho*g!?67duFx<5{&6;v~*1k5(Ys`n0i{>xq+`0nw_`&gs`OCRNft z{Kcf8`lGhgoy4@271n;yrH^vx9WGf>K5dnIJDo?9HZN$?ldB@$=T=za{%Q{JWY0=H zhwFyiwNPF%T<_S$-`#)Dh{B}8qW?oXZFfB;x?N+W+|{j8T87QB^I-$wKvvKRKb9`* zeCRRI9GNCcG-+Zc|9sr%0IXSwMp$-Pr(sJ_XIsQzM3A8L7BEb-aU;ztS77 zTiZJYQ7K#UfjJP`B)s}pt5KB|xA>U=AcwR+)`vFB{85&9g&H-e0UYwhEQcIC)5~X0 z(>j+hBVo`AQ|~nOImDKtmGKEv<^orV_13$pTrXrUhQD8Tx6CWIm#D zWFS}-x5BbPaUIe5ci!gAYu7r6n1@g23lh7@0+dkm9@#M06Q2vmt7p0s*8c?c5yvQ) z6){#SD=b}4jo|K_@3Y{9;W}+!m%C-yGDqv>$~+I31lUuE7w4YEORiT2k(IzUs#jFO zj`}^jR(sdxJXTbe{64AO*1M~!5DhNe?u!>q@uzpfAY~>n_I__k$2Lg$0bp0p$)knmhla!nD%=>DD=VZISYk(H>FDhiQO9{sZ4LxHOVgTd zTx#O`zXULAxA;D(@%wGoTBS?FP2vaGx2Ck7+uWwX8tv^xzD%2dk46T$2Gumic^OoB%jud(eUm5we z8fmkA0(LLd&p0PkZnx9B3_Yv(nf$kJE&p8N+^ZQ%n3;I6Tm7P8ZZZIkU)HRO>ipbU zIpf_?&qK2e4(Jx=aA5I}>twunu)-~=;`L<(N&3dv)u<$@PYn9Vsk0A1;hT{?&gpM? znXAxBsX}{9Z;LA&Vp!BeCfE{b3yX~J&T@s9K>}9kVee59awi1>(_oe5n^3g_>>~SoX@luk z5r*-{M!Jv^YuwxBKLmxCLiYqa6SgP^)5WEV#ih01kJWw3sWwD*ns7s5^PBNw7a>>8 zO$l7zcA}P7+HQYk{zE6;;{6rVonIm%`)>^vA3x89c1|+n@7w2V1)kH5j#gW@>{WX= zpCR@nRQA+fc_FC;v&lMp_vvj|tUegBf-^Gvh3wyiw_&3(+n$7xfB50?LCb%jEWbKW-#>1iH)y&a_HTyFdWWrhFAWim z(!h)4xCyxqn>girwA+VaaIVt##%C?KN%j_kLy4tl3Tl1i({XHk+E{ekPoH=L&CDh^ zb^kf5=O-Cro=eAofMRVf*tved?__CwvNbwB}wpy>5sZw}Nv7*BX?qRoDzqLTf}x1&0q=81^xqEpVv~I!H3|M(yE|$MdzAo9nZp2h~?x>PrAPaDQkGiXPy;cN@7`XNfy@eH? zUe$JqEE3ecjmq4_kSoar6NIR@%RiEaqfqtM>|bBrQDdD>GcR4DL+NDY9U_6r8J=$^ zIw)u+9X9J0vFzs&lcDJ3n*=|}eoHmA+RbFS{ zQ!jOgjM$y6-DPn)9j}&kyN`r!^t_WcX@y&St?Yvj6o}hYceLb4>l%7u08Si3+vB4*=GV@@+a9^yUx8nGNF1-0Z*RL%Iy;urv+jJnwM1y z)7xCjfln)9b#pb`BKAMik~0x@`mq{qrEhX&!)gRXkA*b-o_lb zoFA0t&OTSloL8xCP0OVIE!4w^CsC#0E6+P00Fg8@cB|qeJn;<&1edMwugct!yiQh# zn9GG3On3^$22;p& zboUFlWE6};mpv7#?g`9uD>YHfrl}yp1Ph|Lh6Ypc@Cp(42dd#CuqJWeo*wPWUw;R1 z_?W~ml@M90J%*5ptiSxzm_1eQ%~BEivaYAJAQ8FN7;MDHueIOm*lf6Y+`|!8pbR4ukwoBd< z_!Br8k{)-5-@!Qx>4BDT`H!V7n&OwKfF(uqZ*PXWjjnJF_co}t4&ohtW{}-6S{4Ce zlnQKgGM?qtO0I1R-9r_$z)x2?f!YpSLyoGBmI9dtb#^P*T#iKbn*fPm*0VteWlTVvh zSvFtD(G*(Ll%MN?Mc66pr=tvvXs8p>dHj67(4#yz+lLRKJZPDN@?f1`-XIi=X-I7^WdB zBob~@a(L;Vf#Y)en+YUlR+8-GWIguItgbIdr0AcqI$GA&r4Zgqokn{3WoK7%;uWw* zh&At+a=PetWJF|tIi`_!-7w*!iW;UAC*uy^H676XmGo8bg`lo7iaDvZ8B&VXXZF*4 zy(>3_r$t(4u#s4CDFl&RJZ4|nQN{^r;q4PBr)Gno=)$J3)>G`%E1e5{9DTJSGj0~a z=OryOz2dSFw`+d!5L@>pIJ0~R_ZzFt)@05w9;Ye+)R@>TA(K-7%-{KiI4|iVaBf^& zUH-nZB>~jp8ru(hHQv69>4vDS>0^imfCJF ziR6l8j0f}r6{XBBe00>`z4*3b#_o^wyW5g)M!>TZwa5QzBq2`0l&&}xA-XJ?r(%ei z6IUpG54@(}A`b&1B5j$_#hO?Jd8n);;3;T6;FgmguDis^H-+lgNp@1;$4{vO5DJJ( z%!bW-h<#(c#4^q_F@fjM0Epw)KH{QW=gp1LczKiZ)h6a)#0NUB2rTihL)S^sqkJG%mDPSKsACC>H;2OWPFkMjP-Z~@WpU?=W7V# z9?V9?Y0Ok_(beO6eYHnWkxEXoB?o>zF!3xi4J1b$-J1RA88KM>U3&+qrI0|eD<=nT zy~Vn3r1ZTIEiUp+h}gB5T^R+%-Z~QLshj5&4v=!3&>T}G79aXY5IFm*{>VF_seMDW z_NTG}*1{4c($r`B1BkZqcn%!7AF-VqdG0o90I?o@rn7rn7ISTu)Go*B-^(){c>!Q( zV4rv1!TPFy9i(dA zchk))YNzxFt1x^b-)SS$lmlRi-1MRi=y(J+jVC^Wi~#nqCtV>_`NbH0>~s(mVQs-T zHaN=^kEXNoM2Afzi^ud^=FQu7#gA;pWaXRE8B#@_ljS=DgC3*<#NTF%_JPv%k-(Ce zL6a;=M*EC^-v7OKymrE+JPj*_Xy$>>QHoPwZwC`QA3%Y-?I2-QF2qCu9XCvH|%RJst>4G)3Pu6FHAEd;VC<4nI) zJnh%qkQyUhcrGq{s^}MTO=y=e*s&a^xlb)qcE_opIBeHLyPVY`pt>T(2_IVMX^%j8 zjES+a%V|E=6vz0Nr0SxAo{7(CQrSd7FuEBG1tCeqbv5$=j0&&3AQ@4>a3p36EuY` z&{y9*s4)!S^m)`EcSin_Iuo2t!&}=fybj4^0Ztv_;!i(-yEYM003qMts zd4K|}Dl+b&s5&CY`d;}@7zb4pcH&Bq?{U*jMg>b()N(7}LXB{p!X!Va;Xnntv5oZ5jK`eF8^mb~l9@`yv zH)hgv--^e6g`bGUR`1p_v{EpV>dh!jwKlAR%1F8FzI0_BNdMX^jFi!yzRB8N$sP<_ zxYk>qz<$!A;%%~JhLF~@ztEv1{xv6xL|kBJYS*Qu;nasqxl~^7EJc*8pi>*+2=3ji ziAeb)@_dmstiDvGj}HZ0PC=Lvf}Upyto{%dCmxd2g*z8bFPnBp$9@CKne0>5vy>AcOit2#L5gB?BO*^3CH8aJpUzX*6-GD@$9* zAOf+quI{_m`yFju#63=<_|*lnA04mp0Kw2!J>%j!Tg%fgOR`uE*oVuqK5uIhi~5c^ ztwd>jltyh!_2_;S&8wtcY=B=~bKwr6=TXbHiWj4UIKOHUX)V$O`u;IeiC^--I?+L9pli5hTsAD-|eU0L_4pANHS zZ8W{tUq%_fa>b5 z*6Z{|X-v=+DDdR?&_sm-;(msusxqpnYD#=_#9F_8UnhcYR+69po~bVe!z*!DS{!}6 zU4AHDydT4g_v+L8Mz_js*5jXcq;>tsg{CvBOCJt@0J23x(rBUOkP?N?9IS7J7CQ=M z0O`_wNztt9JrgHRcoCT2dznsIrxWnh^@)?eB65UR=qsO~>1;Uj4tKWc$HsiZjnXh% znUCvLb)Y_nziS;`JlrATpej7m9_Q3&;VyakIv;UH>uE;gmg4f=q3s$PoCbL7QY)+< zKa^qeo0*A6#Vu^7xK)#8nEuip*ZA*GYZZ9J69U4>Dc@9sP{^%e1MTtR5!Y%|$8)P% zxA7szSxf#-)Jp566F5EFs&two=3L{Sq}A&?sL*hSwy0NbsQH92xpVZ_kMlQ%n_tyY=Tmvv<^R)+N5&R{x`r)E zV8PA`AN%r^Z=N5wckfJC*40`%MU*PLbI+V^^}@i%DieT_IUip}ESw7bmN+Ro!&p+6 za%j>evO{@Cx+=cDH|n*EtZ?@7^A#H!iS^H1mH35|g;MMImlM0E5yF2NQO1+HLxR9B zdT#t@3?#ex_Tvn>wMm;ONE-_$Z|5a6y`C1GPVx0@#82T)>cgd>5T0tUXFE&AEQhtK zdF)#atrQvet}hv_%VBTMWg!FllJ;bF<@CKM%BEHNDPJOKNEF8aD`FO8=}((d0TI?no-@L!7JbroqU5(JbBm~f4d%DVS( zC9;|_`FNu{;EtLEVCO3KUtT{Wjf2{clkjVpf`28x_RmLaL^8X*w`0f@3o~6_;qq)4 zy>eLS&CEikQJb1^x#z^(K(t}IC6qZoWhX*uL6H4j=^2QgqFIEIdsVxL)z~yL#A+I` zM>{fD=Hq9w%yI}TH^HKr#9>^WRwPg-kOP=b z;Ga0Ud!O0!^M%7a}`5?a)kKUqL+1&oX zYALx_H6X9wzeYxQnshqV|6lU;VE*MjBjYjej0&)afN(*!WNtNlZIfi&48QowfL`Y9 zpK}>;hl@o359b>nzVd;t;dm%18c6qx3+D-)s*XRI9aCcidgXqqCA%yo2+)Dt9o1@< zv2U@clMy-f7auwR2@N%tHS0VzNG!1Z%QU_TN_ls!4ZdH&GMg-Ahn$72VbCR(oYND2 z;KL1oD07t_J>!b1F0%b-(a~u)2s88ce)2Gzl?_%6S_rezD^;9rAHn@a3J(0b1 z0{cn=s(_L=*U`pAo~j!u=jnC`V_02m;Tk?T4})FyvuqK}2aFB=Fb%cw^B|LSFay+8 zfO$ADmX#{aM}la3Oy&5xYkhEF?q1~W+c5Ou1kO~XqbLl|@@@xlZ4}$g@ zzpTDpWbqZXg0l2-n_{gJlL%&z~`0q_$NjGX&S;_1{COSXyBZ zMM=&hkZBqXs}iFG|I=c7uHy%@Jv9Kr8#?b!Ue8_aenic_(2&Mz@Q2QPRNwI#rZkC@?3H1~gA;BmF<3>)MADRKX* z(-AQ7qg^8Bdsb1qg?wokT{BhxsVnjpBxSyt6+Y7$mnxciroE!uS!km->1G9z7QWVA z@aC%a=}UjE@X64f=Mf3dOeq8d($N)+YS#L~;*9$ZF$~SD&LwN_WwNP?P^!8pMiJ_L zO+U&MOClJx-MxhOdvw}11t&_;9>?EYtJpWlWX`1)1FNpbKDv9G8|tq<%Sg=7#;|ZD zcw`j|OU2@)+W*!#|Cui{%O6%~pmB#~>nqi~(V0ET>#1t$n1v$(xVr%({F@HPy%%qvefw!50~c@Pz6rTO{mGOh#b_ zzq;=J4W`D~Fv#eMDU)}k{FU^5^{G+du4$w&d{r!<_ar|j@{|=^gJA}curn6_ewANI zNAT6Kt)cC4!NPK{jG?6Z6}ocd=EHW|N~B^3%(WTRn8OL0=-d?sl1{pDsfF@>KadWc1;>K*_&kc~QQLmh?y9iiPs2}f$Dr{WyGSL4eYKdFu=@1) zYl{u3O?6p*^9LY4gWYZzEe?4itnSL%9vZvM(*ABD1!jN5Pv1KOY|AmE>dxa71AASn z7o%L#;23r)2&Ojs(XPC>RpW?S=su!PEHKw_yu|S@2;0n}0l$i!m z#m-PLEN!h_`4}Y-Icw!?3Ix=6_8BFHE^7nh-bVa39md-P71q@=SGTD0nMPs zYl%K#vVV+utUoe8<_w!aBkm4%(~REf`}itjT84Hqw21W7ahuMR%RnrvBVX7TD&o=l zD4F0Se!4?y@`ue6qaW&JCHcL{b>qIfbJNN@Hj|hXqmn8E?lveF`Q*M55s$L=YqRxd zuNAz63^&>xY=l-sEJMb5rsRF5%USXIvMw(KQy2D7c-xfIzUau5OljfoL=6oHb__|w z;kid8B?{DhxoBu0T%GNQ^13^cQeYJ(0kkXDgw+EqD8`W9;9I%5TB{4)3h^ZtDvx(i z&S5sd^us@h5ehXvho9OB^n`3M z2ni_znN|L!{WaOvHoJ;Mje0KUfDQWgJY!N6M|LbL}tcEn|VJWRXy>Vq>Pc ztAJ>ahWS1DGi7p+-_2d|5;->B-ZnNeH)I}~Kk>j25E%|p=mL&(H! z`8|ca`c85l7@9t^Kh-<5`j5^W4tE*<&d|J5;zNx*0~zJfbf&fODou*Po6$ zy)XbBl&`(L+XLZ)Mg8N871f3-^}TxqMZ({+G#8Y(3a!U)crHFpy5}Szc7?VB6&6di0OOt&n4%()`kC;_S zK{=x!JEQ=K4`UOdL_&o+&&saSUb8Ef&q^3nb)M@x$0JH1;R%cqU2ofGljxOom&)h#1e`j;Cp!-HQ50?T z*3;{7V|tOySE`TK9T~#GDk#KrlX4yO50TEaQ5iE_hRF~69~2`hJj3#0ddCxu?6N>Y z!j0~MUmNKDfMoEM05`#wUBwes4kJ8D93OEeGu<&rcYlRn$doD0^<2rQo;H$2u=MXz;w z5W2wGjHFyFmsJk=lmjh(4Fb5~cQH!lY!`A;AJfeVGUC5e+^ObNC(1-cHTn=u!mPNi zwqBODY0~X8Rq!!T0~YeMUzsFzpc7llX@7aBH%WvpSH(yUzNb7M@He)QK=(FW70*0a zmiD6^`f^o0XInt?icw(%AE_+khTyxM{qeWN0Xh(u;9|IbKmSmJ-QHVWhr@y3Y zGi_iE=;H#?YOBYXm-vwJ$J)+wO9&CWF+Hc8B>7w#9X9b$2ZViGY^7`FKAL%e)AU`B zX1O*&19H-^(nrL}l-W5NdXIUf>t_lhRDWUsmr!^HuBpP)z4g#vv4V)`6UKRbHfG-j zn@4I!I+*=M{u?I0xEfk98%D~E@DX(v?7j`v{==iR?erVEZ$>K{3PlgJ<}c}B0G6mR zCe-+q!L8r(l5yFY0}>QS#m=|w=DO-F;Cn`bKkUw7N$0+AV+R3(LpU|hQN67}z8NL@ z>?<9P?wq=+U&o?Q1%~X%fO5qa9O>U$$9@tXIG|P}0ztcbPjud}Os(d_u!OK9KdFs8 z*j<^7`rA%p)(m?6F(QcIDS8^5at?i(&GfAm<5FN3W9u_VqAZLtTCKpo?`CrdWjIdV z22XFzzuL!c^UoaaV8q&=#QTr&#k?Mku~aCtfAJ6ntwJM^ z2LW-5JL#uCH;0J_L**KaOfSZMw!v@geF7^B6yQfQ&heAhB~3cZ7H@9_wPoa03(;_? zvRpEBV6pn~pEufBS3YzpNZcMtX`l<}A{Yrk4sl8){9DP^6MJc7;K|J;@xJcM5)%cr z@dl!I*UM6h903`SHOM3z^HqO*HahM^xo9jf}E?1c|nCAw-s`Nu1<-$-LFD!_tR%8mtbDe zT~R8)x;>Te|Hx^~T=|4dlA89*R!qZ9a_iYnD!7Y~u_^ED67mJg_N1<3-Y!c0$K|Lz zXR%w)Hcn%Tm=brah(+uDQ4Sp1tS8+Yy?q2T^ZaU|0^@tu|Fqrem7M4PT`hZeKa?qI z=#Dj2Ae1ig`vNMU6$N7Q7vZ(_$h$8x76-iXgmCL#X)oO@M#&^k`FGpky;Ng1!H?qh zV>5ttbqvM2L;Iz@4Vu3oL=lsUjFU|LSV?gb9Ikm6H|cxf;Un}Z7ms6$Bynu~X9_KM z%M^)PUF`-3zk^J|GE{h7sazJ^Z>H(bKsZeKsON}K5X{$avCa?NK`9<^ST22h_b+I% z4^w(-2_L$azTaG2=M4c)bX{fLk#FLbYauUp8qLXDmyH^rxFROi?Fu6I?PHmaw+5$_ z>~efjOKFX788?kH^Do|}#~I1`swy)4Pj%J3XJOQ=b9K3>x7)RAOftRN&fT#FPk_)b zw0ZVOa3ZdT5FR{s#kgZz;1={$G&u?F-Do=PCzqLQ$Ds} z3=36-N4Ui5cS>6MLGFw;O2*d^@!2zd*_iBUGfAUKv;ViSZIGE|#y4#^#yhUcoT(+> zRXVyd zkQRS5Ut4r_e+$6 zUh??W?`_v-Onjx$TRUG)tI~{BbQK(sCbc4W2Cc9I zG6U}KvR=qzc~;$Z0lurr&~%vM(5KvQOquQeEpwo2(4Foj{Bn$puoB?R>?w$oI7;&`e2AK63mg@%pHPb7yap zws0PLAA>8^2O&z&xb8okFPl%d5KQG~%74W%1E?fG;$&YM!+nNnpgFSo`K}@A6N4b^ zH5WgRQoY|$!j1@Kmg;wBtp7W4_4C#NbTwca5+@pVkuQAMT)Z9Md1#_vQ%4dvc{o`1 zpBwuTz1g%J_&|hdm1biFVus{9Q?ZP1K93Ot!{4irKSv3(;aHQ~yMO*X9W5Z^DHT=M zXm!MYr9Er@nM^mwP8zLT58BsapqZiJt#zugF=_fPh4O_(){{WS#e?fl6gk?oT(|M2 zr;|M7IKTX3Rs}3=r_wiW+QvF#8$86%Udy#h2J|q}QK{39oF29YHnquG?dg*SzjYz* z%qKmkOlT(C;)|%(#;0A8BBLq&KSu24-Res(Je!Jzd&OX0%p1F*e7b9^fMU!*^r?!_ zJQZDpy*$mj@c{8}OHM><-T|q*@*JKPR9@BfADa@1%xqlvpN`9P5VENn)mX*L(gQ?L zKNnY~Vz$@Hw+_4}8C9HgbdLWLrD-#L;u=jneV)OC*ZJ;~`cJd0ppN%c560>bl=2z= zQl*B0ZBtm8>lb6rdK)Hr_(?ID#q5WREh#avTzW$c1}p`^J6f6&rZ_Ykpavh3NPTEO zTtd;y`jXy|j-iF6AuuPJ`zfsju}&hHGg^F{jYo_sp;J6(j(F@`nZ{aVc_uP>P}ecO za^7I+dAwizG5Onw5T}!x|VA7d_+UDnRi}M zh#HMkgQGqV0{oixuv@vT>ebs8{CW*B&?SN*c)BgQ1pn`A%)QBI%?7)$lXrRdIRhbo z|7g>@(NQmL9jL}~d|NxtJ%MSsRuWLAU4;bLLBM~_TlSidsT`WZ5wS?mxPqcQb;R`# z)BqZ~mj|U8MOa)X%1plq!t+hEh3|7MToFh|^{GkiD#y>Se+%oRilB*J`?{99hyNl8 zI9E2)H(QtkF<*PtwpyZHR4TqrqG5d2WP#3*mhfGcE(C=VBR6;NprTI4+u;cHWMLht zrr4wY^1gqC;XY=jqF*VWGF?OL`br6qwRzrDGH)g0+@25zA2ZXWo1PeUFs;m zeI%S`N`Gj9dr<_$HTPfG!(aDfEZS;~mr#9Tolv#r)*bq0JMInwu8@vBBCrGTN+ql5 za5$E$^ta_LRM7YALYRZ8&EOMw1pF`ZfLQ$j)JvI}1@E=`;p`ElV}#sD#t)&Rn}okP zINBv=k7&3245i(Yj5udNc!^nI6w0yhYm0rc!cQKCjF@GX!X9+QlF@b%{xG6(&s%r; zf~yrb-KK;W?!0lFDR|Qy?Aml73xXNOvfX^2{w)dkTU}X)A zneqE5yq4iuu)syT^0m9V7H3M~DGgh&%RSbI+zh7y-?nC}-5UM|BJlvfVy>%uk84ZS z<8r@p9@p)@@~Es5p?X3UyHD%jOk^i+Az_uxO+c5}8|O9TW!xj+!n3DA9jxdNL^Zco z20O1P5s7Q3_g!pv=2(?agA?|T-S3?1_Vi)&kO;bbJ1#Zm7Xe10Jr*oAERhv^A+te9 zKstR1+~uSi{pc`tm!&jFB^CZHnK}L6^{Ay3VDK*Tcn__7Z?c3GcHbcekJqXT2SZ&d z(9XeOgVcJB0gbW^1X;gs>>SjI0xVL#-TQZ3(88h$4U*w82_CWKRxFihiE>%3Ey_v| zW?c>PaM^f9ofncwo#i}Tii7W+pg{hL>?jn^LRE=nsEx!t6YLU*8561(U&qJGi?tnZ z-DT?F-X@!(_oUPmn88h6Vs|E}`o%xPit5ZeZLu4zN$|3!3yZ+tw!)kdKQ6_&t;0Cp zaucNeGP0>gBPz$hrK|AV?7BHUF?F0p%(u~!viX~_FlF*LZbDW9KH#7{;>!#2Vdwjj z`$fXycYd1v7#Z4UYqmdrV96>UQZKm1@bCIJb5sP-p#GDcg?O<0X?QP_+*a0>mT9vL zk>dWi@k{F2L4V}jhXIbjN?&e9&z<5utqWG(k2#Dshkw_|SsUHuE?5?iTT~p4y1vsy zh_*6)_&rYQ9NVfgzRO7E@Z}86-Iz68w<9Yy34fa*hrco-%!oC#gl5WRA^Klc#LI6h zjSC@a5R_5@80UnXU)Q9>f%+-KKSV-O2*Qy|@S{G8@>ljx|IDn>Sg-G?Pl}AwO`*=l zY=UzI3_)f=SG_^d?MK-{l6aNZ$5Dw1ClwZq?~$jl^Sq2 zWv7occQx5x`Bz}sbIs%U%JjHs#Mh`VIgvm`W9LNSwnBRIGfU(&oR0~dZ@@*;`Go7h z>f!FR3<6NaYc)rcUK}8SnUB3V@A#XyKbLiSUJHIyS6a{p+T+%pgb*wkhCA7@sbvZS z_Efi}{6b!VXZ62p0qPy9O$x(AQY@uh2Mb{!807fpsji5Pb~FfFc@ECZ!7`_ zhE{p;U*U9)8iA{E^`Li&#Pt$y3-X%l&=yR&FLTuNlAKm_OC#u(?LB&=GPBurQ zKq)_(@PY30aMVP5*%Me@Js-k!fk{H(klq~^hZ6_ks#C$ka5H##VF^r2;$}beVImnc z=vTNqN#NTw`4)KIw%>TVqw>Y1qWIK>{7-Nb8jw>c@`(6H{>j3^WgY6gc|b)TQIp_E zbDC1j{tZ0^1i^WRYC6(eQs1vM1hAO6=kk!1z}7u!vmO)de$$`4SGl?93q03<)^bqS z+fQBuf?@);L3YFSubuow{O5Ea<> zGwTHUq0%hpoQ5WsOeKSkO)UW|`Mk-2A!hO;&5zRyH!TJF`nf zFi1J151X*;HxAfd1a>BGW*HtFFC()eqbZKbUuih6JK}As>GZ!^d&{7>qHlYUgy8Ot zL$KiPmY~7i-3jh)3GNVrTL|v1jRbAnf)li{;O;V)-<$X5!@T-eP1W2_RNcOZKBv## zcb~P_UfV7opoP7qze4}k92j&KuHWVske*KyaL5|Ma=x8DZyiE>ZfEyd&g^;#8x_mR zIv&qV9h5gqgPSl|&#EXHHs?jqWy6STH!$H5)pm;Rr?noSZ&`{NTPp5*(?5^Ve_R@~ zR4`F6+eW}nvRrM!H1)Rc#5=Y@vx}~9jI1(00{`Ul#Z1`6438PYHj*XER(Jd?$$BiG1-x6}BVJR9+ z4ur{q7NV-B4mLtGq%8_Zy$_j*^7uS9ozf7|;3v)cB3Cw^`2)_`#5Aj@mM>Tts=juJ zlY1TFFgT`-9}6F2So!f1s!|fIrPHs(k*L&Mk;Lv>6^Q)G2Xc|Df*QnPRsNX7q|H+- zx^b>z#7z#p^u)ZW=UDZ7(@u^`CW*L^)n8aqP-`Cu{@KQNzbH~m0XTwMTJT#K-%>o= z#-x$-88I$lt&fOn+_(^7oPv36uFi$9{*O%3xcj>9>kGms%E^AgWnwk$kZX?=_c`w~*k$f&k(R{7At z>sCVo4e|WUV-G1P|5c+rXK{fa%b_P}-E+ir_j3cIm)ufAUnJd^fuanh)c;o^Ax%f{ z*`C8U&&obGW1P$9kdx~+6e!t>!5*;{84e}OWK*m!d&0R3oL=lVdgcD=eNf(VifQ~& zeB}dMB^5GxUVSd@em;cIiYTt|;z&Xo@No?UIcLa4-&k8|OyOT@6?D35V>S zn%wlK|NCwE7Q;_Lc@>%242c{%_()PeB8KroA{GB*Q`{>&qbm3f2*~@9lk@$wAaa(< zzr?_=_K$wRH+SCKg(o2X?(M$PTj$q6P(tLzTlEuB@rERJ6+IMTWnT7-qpQ|hjC2VA zN8hDTF$iyNxJ^uj*!dE4Tv0sZNtdG77Q0JqpdimphhpAV`T&-@q)Q30}?e>C*TOC)gMkTJiFmlmqX(>FP@U{qab<|FB0M7f{ z;b{QX2cfxaVk*!z1%n~Cqox!rW^Bp4&u@I)l;~qZr4I+EYR|XUTItQH#38Fc-AO1} zjI%F!A7LQqfpIAx?JLDT24#ge&LH;J#+I#{9}|(rGhJ_H|L_rP(J#6GT_3-_)fx@W zLDDV6X4bH)c%U}E+xW{RHH#+hAJU?!Naxqu-Qg&SO8U)^mGcbo1b2Q>a^n-}0}7tc z4M63Vi)GtsK`B+C*-G|#cEr!Y(r!pD30#$QdbWb$J21BDd| zR@ide<1LchrW+%D(HKGF*LRJ|c$5wPV(&3kU5z`?BY3Bge6IJB+QNCujXwCpA;b0u zJLKp-r1mng)lNx)nw}vBMOrhBkexq0ZNSUKS?8O}OR%aVWOmXut78QtXgpj09lWeF zQ-)#qwXyKOW8t_+=ab+7jlu>)9%5zsr|LjkVr4El4Gm-yu;}*LDIQ5==G#ZbgU@1* zLjCb^7KCo7L9ECp@ZTB~XMS;uIqQo_g~5Hx|4(CPJW2B8yxwF8Os=M_X+wtvSX#BEIEab-vVb#ZUQUm?;@2a7& zzNB{SvF0CBv9l8Em|9OAH0Zm`lI@W*Jt0`iCD^1i^_td&SW#w--h`5(N9-bUO4cFi zw;|f2qUl3oTyVuU>nqjw%Gw3u)!~AH2k-f1HuhvHlOj{f6o~PHKNXhA=GCcEa?Kbp zY0uh2*&UH&j@HmOxJ|wev>V$2l;RNJnn%{;lu=*yDm%!+H#;DQrH#^pm zV#Ys*8^HSKv$3bhfC=J~s%tlYqAaV78$?VV{ETC-JMv6lHF}-R67WHjjYvHVBl$_1 zi`-ySe=k{JiDWsf*BchTV=hv+NQzL?d47up*F4VjIk@+8q|3|5(g^bH=@lL>YFBPo z!Tyk3VB~}0+F&0qWax*Z0yWgsX`yT3HpJ5nn@kzPqylgdPlm`?Vh>^wv& z$JbHq(k!7J7P%MTmtqyUFdCm>6XWd02i^!m^1M z!PQt=9Ry>Bt1P6l-t@4rJkHtfq-Bb2s}dJ34P#C)JvUX8d@>`mh{6!XvNFb+lsDa? zK4nW%8ai;ALDSe3@H))Z^y-=nOrtG1kzXHb;oOY}gc)el>lD1w*Nv}!;jA4X4~P%2 zgdqeBh;|Z6#~&+@C~^^JHh;L}b%0-Yn_zEwyTwG6k$V4Z#&`d3{;=$@pQ5t2K{-~L z#M4Ax7OtLL3A%o2{@qj|WWAtlv?nY%okX@JykOri$IpjUqclG8b?(wY0ZNHmXwuZa zNzsZ<{HK&~{IM9uXP+`z$hpb56FRxd2YLr4M%KZP_zOD-=wsfOYHF z&XJ1C)OW>JO6464`2b{b?fDs^jRzSVsvV(TTbxmCSKd0W4UTF2s-2D)Y_agQ-tVoY zX~APLY4>b$mi<)u2*hhSj*M?We)&M$J>O>^^^oN=C~|n`JUg2cXRjlX zqGaq`WJrrobBwAA#))Ox!P=n$x!5_m!<>L>^k&}Xg6z)lTh!9h0txLQ{X0%ZXto8d zyV$Ragn5a_`W4uFaOg{rqQJ5QrX9FNdHCOW->{$((OHCRX z-{~?82o(eLf+}6W0IS1(V1a2;Pybj{7;;8Aa~OFh0nxI)*v^vtC=&3`ek8QIkfz5) z+u3|BNWz6E^k`sw-A3rfuz65;9C}I=JyG6YM#oD|x8w}DZ9N436pa>~+@{C)QD=|VF|LeD8Q#mq zA;dFLm>pfi9%-EBp#@6#jr2-j69beFOb$IeVB>bSB4L&6WUL~7gFd~K) zJ*yU<@&~%86eid5ZzFI9;4+Tw@I?k7qc=ne&E3cPNoXeu)_o10r8K2$pCkpW}MLk6XwZ^Oh#NH^e z4E{PtZmQoc;`Fr##j_apjc>=Z4}2e2W2}TBdAy~uv`UMJx8LXWi2E|)JBoNm+!bda zmms4E>S_LfEFU$osrg5>$#N*Wh*`tFvgevqfHr;AB<#!^ICuh{6fyqK><^r)@of33 zClu191wND6vnhznUt4)HyA^B?9n*BayphG$=!?2&wt@nVpBsubX(B@njLg%1L)N|y z_{&f!cFyj1X`eF$qHg~(H3_l=g4<*K#H8ZQB;FZE?8KFxk&F&PkVA^(Eru?jpQrZF z`Ff}PdTh}*mC-==t0fAElthV}HO^0YTmuN5O4}Q%irU)}Q`r9X3ZJx$M#hRJB0f9~ z_|H;@#5==Xy(a8xPIPL?3-P1gxY`}Iu1)<; zY-6dYRj{mgC0X%-w@H(T7|0`%U)T)K|G@U%7*4NgSmsxu^IZ3wUFd2UDX64-RV1=a z^QbY7Mk1dt`;w8w9(rbrGq&Q{Hu=!2W%Qt;Lj&m?Snrle=wU<9qpyKM`uIhJn5i~K zhAn%!&oqyZ5A~w|If{0(#KV+pZ^Bn1ermm7+PQUkk&TaH>v0#=CkCBPBbM-y!yinS zX5S>r_A@t{EWm}X>r|oG_a%ymCWMs};>@75k&=n`7S;k$MJ}D z{fjuRNB6U5@l#ladUBjZ&vJaH%1sgH%vjxXZX$5N;_-`4t;^|%+#i#BSM<<>^523# zDGkyXf(^`}*IRR1IqzB5R{TX>BEEVgrUq&(E-d;bHY_GzXlF`#1h+W!<&^bi6xUfb ze>IA|9^1gH%QYyeB5U%4its3r94Q?*hzgf~&NLwX(#%*anTZDeM8jJhC+zF?S7g=c zpAn{3UvPhIP5}b>&Qyb^PJ0canLfkCZUN6Fw%}sIwUr@@!cHiEatJuUaXOEV`Hw(YM4Q@Fn)#>>n!+W9OUEkjdMS-xsodXkx*#~UW%p7=zD z)D$f#`E;x&p39Q(JT^Q=)b<|RMEPUi9~ejmt9M2e@-F{r#plM)Lh5p#X09FG)pO^Z z)ym}s`Yt#2hJsLXQhC4v(+*lyrOTrYfjFP|N34bS0}(k4Ac>}f%q4{iwkLOUqvn@X zLM`3|hdIKrAk$W}W6laAkz5T{MH=qSQ5+w5pB?+osU!p}b`c+eunM$ruDu~2_YN*Cl!4E|D2$Q8hI!4x@~n|#w36PX;VM%7`|_6=~dSJZZoL33usGx%d40Z^N)1&V#+VJT`p zBo(Y4U-&uXxFLIGAcSjhvF7C=iQbuLDmx*Vi9wzoH%5ycmCha z!;q(3T2N`@R-Q2C+51K@EGY&nqaCOJ zzURq0@jOa_=FrJFAHt&2tmQrU5Y9pv*!J?QFj{?ZnWGumvib~|ZoDih>&DwQ>fO+q3`{u{G`bsmD^mOCq}Wi?o|w@{(?7&wKiR zLXx_5=@+c5uXnS`zA7}D{acm>@U)a6?Q_yD_VxjZKdK%_a{{ra4OIQeK+G7!<1e;V zO5)b!0&t@8(gE=!x^J+P?2Bf`E4{qYApdOVdsn8? zAb%bARElOJZQG@~kJ8ysGao6ky-Y$%`h@bO{NZa`!Ur2cqv}_drn`W%5O=mCbyYd| z$Ad$BT$@0w_#NWi+f@X+NeD)Gq?aZ2x-H=8k&10v?+Eg=wXTEqYj)p$4i{?oQhef;+knlSGUALXIco4OYES|Flz!={;4`t8F_1TnI&d36x&x%N#%(lV`YK!zkMujrXb)1ly5oe&)XgsMx2t<}5X7SF4h z95*A;=PdB$7qHBy0^H8QpQcO>(xTSZ)=#lQhh;-2l}k~oQZ7k&%^sqAo#sAe@?c`W zCx1&hKG}RSxE4I^UF?H@S65+E-{{-??GKX06t9cTFrb352@ozrw95W{j{?9>d24M& z0i$8CEoJ5W=xwe5K+`U~)yOqodvhZr+L<}3O4%3hE`thZoI0vIWp^~_{IYx{mtvNM znF=jJhikZEw6w}`OEW;>x8>sO_GUyJ(vh01O2$2OC4j7ehr>TckjotwP7lA}@@9MC zJzXmSq|B!?kIY1qjM=9 zAy@j(2M31!J~rfFcyPJW`KP5kup#>JKvH)lkWwNy0&si-{7*eza}6O%mL5@W#NvG_ zq((i&TM@YfzDL~w+TIf7a20|3K!zsHt$uzE`F*-vb8M}>Dg%B z6lGadba4f9sOM+dUVBM|;>>=wqLEVFN??^OX0t%?K4C)6HQ^<@XK2Z3)$T&+n79>T zcA^BZ#*EOY?wdF3e0$Os$vqoX$fSaU&L^@%7LuHK<^0WQUxDM|ZOONBfLT8j%OIv7 z(0lZTrPa}FB;Wbdn&+z{SctL>fWhWYZ)r@64TdB9cOs+hQSlOGi|dH4G2pWxKp2@ zTnD;_$b6FXqTP!JYA9?0g+xpGM>ooqt2Lx)p?{tfI&tuY%T8Po`DW zx1O!!B2qWCBjl$3QP8Vcs2zb|#Oj{WIIb6L8(Ht)!PutOw#0mTouYRc5gS~PVVI)@ z|G#ny-Yss}S${f{19ofx+?GVZ&2q<_)zs|A*>pkMt3JQKCSEu>l=M<3kF9|=fUCKh?G?ZClbjl_Z_$XVBLccV^O#eLphq;<#@1;>7VJDq23Uj^L}j~oe)sPyU*i#KXEKW?Q7`UIkAPWw!GHkWVyqtC%OkHWx*kjR z>1*1!I+sc)7qKddFTMCbkxL7F{Q(Na8zQt8-*%Wys0CmSRRfdV3@k4&OMK|-T55`u z#}k0dfDt{wYD=jWkI!CslMT=cLMA4gdFrJ_K|%L17DUBg011z4)wmKbMMbZiVd7^e z55KL>CyoNK2wN;r$@dIoM%&|e9|P@j2O{77-hkza125IC1PWo*ZU6+Tp5m;}&%%V< z(7X0c&B}Z(VwaO&1oh2I0uL8=<(vKPDVe~Jpj$c*)=m(P(P9vfj6Rez0#Hp?;wbD7 z0#_Kcu~jnyQJ5mdYTwfd=0raFv&U3a&~d59d8fV?h8RkfmILLxf_o%QC}g6XN+zj_ zEUy+}yMBTp9$vO3cz>}iMOx)kiPLDey^So1u)@1ZbIJXMR2nfCdJ^bh5CSWxxNc+! zP=`-|0`XL&af45Trq^7{lvPMwN0F6^$u`X}v13p8gFbyxP>|QCS zIA8aY;m+oyyI67~dsQdCZfj*iKtj&Z2uKw5HBSFC-uj$;BC;ZvyBRu@8mi*E@=;wh zcy3A;eO7X>s5z3)KuomP()9buq(CC3NV%^TpitTN2J_S(-{;^{*3LLl@wwr&>!GCn zvs4-UGrH~af%g~5_XnMB1OqZ129N(J33v@pdX%2~Lrx`J83VZS(yr}i z0EFk4sQWubEtfKp?}zJa*i?Vikf%xns2fbx#e<)3!Tx}E zVIvG`vVRqIk_21xe?goA4a9lWJ{on=O~1UG_aymL^EYeWJPV7|n`(-qTuee-89 z%G81nU725vD^c$LxAYZFho)N^V9!P-Ni%psJ3jC4Q&4;a)S5KzX+|)SfjHd`Az6X+ zp{7+i&m%wDC^q$dWvRLr;~@*OcyS1OWAmjc($qp#w8j|*a#5Y^MvY{iSp~@ni&SU9 z&D-bge(C@ZI!@T#Y0gjEwc!S;Ae1Qysg=X$ilc?n-r7K3*$xA!M5jWjCuZFh>3Lnb zipJ;t%HdcqF|Neb$YZF%Rg*m6a4Eu|2waL=*?=XyeYRbN{~4kv58CYkQE0h}aU}yQ z;6vAzhI@-q^>B{#&7*os;JXsau#v*xIQ38H(|>aTwl5biv|#RUlHy<}Gh|OBZeHyB zA(N@3v~Cw-_ORac^l{ufW#K(Zm8H&bCggnSzdr)07;76|46Vi8L$o0J2dW=F#RHLk zNvc|Mz)nJ1#?w&yvMg2TA438ZD>A6qYm6qc%xSzt3HT!d6Tj8aYmD1=FW{S7XtER$y&|W^K%M~#*qBwl(quooh@Kxk4Z5#{Y*x$y-&pktc3~N+R8gmpH#wVWv_{)8 zAjZ`gFl4L+>wUMy>BoIax*t3S$m$5Vi06da*x>RwxK#V`y1B6lWMBS7%uCJ-*4Wt< zimyjLzR%04az6LIYyeILyu52c9oJH{G39h+l?}C+3P%G627Fn_#9gxHYc3#XS&Kmh z4&VN}f?aKKlNX<~F_O2DmAgNW{&*=Iy?T6D&w zT4OK$Cjd?Zlb;-}>Aw2=Z0q^y@u)}*m(^PfDzPdVWfohaC(?f?^f{|Dh}~>k)1I=u z8*Ltph^{Il+!0a|sMz1tu6^)Xq`PbLL#5W(_M2r?-An`dHVvQBkV#!rrDWe1>giM7gffOyEjFig#ZW(6b&okNk_XP-&h>pgSy_1v-vV1AAeH|J>lEH;;fmhfVK!4RfeS0~ zDw=4`1>?wTHDq%OW-p>}43)#X>N8A?XUp2W3yN*OZ1&oRzKtR^>BH#CzN?4FhFw6J zKT}^4I4^q>oQ`#)Xr;K{`sU;TbX+nP;9w(iO)V+!NsyxL70XE+{UQejfH-0PD07yc=#+~kvM;Qb9EWW zJB4b_O>_mq!$e1m+@rOhjX~sNdQweL0VXoLbi}8jmd<{h=`F zZ3>92`G2~9V&%2#-dW`cG=ck#l}p zy760iY6VhBKLD{KO-M~t8r*Y^iGV?!`peFp6HIugO-e(;5KGHVi3($;|6ZnB6IphJ z)zjt5DnuO*drH<~9VUI?Gos^6d9iFEf8sC^m0suBO0T(@-pk#WI8rU^WhslT1qz_Z zfs)0fhmYXJU7QC7fZ5NMhy%<|ti2&0*Zd&>&PFxr#*yXyTfP{PE?kz8#TWeF;9L&! ze}QwQvHAFP?6tdLvY>oZ_Eg;uJZ_ZS-NU=-Gz(vch55Izlx!+|!39((-n5S<4#WZ2 z*(Xh%m}9F8Q^(QsNsHbR0bD2s3atZ?8L1t29<%{3Fc{%atey&0QoF_O?u0~!X+s9YN0$kwIe%!DRRo` zIh)ES2A(b%ofsY=B{i4d`LAL#V(V)LWWyI~PHG3{}z<|RK< ze>LfT=jI5)8pMqPfx78Pn<8cV~I7Z_7EsU~GSGBJXOQ zji=ogh^l9i>MMs^WhWT6d6|JIf@D% zs~v0q+OV8_(aIy&4tw!@w15pU6Vwr33z+N-?m@`i<8v0<=!oB6%+i2V)3qU@Jly#f z$xDg$1fz*Q=(}!!w*%Fg*ex{Cvpe2Q4CkrhWdD*+?J$t9NN12kveF`DW!zA1OjlH) zUFy&H(3GVY|JQ-On+Q)%-b5t5kF!>(Hx0UAF4dQk&;fz}nEG)1OQRvC1Lqe%uxAU^ z#6Z>RB9Ki@xr}x;hqx^FgjUIom3`?CBpG4Cv?@T#D}vGZ>B`S;B`oL3^?-)~W5sA9 zLH*`&YmHn}`%;NCE?3@ZT@Wz8xX+fR`fpAu8;lVu(iv}S1QH{WVDPpq%oDY)N0td6 z3clMc4sHtb{Fd^#mqITp;P?$AlaEuX3(i2Z2YDTwYwKW|f|E|po;1D#G69Ru;RF@Vw1&wcg9#;?AsFSJsL&B@ z6`#nX{{`2R|6nZNl08qm;N^WUf3N71JR0Kb<>3aBC^$dNVmZv<%}i9Y2YRqebd2h-U6>6Dz1jcHsV}JySv@@iP%h=x6_tdRjp0w ze~?(ab|637lI4*CGTSCU09pMK8AC9CWBPfuw}h6%Zp*R2{_|~yC4YumrZ)}%BJYma zTRu|84<;++-y=9ZdOE6+<9c7W#>65U*gk2STA`A%e=yk!d;+i5zC)S9QC-?rTPFXK_EAB>K&$Q z1}z^ut_`0@OCn|pIhDLmT7zo&JET+rZ(Vvc#;1Ts@-+dn`#CU{ScKHf(xK@(3_%$( zqZXhHpeO5e9M}+7Sh}A5lBaRs8!}H;S~^BHji-^&T*6|Aa>C0LbXvk8e# zz)apW4XrrpR8zel7X-$mWixGwqF1Kbl;EM{A3+?}`)V}HUTOBF=Vb;;Y(rMFvD6}$A6kIwY-%I9xh2_ z@mQ)Z{@KYIPz;P~ROrs6aI2NFsd~A!Pz}Kr`QcztI1h-hZE>W1AU~r!JbKuS*!Spm zH4p&r&8qcpguM9e6ZhBtO`r?G)cVjGFMExi99kIfs?gvI8t5ET8;b}L9q!QN&qAykh{vD?@n~RuP11ehFhkNQMUdX z=oX%nytb6uWN5I@pB7yV9f8XYD0=1iT|nw57t0&t=1Op_&?-}frM8Nd>iz24qeC6)qQi~>xU&;p*JrCAyErk`GS z_EPR1A_deK19Qzsf*Q1U48|u5ZtkUR{&N5Mu)_uTmWAc3X}*=&#f)vpxR9p`$^1RF zftk`DfllFhcejlb$G2PXLX;tTdntiG;X{;XPk42u&kzYUfp#17B?b+{zr!rlMW03u zlru!{9N%jReFf~DIo|-!x3VY2@vo?;*DexSv{%NmEEx@@Ir;N+;rkH2_*I{T^>(}v z^A73tuL`Npp_YI|0njfdD3MD49bBn)+=s(ajglijVHm9Pm%oPt6po8U%6jFK+=_({ z&&`v$k7QcP@5WC-mH9}N?JL7+(k$$qtU)9=C&tRE@SS) zir0GXMYEF7{HGNf#=qG=9WJXk;dq_5s*pj<=@rfq?@nFp>`#nksz>kPaF3d|95M+Un$e8oddCofRICaqu`Jq0Z zQ_v3m&n&-THqhyYDEhS%(#EIC9*rq>4pGBDn6fjZFD4$^lg zqI)dew+S6}3|`m)NhvJ2XSH9kmfU{?%9DYe_^Q!JDKx5tkVM-;09iOqjst*JD|2bZ zzh^`iT|VeqA4>+1SPS^A(Bi&fb9(Nh2V(S=y&y)IOQ)MQ?;Y%X&*i6-k8(ff9+JPSpV{&JfJlK0x-+p~2Tn5>UzLVm>vyA|eHZ7MdKyYZQGF?|&lN2%=3>8`&3s znt=0xzvH z@Aeo<7`sG;Ph18WRms2a`)5pFCG`-Ot_YKZk9)9Ia8kSbz*x}>_u`2D-__q!0W4cY z%KuuKIR^dhCOwTXbd|*x8A@Iy$ngn4HQ9x@&xf-46v%?DlY>s`k!lW|Ugj-OiXHCA z<1G*un|>r@S-`wIdM1%}Qv$dtO~=S@fK>y|`Iv9bwSm5UT{q0fxs4f$ z?Ey)?e`K)Pf9EB=(ojo*j!g;wSqPWi8*0a;f`p{v{9j@wy;2Lm9YHhvp~pMQZCrNb zZCAMf;QK9Kf#j74YL!_9^A0~CcHE&C4+O-1SgGuwpafEK%pVWrKkj|vRxZ%1f-nKh z>BsYY*MiaCs4O&OaF?K`>-uD70UNM&IR9g5u?@&t>0af-X?p5_Qji~5Ew4q}WV!ob z!2|PKm%0q8`h@bq7x^oX7@D=jq=N~Jy^_kWG7u4(HV07{;0YJ@w+|+-%8gf~pD*wx^m=+}j(xqEl zWm`ustYmc_!O@M6toBb)NH>g7WlbjZS>g9p?(52?j{?{g<;F*Ib6HE90qtGRL}91K z471c_sl7Mh6L@`;lng`u`qXsdjD)g)mlXX^lQ^%$IZJ}(zo^ZB^(TP0BplrH53M;Y zOiTr1W3G8(4O|0Z7<5{vl8u|T*$-JYZG0vg3o6OT5MVF-lx~lH9s+!yLpzRGgb^Uy z3H0VGt#W1wL%oFV$v`aZ{Hq8SHiB?8;mS4g2GBcvOVi#KrUH{=0jdvyO>Kq>AMvFa z`;Q{BDG*<(awKQ|SCdDy|ExFg4S#)o{T%Rz7}x(ad4&I;CXfGd&96@o{ZEre*jG36 z`h@j=-g~c){%?aRt7~X9qQ8y{e1i8sJL>;1PJF#(F{k~o{C!;R(4h465EHoPs4QCh z{t^e3jQf>ax@jc0rSySO8yc^`G zE6=0_TgujZIqcZM$7Xb|gN;o8kuBpn>~5_u^*?$H=YsgRm1445)9~=ElKSU!0I(z# zBs%18cYpMaDT=k}i~E~s@)sQcVpgcJn$#scItuxC=E(XPCy46{OZ~iVjgk4E;htC_ zE(`cz0$lx5FXsX9@x)OHA!^QZ%E^fpnRR{raGjU+G-^?0g>^$q&jkPkTFmMQrD}eB z{Cjt(&z*aR1Six=5j{MzIxe$wP<@_b^8Tb+x38(c87HGQ4Q^4y&$xYuM=;)k^h-Kk z2q=T4lU8WT5*Q*G7$OT8;zlbcmf6@@O6E^jDy`XeZ-W~;T40*O0e!xmLXEKgPhXdPaLPx-sOk2yh;-8Kcv^La?444EMujs`-U9}5SkM;Y>Qh& zVYHbSh? zRuypQ{}uQym)BX8VGFhPFZXUv*hEoe!PHp;Bjee| z(Xu(U2T(iUoQ3nq=|9RB(3AI6bUPq_tOj zTM$~Pr4L;Qw@d)DzHeshi?zW63%Qj1))c;z@})#3>5`h5yc5!wc%kk=nfmn0OPg~) zZ*56nR*0P0;{oNyMQR~Q;)Qs?8Uk?BEWbIfz#BS*dX$p=q|bgy9Z1ZJd^XP5IJP1W z5$p{37ZU~~pkI;kHl@OznsF%^|8U)p6Vv!OrR4&P!i5=9#zk+KwIqbh)XXLfwQ;Qo zjANs3{xdK5^$(ld^UU&D+%X=V&qsL}-!~V+`OC6FXuG+%mmoAn22!os?EDan-440# z(|#9QFxGE?}oLU z!fN_d!M5rvklmgeqjxPyD~6`*{`|aE^4npudC<9^z{1HWXlY`Zj^y>(dq$Bs0;~4^ zhIz)8hr0(tV)uVXnaoNJ>92-wkjBY8S3Hs03H19Q$H%cP8di02KsD4s3NK@QY}@<3 z%+JK+f6rW}Ms7LOan`x4H@UvFToEx*FSqb~kAq4in)J!DxW0ocDV(ljI4XK{ee$oj zsc3X0r&)EA!2&0A#7I)AA6w0Gd(zu%1|vCR57(mY@F>dlf}beWr%9Q;7@fMaBIrn@ zE!SXB0<4YGpWWj2T+&YO zs_3DsP>m3v6qS#VTmFi_rZ)1;{3O5s(X>wM!Xyu;=KKzFmyqz8PGL=lD(e5nncS4H zEXMS^!)GJqx@>%N$_Ix*rG?nY8R7R`EfzN{%z$yEXLEsDi+ur+3@^$ zgN|}iNPs0OK**__l{pk9w$|Z%doIc8*Ah8;DIY~@+-$cME01HQmfvbD`aolmE_CAq z=P4|jJ%eBC_@tU?u-b{od6(|G8>HcQzHiM5OZLb(a&k0{>-f-^oZ+h@H#ZGJQ<_+h4e@5mB|=MgWVbfN*Vy$}aEKs= zJVZO*Y-A3PLqC}Ge{0rG(D~MjIdb52o7h?5egIKZNvaVVZ9P1I-)|2Ow*AtBHjI~&4bL18J@nnkrKk-QKe|PNsKSn11 zzlJ&g9|qg>ORt{xoHnfse5^;XOXCgh{sO0UmdP)~WkVz^J!U*fMNI#k&de}hG<9=q zfg1#I^_4=3E}k%68jiAkDJOb(O0F_nx+T0M6^QM;a3MO-2*ET2bp0tM>WwG-QxnCD zfdxmuF7lZYX|CV8i|pfltmX5iB9_hE?+;|k5N&Ubun#1c8ZG2`QgJvjw%p9(AC*D- zBQRJf8EZOJCdrg;H&Eh^|9_tZr%?HZ^wWdcxzjxsi5HbuBv^?_6jZ;ZE5k4h>et0^ zr_lNw**br6aLj{{%!l40R=Ofm_OV{f3j_gZgQ`0^W1Rx(%fnGf(b#r=4Dx^?-yhg7 z7XL=+21!J+Zx3fH=o?h=NG7sco6T--4e)nUoMx~F(sbg_>})_k?9G>c#9robCy0|f zQdiHwt3-}w2xdpt-lG`tUTEC2u$={t(7Eg-(xo*+kd!7UIIjZc3N1OzO+a!YE#cHK zS$@x#@`iC~z4tl>FvQ;EtUIMNceprGkEf9_&M;w|fvvIMl26X{eMI0a6k}8j()fp8AnHBAoqWU;Y>%I^6QZ^8d(@G5i8I5E3~WI60az zua%%CKT)CZ)JEnBZ*8r2nE44ozzXBad@<|j;WQ>zK`|u@sAG5^;v?soe z#a+uroR)4(-nN{9T*q@m*U5L(fKFsqkB0+3KSQ_)O-6MdwK|{I$u@78pq<|QsA-(> z8Y3^mu-*Ixg#`MREOY?pzvpqCMAQEix%?Q7>f#E|TmVK|1ZA3oT`{}2sXC>`{+}EC zf0Bt;(&={QEMAeR%xCR2ZdiizPss%LKN7BQ!N*<2lowISJVjl6!0@{lV)|HLQ0hw_ zhaT!{*8laJLliCU$|MgT*V&JqDt0=#ZkqZT*S1@GSVoQ7B2GGeLTS{lDrEGeilC{v zIARU@uP3K=eI!Ord@NBPitMjx8>Q5EmggIAk_9?b&s#W$H|u+hM$p@$u#N(3{S zg1?3taZV@=O+tK~7Q+XF!={0Ipb7kR#1KfGCmcRN`xih7uLS8;k7JqjZV<3AFwCv^?{rVB-1(UIdNKcx{@FZo_3tFY4Sc`v7tr z-ao>g!qMv|?!T>(Wfj!sk=4&q&*=ugk&vy399)*$(3UVX@h+l0KA#-Id|3yb%{FHX zDH>y!v!0I{bdq=Rr>$A8h(m(}10V8FPUv0RXhgv72AL45oJWVPNz4}qgWnk$+t=B8 zsMoY?;nI9o4v$+&X7oy>U86}`XlbE$`^8mKcO&xz{QSIQM}mL;3Xxmc2@Py_d0-;_ z&{n(A-l{CDMaJ@Wx3IbkPu}hLiuHVVwJTYj-yl%$XS1dve>YsA75M2pM!c%@Zx@dE~|B=*aHc zjx(V}@Y{t4;VYY^FM`#0+^I!z_%cpCu~jJSY)E@3%T-3jnCVjQv2p*7LP`Upow0eU zm-gQ)PmYCh$iPtTp%>yT_n#HdZ;k_Tb)Es=`yP30-=EK^^5G|HrPwRDEbA$G`lcyQ zY6pfY#HEo{M1q&EIhtJ@g}T*=oKil=DAlVH7uK5dU9Vs4)DomVEsog<& z1U)0i9ILDshReiILOS+6#P)tR4}^n1JE0q6&4NV2eYtVn zo{{!T8&<({*s0%WvL~xj>FvC>xo1UlHQxEK_S71iH%^_Kbsv%WCRkYZ zsMkc~;O<*u;-_DVaK6jnJ?^Bw75DtcRMvVUtoYoW)KZ~Nr%a z@jJ!jID-#Suq3y}^8Wjy0+9Ew7fYzw|2!H2T(4#eTz!R3Os}^$fvxy@- Date: Fri, 22 Nov 2024 15:07:33 +0100 Subject: [PATCH 23/73] Update rabi.rst --- doc/source/protocols/rabi/rabi.rst | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/doc/source/protocols/rabi/rabi.rst b/doc/source/protocols/rabi/rabi.rst index db1bcecf8..e883aee85 100644 --- a/doc/source/protocols/rabi/rabi.rst +++ b/doc/source/protocols/rabi/rabi.rst @@ -108,7 +108,7 @@ It follows an example runcard and plot for the signal exepriment In all the previous examples we run Rabi experiments for calibrating the amplitude (duration) of the drive pulse to excite the qubit from the ground state up to state :math:`\ket{1}`. -All the prievious example runcard can be modified to calibrate the amplitude (duration) of the drive pulse +All these example runcards can be modified to calibrate the amplitude (duration) of the drive pulse to excite the qubit from the ground state up to state :math:`\frac{\ket{0}-i\ket{1}}{\sqrt{2}}` by simply setting the `rx90` parameter to `True`. In the following we show an example runcard @@ -119,16 +119,15 @@ In the following we show an example runcard - id: Rabi signal operation: rabi_amplitude_signal parameters: - min_amp: 0.2 - max_amp: 1. - step_amp: 0.01 + min_amp: 0.01 + max_amp: 0.16 + step_amp: 0.002 pulse_length: 40 - nshots: 3000 + nshots: 1024 relaxation_time: 50000 - RX90: False + rx90: True -.. - _Remember image and modify runcard! +.. image:: rabi_amplitude_rx90 Requirements ^^^^^^^^^^^^ From f521abcf8c8dacbda6840ab8b936e0f1518b3b33 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Fri, 22 Nov 2024 18:19:09 +0400 Subject: [PATCH 24/73] rename pi_half to rx90 --- rabi_length_signal.yaml | 15 +++++++++++++++ src/qibocal/protocols/rabi/amplitude.py | 14 +++++--------- .../protocols/rabi/amplitude_frequency.py | 6 +++--- .../rabi/amplitude_frequency_signal.py | 16 ++++++---------- .../protocols/rabi/amplitude_signal.py | 16 ++++++---------- src/qibocal/protocols/rabi/ef.py | 10 +++------- src/qibocal/protocols/rabi/length.py | 18 ++++++------------ .../protocols/rabi/length_frequency.py | 6 +++--- .../protocols/rabi/length_frequency_signal.py | 16 ++++++---------- src/qibocal/protocols/rabi/length_signal.py | 19 +++++++------------ src/qibocal/protocols/rabi/utils.py | 8 ++++---- 11 files changed, 64 insertions(+), 80 deletions(-) create mode 100644 rabi_length_signal.yaml diff --git a/rabi_length_signal.yaml b/rabi_length_signal.yaml new file mode 100644 index 000000000..04c725b46 --- /dev/null +++ b/rabi_length_signal.yaml @@ -0,0 +1,15 @@ +platform: dummy + +targets: [1] + +actions: + +- id: Rabi length + operation: rabi_length_signal + parameters: + pulse_duration_start: 20 + pulse_duration_end: 100 + pulse_duration_step: 0.2 + pulse_amplitude: 0.1 + nshots: 3000 + relaxation_time: 50000 diff --git a/src/qibocal/protocols/rabi/amplitude.py b/src/qibocal/protocols/rabi/amplitude.py index 315c9f502..eeebb5a1d 100644 --- a/src/qibocal/protocols/rabi/amplitude.py +++ b/src/qibocal/protocols/rabi/amplitude.py @@ -37,7 +37,7 @@ class RabiAmplitudeResults(RabiAmplitudeSignalResults): class RabiAmplitudeData(Data): """RabiAmplitude data acquisition.""" - pihalf_pulse: bool + rx90: bool """Pi or Pi_half calibration""" durations: dict[QubitId, float] = field(default_factory=dict) """Pulse durations provided by the user.""" @@ -66,7 +66,7 @@ def _acquisition( pulses=[qd_pulses[qubit] for qubit in targets], ) - data = RabiAmplitudeData(durations=durations, pihalf_pulse=params.rx90) + data = RabiAmplitudeData(durations=durations, rx90=params.rx90) # sweep the parameter results = platform.execute( @@ -131,7 +131,7 @@ def _fit(data: RabiAmplitudeData) -> RabiAmplitudeResults: except Exception as e: log.warning(f"Rabi fit failed for qubit {qubit} due to {e}.") return RabiAmplitudeResults( - pi_pulse_amplitudes, durations, fitted_parameters, data.pihalf_pulse, chi2 + pi_pulse_amplitudes, durations, fitted_parameters, data.rx90, chi2 ) @@ -143,12 +143,8 @@ def _plot(data: RabiAmplitudeData, target: QubitId, fit: RabiAmplitudeResults = def _update( results: RabiAmplitudeResults, platform: CalibrationPlatform, target: QubitId ): - update.drive_amplitude( - results.amplitude[target], results.pihalf_pulse, platform, target - ) - update.drive_duration( - results.length[target], results.pihalf_pulse, platform, target - ) + update.drive_amplitude(results.amplitude[target], results.rx90, platform, target) + update.drive_duration(results.length[target], results.rx90, platform, target) rabi_amplitude = Routine(_acquisition, _fit, _plot, _update) diff --git a/src/qibocal/protocols/rabi/amplitude_frequency.py b/src/qibocal/protocols/rabi/amplitude_frequency.py index ef2e13368..c2ac41fbb 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency.py @@ -57,7 +57,7 @@ class RabiAmplitudeFrequencyResults(RabiAmplitudeFrequencySignalResults): class RabiAmplitudeFreqData(RabiAmplitudeFreqSignalData): """RabiAmplitudeFreq data acquisition.""" - pihalf_pulse: bool + rx90: bool """Pi or Pi_half calibration""" data: dict[QubitId, npt.NDArray[RabiAmpFreqType]] = field(default_factory=dict) @@ -104,7 +104,7 @@ def _acquisition( pulses=[qd_pulses[qubit] for qubit in targets], ) - data = RabiAmplitudeFreqData(durations=durations, pihalf_pulse=params.rx90) + data = RabiAmplitudeFreqData(durations=durations, rx90=params.rx90) results = platform.execute( [sequence], @@ -189,7 +189,7 @@ def _fit(data: RabiAmplitudeFreqData) -> RabiAmplitudeFrequencyResults: fitted_parameters=fitted_parameters, frequency=fitted_frequencies, chi2=chi2, - pihalf_pulse=data.pihalf_pulse, + rx90=data.rx90, ) diff --git a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py index 0c418aee8..5f5851a98 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py @@ -54,7 +54,7 @@ class RabiAmplitudeFrequencySignalResults(RabiAmplitudeSignalResults): frequency: dict[QubitId, Union[float, list[float]]] """Drive frequency for each qubit.""" - pihalf_pulse: bool + rx90: bool """Pi or Pi_half calibration""" @@ -73,7 +73,7 @@ class RabiAmplitudeFrequencySignalResults(RabiAmplitudeSignalResults): class RabiAmplitudeFreqSignalData(Data): """RabiAmplitudeFreqSignal data acquisition.""" - pihalf_pulse: bool + rx90: bool """Pi or Pi_half calibration""" durations: dict[QubitId, float] = field(default_factory=dict) """Pulse durations provided by the user.""" @@ -132,7 +132,7 @@ def _acquisition( pulses=[qd_pulses[qubit] for qubit in targets], ) - data = RabiAmplitudeFreqSignalData(durations=durations, pihalf_pulse=params.rx90) + data = RabiAmplitudeFreqSignalData(durations=durations, rx90=params.rx90) results = platform.execute( [sequence], @@ -204,7 +204,7 @@ def _fit(data: RabiAmplitudeFreqSignalData) -> RabiAmplitudeFrequencySignalResul length=data.durations, fitted_parameters=fitted_parameters, frequency=fitted_frequencies, - pihalf_pulse=data.pihalf_pulse, + rx90=data.rx90, ) @@ -302,12 +302,8 @@ def _update( platform: CalibrationPlatform, target: QubitId, ): - update.drive_duration( - results.length[target], results.pihalf_pulse, platform, target - ) - update.drive_amplitude( - results.amplitude[target], results.pihalf_pulse, platform, target - ) + update.drive_duration(results.length[target], results.rx90, platform, target) + update.drive_amplitude(results.amplitude[target], results.rx90, platform, target) update.drive_frequency(results.frequency[target], platform, target) diff --git a/src/qibocal/protocols/rabi/amplitude_signal.py b/src/qibocal/protocols/rabi/amplitude_signal.py index cb0c996a0..5e5342d58 100644 --- a/src/qibocal/protocols/rabi/amplitude_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_signal.py @@ -41,7 +41,7 @@ class RabiAmplitudeSignalResults(Results): """Drive pulse duration. Same for all qubits.""" fitted_parameters: dict[QubitId, dict[str, float]] """Raw fitted parameters.""" - pihalf_pulse: bool + rx90: bool """Pi or Pi_half calibration""" @@ -55,7 +55,7 @@ class RabiAmplitudeSignalResults(Results): class RabiAmplitudeSignalData(Data): """RabiAmplitudeSignal data acquisition.""" - pihalf_pulse: bool + rx90: bool """Pi or Pi_half calibration""" durations: dict[QubitId, float] = field(default_factory=dict) """Pulse durations provided by the user.""" @@ -85,7 +85,7 @@ def _acquisition( pulses=[qd_pulses[qubit] for qubit in targets], ) - data = RabiAmplitudeSignalData(durations=durations, pihalf_pulse=params.rx90) + data = RabiAmplitudeSignalData(durations=durations, rx90=params.rx90) # sweep the parameter results = platform.execute( @@ -148,7 +148,7 @@ def _fit(data: RabiAmplitudeSignalData) -> RabiAmplitudeSignalResults: log.warning(f"Rabi fit failed for qubit {qubit} due to {e}.") return RabiAmplitudeSignalResults( - pi_pulse_amplitudes, data.durations, fitted_parameters, data.pihalf_pulse + pi_pulse_amplitudes, data.durations, fitted_parameters, data.rx90 ) @@ -164,12 +164,8 @@ def _plot( def _update( results: RabiAmplitudeSignalResults, platform: CalibrationPlatform, target: QubitId ): - update.drive_amplitude( - results.amplitude[target], results.pihalf_pulse, platform, target - ) - update.drive_duration( - results.length[target], results.pihalf_pulse, platform, target - ) + update.drive_amplitude(results.amplitude[target], results.rx90, platform, target) + update.drive_duration(results.length[target], results.rx90, platform, target) rabi_amplitude_signal = Routine(_acquisition, _fit, _plot, _update) diff --git a/src/qibocal/protocols/rabi/ef.py b/src/qibocal/protocols/rabi/ef.py index 8061fb6bf..399f92347 100644 --- a/src/qibocal/protocols/rabi/ef.py +++ b/src/qibocal/protocols/rabi/ef.py @@ -84,7 +84,7 @@ def _acquisition( pulses=[qd_pulses[qubit] for qubit in targets], ) - data = RabiAmplitudeEFData(durations=durations, pihalf_pulse=params.rx90) + data = RabiAmplitudeEFData(durations=durations, rx90=params.rx90) # sweep the parameter results = platform.execute( @@ -123,12 +123,8 @@ def _update( results: RabiAmplitudeEFResults, platform: CalibrationPlatform, target: QubitId ): """Update RX2 amplitude_signal""" - update.drive_12_amplitude( - results.amplitude[target], results.pihalf_pulse, platform, target - ) - update.drive_12_duration( - results.length[target], results.pihalf_pulse, platform, target - ) + update.drive_12_amplitude(results.amplitude[target], results.rx90, platform, target) + update.drive_12_duration(results.length[target], results.rx90, platform, target) rabi_amplitude_ef = Routine(_acquisition, amplitude_signal._fit, _plot, _update) diff --git a/src/qibocal/protocols/rabi/length.py b/src/qibocal/protocols/rabi/length.py index 5fe9413c6..968f66440 100644 --- a/src/qibocal/protocols/rabi/length.py +++ b/src/qibocal/protocols/rabi/length.py @@ -31,7 +31,7 @@ class RabiLengthParameters(Parameters): """Step pi pulse duration [ns].""" pulse_amplitude: Optional[float] = None """Pi pulse amplitude. Same for all qubits.""" - pihalf_pulse: bool = False + rx90: bool = False """Calibration of native pi pulse, if true calibrates pi/2 pulse""" interpolated_sweeper: bool = False """Use real-time interpolation if supported by instruments.""" @@ -43,7 +43,7 @@ class RabiLengthParameters(Parameters): class RabiLengthResults(RabiLengthSignalResults): """RabiLength outputs.""" - pihalf_pulse: bool + rx90: bool """Pi or Pi_half calibration""" chi2: dict[QubitId, list[float]] = field(default_factory=dict) @@ -92,7 +92,7 @@ def _acquisition( pulses=[qd_pulses[q] for q in targets] + [delays[q] for q in targets], ) - data = RabiLengthData(amplitudes=amplitudes, pihalf_pulse=params.rx90) + data = RabiLengthData(amplitudes=amplitudes, rx90=params.rx90) # execute the sweep results = platform.execute( @@ -161,18 +161,12 @@ def _fit(data: RabiLengthData) -> RabiLengthResults: except Exception as e: log.warning(f"Rabi fit failed for qubit {qubit} due to {e}.") - return RabiLengthResults( - durations, amplitudes, fitted_parameters, data.pihalf_pulse, chi2 - ) + return RabiLengthResults(durations, amplitudes, fitted_parameters, data.rx90, chi2) def _update(results: RabiLengthResults, platform: CalibrationPlatform, target: QubitId): - update.drive_duration( - results.length[target], results.pihalf_pulse, platform, target - ) - update.drive_amplitude( - results.amplitude[target], results.pihalf_pulse, platform, target - ) + update.drive_duration(results.length[target], results.rx90, platform, target) + update.drive_amplitude(results.amplitude[target], results.rx90, platform, target) def _plot(data: RabiLengthData, fit: RabiLengthResults, target: QubitId): diff --git a/src/qibocal/protocols/rabi/length_frequency.py b/src/qibocal/protocols/rabi/length_frequency.py index 390b6407e..9dfa2ec3d 100644 --- a/src/qibocal/protocols/rabi/length_frequency.py +++ b/src/qibocal/protocols/rabi/length_frequency.py @@ -33,7 +33,7 @@ class RabiLengthFrequencyParameters(RabiLengthFrequencySignalParameters): class RabiLengthFrequencyResults(RabiLengthFrequencySignalResults): """RabiLengthFrequency outputs.""" - pihalf_pulse: bool + rx90: bool """Pi or Pi_half calibration""" chi2: dict[QubitId, list[float]] = field(default_factory=dict) @@ -53,7 +53,7 @@ class RabiLengthFrequencyResults(RabiLengthFrequencySignalResults): class RabiLengthFreqData(RabiLengthFreqSignalData): """RabiLengthFreq data acquisition.""" - pihalf_pulse: bool + rx90: bool """Pi or Pi_half calibration""" data: dict[QubitId, npt.NDArray[RabiLenFreqType]] = field(default_factory=dict) @@ -114,7 +114,7 @@ def _acquisition( channels=[channel], ) - data = RabiLengthFreqData(amplitudes=amplitudes, pihalf_pulse=params.rx90) + data = RabiLengthFreqData(amplitudes=amplitudes, rx90=params.rx90) results = platform.execute( [sequence], diff --git a/src/qibocal/protocols/rabi/length_frequency_signal.py b/src/qibocal/protocols/rabi/length_frequency_signal.py index d5a380014..7d590d04e 100644 --- a/src/qibocal/protocols/rabi/length_frequency_signal.py +++ b/src/qibocal/protocols/rabi/length_frequency_signal.py @@ -49,7 +49,7 @@ class RabiLengthFrequencySignalParameters(Parameters): class RabiLengthFrequencySignalResults(RabiLengthSignalResults): """RabiLengthFrequency outputs.""" - pihalf_pulse: bool + rx90: bool """Pi or Pi_half calibration""" frequency: dict[QubitId, Union[float, list[float]]] """Drive frequency for each qubit.""" @@ -70,7 +70,7 @@ class RabiLengthFrequencySignalResults(RabiLengthSignalResults): class RabiLengthFreqSignalData(Data): """RabiLengthFreqSignal data acquisition.""" - pihalf_pulse: bool + rx90: bool """Pi or Pi_half calibration""" amplitudes: dict[QubitId, float] = field(default_factory=dict) """Pulse amplitudes provided by the user.""" @@ -142,7 +142,7 @@ def _acquisition( channels=[channel], ) - data = RabiLengthFreqSignalData(amplitudes=amplitudes, pihalf_pulse=params.rx90) + data = RabiLengthFreqSignalData(amplitudes=amplitudes, rx90=params.rx90) results = platform.execute( [sequence], @@ -213,7 +213,7 @@ def _fit(data: RabiLengthFreqSignalData) -> RabiLengthFrequencySignalResults: amplitude=data.amplitudes, fitted_parameters=fitted_parameters, frequency=fitted_frequencies, - pihalf_pulse=data.pihalf_pulse, + rx90=data.rx90, ) @@ -312,12 +312,8 @@ def _update( platform: CalibrationPlatform, target: QubitId, ): - update.drive_amplitude( - results.amplitude[target], results.pihalf_pulse, platform, target - ) - update.drive_duration( - results.length[target], results.pihalf_pulse, platform, target - ) + update.drive_amplitude(results.amplitude[target], results.rx90, platform, target) + update.drive_duration(results.length[target], results.rx90, platform, target) update.drive_frequency(results.frequency[target], platform, target) diff --git a/src/qibocal/protocols/rabi/length_signal.py b/src/qibocal/protocols/rabi/length_signal.py index 5ad796c38..5c8ad11b5 100644 --- a/src/qibocal/protocols/rabi/length_signal.py +++ b/src/qibocal/protocols/rabi/length_signal.py @@ -43,7 +43,7 @@ class RabiLengthSignalResults(Results): """Pi pulse amplitude. Same for all qubits.""" fitted_parameters: dict[QubitId, dict[str, float]] """Raw fitting output.""" - pihalf_pulse: bool + rx90: bool """Pi or Pi_half calibration""" @@ -57,7 +57,7 @@ class RabiLengthSignalResults(Results): class RabiLengthSignalData(Data): """RabiLength acquisition outputs.""" - pihalf_pulse: bool + rx90: bool """Pi or Pi_half calibration""" amplitudes: dict[QubitId, float] = field(default_factory=dict) """Pulse durations provided by the user.""" @@ -77,7 +77,7 @@ def _acquisition( """ sequence, qd_pulses, delays, ro_pulses, amplitudes = utils.sequence_length( - targets, params, platform, params.rx90 + targets, params, platform, params.rx90, use_align=params.interpolated_sweeper ) sweep_range = ( params.pulse_duration_start, @@ -97,9 +97,8 @@ def _acquisition( pulses=[qd_pulses[q] for q in targets] + [delays[q] for q in targets], ) - data = RabiLengthSignalData(amplitudes=amplitudes, pihalf_pulse=params.rx90) + data = RabiLengthSignalData(amplitudes=amplitudes, rx90=params.rx90) - # execute the sweep results = platform.execute( [sequence], [[sweeper]], @@ -160,19 +159,15 @@ def _fit(data: RabiLengthSignalData) -> RabiLengthSignalResults: log.warning(f"Rabi fit failed for qubit {qubit} due to {e}.") return RabiLengthSignalResults( - durations, data.amplitudes, fitted_parameters, data.pihalf_pulse + durations, data.amplitudes, fitted_parameters, data.rx90 ) def _update( results: RabiLengthSignalResults, platform: CalibrationPlatform, target: QubitId ): - update.drive_duration( - results.length[target], results.pihalf_pulse, platform, target - ) - update.drive_amplitude( - results.amplitude[target], results.pihalf_pulse, platform, target - ) + update.drive_duration(results.length[target], results.rx90, platform, target) + update.drive_amplitude(results.amplitude[target], results.rx90, platform, target) def _plot(data: RabiLengthSignalData, fit: RabiLengthSignalResults, target: QubitId): diff --git a/src/qibocal/protocols/rabi/utils.py b/src/qibocal/protocols/rabi/utils.py index a86686dfd..836d33b4d 100644 --- a/src/qibocal/protocols/rabi/utils.py +++ b/src/qibocal/protocols/rabi/utils.py @@ -226,7 +226,7 @@ def sequence_amplitude( targets: list[QubitId], params: Parameters, platform: Platform, - pulse: bool, # if true calibrate pi_half pulse + rx90: bool, ) -> tuple[PulseSequence, dict, dict, dict]: """Return sequence for rabi amplitude.""" @@ -246,7 +246,7 @@ def sequence_amplitude( qd_pulses[q] = qd_pulse ro_pulses[q] = ro_pulse - if pulse: + if rx90: sequence.append((qd_channel, qd_pulses[q])) sequence.append((qd_channel, qd_pulses[q])) @@ -259,7 +259,7 @@ def sequence_length( targets: list[QubitId], params: Parameters, platform: Platform, - pulse: bool, # if true calibrate pi_half pulse + rx90: bool, use_align: bool = True, ) -> tuple[PulseSequence, dict, dict, dict]: """Return sequence for rabi length.""" @@ -281,7 +281,7 @@ def sequence_length( ro_pulses[q] = ro_pulse qd_pulses[q] = qd_pulse - if pulse: + if rx90: sequence.append((qd_channel, qd_pulse)) sequence.append((qd_channel, qd_pulse)) From 349e312120ea7ab2519be36a3d5c8dff403da4dd Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Fri, 22 Nov 2024 18:32:21 +0400 Subject: [PATCH 25/73] force ef rabi protocol with pihalf --- src/qibocal/protocols/rabi/ef.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/qibocal/protocols/rabi/ef.py b/src/qibocal/protocols/rabi/ef.py index 399f92347..40e88c9fd 100644 --- a/src/qibocal/protocols/rabi/ef.py +++ b/src/qibocal/protocols/rabi/ef.py @@ -84,7 +84,10 @@ def _acquisition( pulses=[qd_pulses[qubit] for qubit in targets], ) - data = RabiAmplitudeEFData(durations=durations, rx90=params.rx90) + if params.rx90: + raise ValueError("Use RX90 = False") + + data = RabiAmplitudeEFData(durations=durations, rx90=False) # sweep the parameter results = platform.execute( From 07a62b8620be538f22b24eb84c876b599f50161a Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Mon, 25 Nov 2024 14:07:42 +0100 Subject: [PATCH 26/73] Delete rabi_length_signal.yaml --- rabi_length_signal.yaml | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 rabi_length_signal.yaml diff --git a/rabi_length_signal.yaml b/rabi_length_signal.yaml deleted file mode 100644 index 04c725b46..000000000 --- a/rabi_length_signal.yaml +++ /dev/null @@ -1,15 +0,0 @@ -platform: dummy - -targets: [1] - -actions: - -- id: Rabi length - operation: rabi_length_signal - parameters: - pulse_duration_start: 20 - pulse_duration_end: 100 - pulse_duration_step: 0.2 - pulse_amplitude: 0.1 - nshots: 3000 - relaxation_time: 50000 From 1873ccb40f85b0d47679e9c8068ef20b9ec8e43b Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Mon, 25 Nov 2024 14:11:42 +0100 Subject: [PATCH 27/73] Update src/qibocal/protocols/rabi/utils.py Co-authored-by: Andrea Pasquale --- src/qibocal/protocols/rabi/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qibocal/protocols/rabi/utils.py b/src/qibocal/protocols/rabi/utils.py index 836d33b4d..374ac129d 100644 --- a/src/qibocal/protocols/rabi/utils.py +++ b/src/qibocal/protocols/rabi/utils.py @@ -260,7 +260,7 @@ def sequence_length( params: Parameters, platform: Platform, rx90: bool, - use_align: bool = True, + use_align: bool = False, ) -> tuple[PulseSequence, dict, dict, dict]: """Return sequence for rabi length.""" From ef2e21a0b17ef9bca810a2446520996561b92f29 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Mon, 25 Nov 2024 14:20:41 +0100 Subject: [PATCH 28/73] Update src/qibocal/protocols/rabi/amplitude_frequency.py Co-authored-by: Andrea Pasquale --- src/qibocal/protocols/rabi/amplitude_frequency.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/qibocal/protocols/rabi/amplitude_frequency.py b/src/qibocal/protocols/rabi/amplitude_frequency.py index c2ac41fbb..b45659074 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency.py @@ -57,9 +57,6 @@ class RabiAmplitudeFrequencyResults(RabiAmplitudeFrequencySignalResults): class RabiAmplitudeFreqData(RabiAmplitudeFreqSignalData): """RabiAmplitudeFreq data acquisition.""" - rx90: bool - """Pi or Pi_half calibration""" - data: dict[QubitId, npt.NDArray[RabiAmpFreqType]] = field(default_factory=dict) """Raw data acquired.""" From 7deade056f6597e729caa0afc1eb48a414a74354 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Mon, 25 Nov 2024 14:21:11 +0100 Subject: [PATCH 29/73] Update src/qibocal/protocols/rabi/length_frequency.py Co-authored-by: Andrea Pasquale --- src/qibocal/protocols/rabi/length_frequency.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/qibocal/protocols/rabi/length_frequency.py b/src/qibocal/protocols/rabi/length_frequency.py index 9dfa2ec3d..be9b13a13 100644 --- a/src/qibocal/protocols/rabi/length_frequency.py +++ b/src/qibocal/protocols/rabi/length_frequency.py @@ -53,9 +53,6 @@ class RabiLengthFrequencyResults(RabiLengthFrequencySignalResults): class RabiLengthFreqData(RabiLengthFreqSignalData): """RabiLengthFreq data acquisition.""" - rx90: bool - """Pi or Pi_half calibration""" - data: dict[QubitId, npt.NDArray[RabiLenFreqType]] = field(default_factory=dict) """Raw data acquired.""" From 222539db8c1844f231882132895d4affc4ebb153 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Mon, 25 Nov 2024 14:21:35 +0100 Subject: [PATCH 30/73] Update src/qibocal/protocols/rabi/length_frequency.py Co-authored-by: Andrea Pasquale --- src/qibocal/protocols/rabi/length_frequency.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/qibocal/protocols/rabi/length_frequency.py b/src/qibocal/protocols/rabi/length_frequency.py index be9b13a13..119b0c56d 100644 --- a/src/qibocal/protocols/rabi/length_frequency.py +++ b/src/qibocal/protocols/rabi/length_frequency.py @@ -33,8 +33,6 @@ class RabiLengthFrequencyParameters(RabiLengthFrequencySignalParameters): class RabiLengthFrequencyResults(RabiLengthFrequencySignalResults): """RabiLengthFrequency outputs.""" - rx90: bool - """Pi or Pi_half calibration""" chi2: dict[QubitId, list[float]] = field(default_factory=dict) From 62230c9b68fdf54a0203b75d7ff67c0c127ccd63 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Mon, 25 Nov 2024 14:22:04 +0100 Subject: [PATCH 31/73] Update src/qibocal/protocols/rabi/length.py Co-authored-by: Andrea Pasquale --- src/qibocal/protocols/rabi/length.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/qibocal/protocols/rabi/length.py b/src/qibocal/protocols/rabi/length.py index 968f66440..acf2e9cea 100644 --- a/src/qibocal/protocols/rabi/length.py +++ b/src/qibocal/protocols/rabi/length.py @@ -35,8 +35,6 @@ class RabiLengthParameters(Parameters): """Calibration of native pi pulse, if true calibrates pi/2 pulse""" interpolated_sweeper: bool = False """Use real-time interpolation if supported by instruments.""" - rx90: bool = False - """Calibration of native pi pulse, if true calibrates pi/2 pulse""" @dataclass From 23ae111e86d2d0a2bce1ab1c7465217092c1cc18 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Mon, 25 Nov 2024 14:23:08 +0100 Subject: [PATCH 32/73] Update src/qibocal/protocols/rabi/ef.py Co-authored-by: Andrea Pasquale --- src/qibocal/protocols/rabi/ef.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/qibocal/protocols/rabi/ef.py b/src/qibocal/protocols/rabi/ef.py index 40e88c9fd..a4559e638 100644 --- a/src/qibocal/protocols/rabi/ef.py +++ b/src/qibocal/protocols/rabi/ef.py @@ -84,8 +84,7 @@ def _acquisition( pulses=[qd_pulses[qubit] for qubit in targets], ) - if params.rx90: - raise ValueError("Use RX90 = False") + assert not params.rx90, "Rabi ef available only for RX pulses." data = RabiAmplitudeEFData(durations=durations, rx90=False) From 4dbcc3455bce1b8ac4082c76b680cba071b21426 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Mon, 25 Nov 2024 14:23:22 +0100 Subject: [PATCH 33/73] Update src/qibocal/protocols/rabi/length.py Co-authored-by: Andrea Pasquale --- src/qibocal/protocols/rabi/length.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/qibocal/protocols/rabi/length.py b/src/qibocal/protocols/rabi/length.py index acf2e9cea..75de4f68c 100644 --- a/src/qibocal/protocols/rabi/length.py +++ b/src/qibocal/protocols/rabi/length.py @@ -41,8 +41,6 @@ class RabiLengthParameters(Parameters): class RabiLengthResults(RabiLengthSignalResults): """RabiLength outputs.""" - rx90: bool - """Pi or Pi_half calibration""" chi2: dict[QubitId, list[float]] = field(default_factory=dict) From 342775657a036958d1b0ec5e4bfd0ff808fb5c9b Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Mon, 25 Nov 2024 16:13:41 +0100 Subject: [PATCH 34/73] Update update.py --- src/qibocal/update.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/qibocal/update.py b/src/qibocal/update.py index 7fb93d501..949eed0ce 100644 --- a/src/qibocal/update.py +++ b/src/qibocal/update.py @@ -55,24 +55,24 @@ def drive_frequency( def drive_amplitude( - amp: Union[float, tuple, list], pi_half: bool, platform: Platform, qubit: QubitId + amp: Union[float, tuple, list], rx90: bool, platform: Platform, qubit: QubitId ): """Update drive frequency value in platform for specific qubit.""" if isinstance(amp, Iterable): amp = amp[0] - if pi_half: + if rx90: platform.update({f"native_gates.single_qubit.{qubit}.RX90.0.1.amplitude": amp}) else: platform.update({f"native_gates.single_qubit.{qubit}.RX.0.1.amplitude": amp}) def drive_duration( - duration: Union[int, tuple, list], pi_half: bool, platform: Platform, qubit: QubitId + duration: Union[int, tuple, list], rx90: bool, platform: Platform, qubit: QubitId ): """Update drive duration value in platform for specific qubit.""" if isinstance(duration, Iterable): duration = duration[0] - if pi_half: + if rx90: platform.update( {f"native_gates.single_qubit.{qubit}.RX90.0.1.duration": int(duration)} ) From 3c676ff2e09dc44b63869d1fb11a5251c2a1e570 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Tue, 26 Nov 2024 05:43:44 +0100 Subject: [PATCH 35/73] Update protocols.yml Add tests for protocols calibrating rx90 gate --- tests/runcards/protocols.yml | 95 +++++++++++++++++++++++++++++++++++- 1 file changed, 93 insertions(+), 2 deletions(-) diff --git a/tests/runcards/protocols.yml b/tests/runcards/protocols.yml index e02fe071d..8e13ff0f9 100644 --- a/tests/runcards/protocols.yml +++ b/tests/runcards/protocols.yml @@ -152,6 +152,16 @@ actions: pulse_length: 30 nshots: 1024 + - id: rabi + operation: rabi_amplitude + parameters: + min_amp: 0.0 + max_amp: 1.0 + step_amp: 0.1 + pulse_length: 30 + nshots: 1024 + rx90: True + - id: rabi without nshots operation: rabi_amplitude parameters: @@ -169,6 +179,16 @@ actions: pulse_length: 30 nshots: 1024 + - id: rabi signal + operation: rabi_amplitude_signal + parameters: + min_amp: 0.0 + max_amp: 1.0 + step_amp: 0.1 + pulse_length: 30 + nshots: 1024 + rx90: True + - id: rabi amplitude frequency operation: rabi_amplitude_frequency parameters: @@ -181,6 +201,19 @@ actions: pulse_length: 30 nshots: 1024 + - id: rabi amplitude frequency + operation: rabi_amplitude_frequency + parameters: + min_amp: 0.0 + max_amp: 1.0 + step_amp: 0.1 + min_freq: -100_000 + max_freq: 100_000 + step_freq: 10_000 + pulse_length: 30 + nshots: 1024 + rx90: True + - id: rabi amplitude frequency_signal operation: rabi_amplitude_frequency_signal parameters: @@ -193,7 +226,19 @@ actions: pulse_length: 30 nshots: 1024 - + - id: rabi amplitude frequency_signal + operation: rabi_amplitude_frequency_signal + parameters: + min_amp: 0.0 + max_amp: 1.0 + step_amp: 0.1 + min_freq: -100_000 + max_freq: 100_000 + step_freq: 10_000 + pulse_length: 30 + nshots: 1024 + rx90: True + - id: rabi_ef operation: rabi_amplitude_ef #FIXME: add RX12 for qubit 4 @@ -214,6 +259,16 @@ actions: pulse_amplitude: 0.5 nshots: 1024 + - id: rabi length + operation: rabi_length + parameters: + pulse_duration_start: 4 + pulse_duration_end: 84 + pulse_duration_step: 8 + pulse_amplitude: 0.5 + nshots: 1024 + rx90: True + - id: rabi length signal operation: rabi_length_signal parameters: @@ -221,7 +276,17 @@ actions: pulse_duration_end: 84 pulse_duration_step: 8 pulse_amplitude: 0.5 - nshots: 10 + nshots: 1024 + + - id: rabi length signal + operation: rabi_length_signal + parameters: + pulse_duration_start: 4 + pulse_duration_end: 84 + pulse_duration_step: 8 + pulse_amplitude: 0.5 + nshots: 1024 + rx90: True - id: rabi length frequency operation: rabi_length_frequency @@ -235,6 +300,31 @@ actions: pulse_amplitude: 0.5 nshots: 1024 + - id: rabi length frequency + operation: rabi_length_frequency + parameters: + pulse_duration_start: 4 + pulse_duration_end: 84 + pulse_duration_step: 8 + min_freq: -100_000 + max_freq: 100_000 + step_freq: 10_000 + pulse_amplitude: 0.5 + nshots: 1024 + rx90: True + + - id: rabi length frequency_signal + operation: rabi_length_frequency_signal + parameters: + pulse_duration_start: 4 + pulse_duration_end: 84 + pulse_duration_step: 8 + min_freq: -100_000 + max_freq: 100_000 + step_freq: 10_000 + pulse_amplitude: 0.5 + nshots: 1024 + - id: rabi length frequency_signal operation: rabi_length_frequency_signal parameters: @@ -246,6 +336,7 @@ actions: step_freq: 10_000 pulse_amplitude: 0.5 nshots: 1024 + rx90: True - id: t1 operation: t1 From df453dfcc2387b976ba40197effe4bdb9321417d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 04:43:55 +0000 Subject: [PATCH 36/73] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/runcards/protocols.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/runcards/protocols.yml b/tests/runcards/protocols.yml index 8e13ff0f9..447c294e4 100644 --- a/tests/runcards/protocols.yml +++ b/tests/runcards/protocols.yml @@ -188,7 +188,7 @@ actions: pulse_length: 30 nshots: 1024 rx90: True - + - id: rabi amplitude frequency operation: rabi_amplitude_frequency parameters: @@ -213,7 +213,7 @@ actions: pulse_length: 30 nshots: 1024 rx90: True - + - id: rabi amplitude frequency_signal operation: rabi_amplitude_frequency_signal parameters: @@ -238,7 +238,7 @@ actions: pulse_length: 30 nshots: 1024 rx90: True - + - id: rabi_ef operation: rabi_amplitude_ef #FIXME: add RX12 for qubit 4 @@ -268,7 +268,7 @@ actions: pulse_amplitude: 0.5 nshots: 1024 rx90: True - + - id: rabi length signal operation: rabi_length_signal parameters: From 92e0d719a4548eb61e82589a804f90ec33f38958 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Tue, 26 Nov 2024 05:54:15 +0100 Subject: [PATCH 37/73] Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4c9962b84..c4b53ab71 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,7 +17,7 @@ classifiers = [ [tool.poetry.dependencies] python = ">=3.9,<3.12" -qibolab = { git = "https://github.com/qiboteam/qibolab.git" } +qibolab = { git = "https://github.com/qiboteam/qibolab.git", rev = "88d0fd1" } qibo = "^0.2.12" numpy = "^1.26.4" scipy = "^1.10.1" From 1f9d5323f5dfd757834ea7f47b7e3f0f812eefcc Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Tue, 26 Nov 2024 06:13:34 +0100 Subject: [PATCH 38/73] Update length_frequency.py Fix _fit function return --- src/qibocal/protocols/rabi/length_frequency.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/qibocal/protocols/rabi/length_frequency.py b/src/qibocal/protocols/rabi/length_frequency.py index 119b0c56d..3ac946aed 100644 --- a/src/qibocal/protocols/rabi/length_frequency.py +++ b/src/qibocal/protocols/rabi/length_frequency.py @@ -197,6 +197,7 @@ def _fit(data: RabiLengthFreqData) -> RabiLengthFrequencyResults: fitted_parameters=fitted_parameters, frequency=fitted_frequencies, chi2=chi2, + rx90=data.rx90, ) From 31db8b7fd2e349d1790fc22590a48ef17660bdc4 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Tue, 26 Nov 2024 06:16:21 +0100 Subject: [PATCH 39/73] Update ef.py fix _update function --- src/qibocal/protocols/rabi/ef.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/qibocal/protocols/rabi/ef.py b/src/qibocal/protocols/rabi/ef.py index a4559e638..c47b52ab6 100644 --- a/src/qibocal/protocols/rabi/ef.py +++ b/src/qibocal/protocols/rabi/ef.py @@ -125,8 +125,8 @@ def _update( results: RabiAmplitudeEFResults, platform: CalibrationPlatform, target: QubitId ): """Update RX2 amplitude_signal""" - update.drive_12_amplitude(results.amplitude[target], results.rx90, platform, target) - update.drive_12_duration(results.length[target], results.rx90, platform, target) + update.drive_12_amplitude(results.amplitude[target], platform, target) + update.drive_12_duration(results.length[target], platform, target) rabi_amplitude_ef = Routine(_acquisition, amplitude_signal._fit, _plot, _update) From c579cbb909a65410092b5f6ec36387e229575ac4 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Tue, 26 Nov 2024 06:27:12 +0100 Subject: [PATCH 40/73] Update flipping.py The problem here is that right now we have the possibility to calibrate two different gates RX and RX90 so the `_update` function is defined accordingly taking `rx90: bool` as input. Right now I simply added the input `rx90 = False` but maybe in the future can be useful to modify the flipping protocol in order to be able to run it for both RX and RX90 gates. --- src/qibocal/protocols/flipping.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index a09d1360b..65e274c80 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -358,7 +358,7 @@ def _plot(data: FlippingData, target: QubitId, fit: FlippingResults = None): def _update(results: FlippingResults, platform: CalibrationPlatform, qubit: QubitId): - update.drive_amplitude(results.amplitude[qubit], platform, qubit) + update.drive_amplitude(results.amplitude[qubit], rx90 = False, platform, qubit) flipping = Routine(_acquisition, _fit, _plot, _update) From 64e5352557c8e692103278f9eb5279fe822e0cf4 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Tue, 26 Nov 2024 07:47:35 +0100 Subject: [PATCH 41/73] Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c4b53ab71..21e81a125 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,7 +17,7 @@ classifiers = [ [tool.poetry.dependencies] python = ">=3.9,<3.12" -qibolab = { git = "https://github.com/qiboteam/qibolab.git", rev = "88d0fd1" } +qibolab = { git = "https://github.com/qiboteam/qibolab.git", branch = "pi_half" } qibo = "^0.2.12" numpy = "^1.26.4" scipy = "^1.10.1" From 3c4e0d995722639771fe9a8bc006fec0d730484a Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Wed, 27 Nov 2024 13:58:18 +0100 Subject: [PATCH 42/73] Update poetry.lock --- poetry.lock | 678 ++++++++++++++++++++++++++-------------------------- 1 file changed, 343 insertions(+), 335 deletions(-) diff --git a/poetry.lock b/poetry.lock index f14d2b849..1d9e5a27c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -13,13 +13,13 @@ files = [ [[package]] name = "alembic" -version = "1.13.3" +version = "1.14.0" description = "A database migration tool for SQLAlchemy." optional = false python-versions = ">=3.8" files = [ - {file = "alembic-1.13.3-py3-none-any.whl", hash = "sha256:908e905976d15235fae59c9ac42c4c5b75cfcefe3d27c0fbf7ae15a37715d80e"}, - {file = "alembic-1.13.3.tar.gz", hash = "sha256:203503117415561e203aa14541740643a611f641517f0209fcae63e9fa09f1a2"}, + {file = "alembic-1.14.0-py3-none-any.whl", hash = "sha256:99bd884ca390466db5e27ffccff1d179ec5c05c965cfefc0607e69f9e411cb25"}, + {file = "alembic-1.14.0.tar.gz", hash = "sha256:b00892b53b3642d0b8dbedba234dbf1924b69be83a9a769d5a624b01094e304b"}, ] [package.dependencies] @@ -145,13 +145,13 @@ lxml = ["lxml"] [[package]] name = "blinker" -version = "1.8.2" +version = "1.9.0" description = "Fast, simple object-to-object and broadcast signaling" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "blinker-1.8.2-py3-none-any.whl", hash = "sha256:1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01"}, - {file = "blinker-1.8.2.tar.gz", hash = "sha256:8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83"}, + {file = "blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc"}, + {file = "blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf"}, ] [[package]] @@ -324,13 +324,13 @@ files = [ [[package]] name = "colorlog" -version = "6.8.2" +version = "6.9.0" description = "Add colours to the output of Python's logging module." optional = false python-versions = ">=3.6" files = [ - {file = "colorlog-6.8.2-py3-none-any.whl", hash = "sha256:4dcbb62368e2800cb3c5abd348da7e53f6c362dda502ec27c560b2e58a66bd33"}, - {file = "colorlog-6.8.2.tar.gz", hash = "sha256:3e3e079a41feb5a1b64f978b5ea4f46040a94f11f0e8bbb8261e3dbbeca64d44"}, + {file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff"}, + {file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2"}, ] [package.dependencies] @@ -439,73 +439,73 @@ test-no-images = ["pytest", "pytest-cov", "pytest-rerunfailures", "pytest-xdist" [[package]] name = "coverage" -version = "7.6.4" +version = "7.6.8" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" files = [ - {file = "coverage-7.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07"}, - {file = "coverage-7.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51"}, - {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea"}, - {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a"}, - {file = "coverage-7.6.4-cp310-cp310-win32.whl", hash = "sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa"}, - {file = "coverage-7.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172"}, - {file = "coverage-7.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b"}, - {file = "coverage-7.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25"}, - {file = "coverage-7.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546"}, - {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b"}, - {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e"}, - {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718"}, - {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db"}, - {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522"}, - {file = "coverage-7.6.4-cp311-cp311-win32.whl", hash = "sha256:29155cd511ee058e260db648b6182c419422a0d2e9a4fa44501898cf918866cf"}, - {file = "coverage-7.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:8902dd6a30173d4ef09954bfcb24b5d7b5190cf14a43170e386979651e09ba19"}, - {file = "coverage-7.6.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2"}, - {file = "coverage-7.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117"}, - {file = "coverage-7.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613"}, - {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27"}, - {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52"}, - {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2"}, - {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1"}, - {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5"}, - {file = "coverage-7.6.4-cp312-cp312-win32.whl", hash = "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17"}, - {file = "coverage-7.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08"}, - {file = "coverage-7.6.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9"}, - {file = "coverage-7.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba"}, - {file = "coverage-7.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c"}, - {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06"}, - {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f"}, - {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b"}, - {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21"}, - {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a"}, - {file = "coverage-7.6.4-cp313-cp313-win32.whl", hash = "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e"}, - {file = "coverage-7.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963"}, - {file = "coverage-7.6.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f"}, - {file = "coverage-7.6.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806"}, - {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11"}, - {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3"}, - {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a"}, - {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc"}, - {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70"}, - {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef"}, - {file = "coverage-7.6.4-cp313-cp313t-win32.whl", hash = "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e"}, - {file = "coverage-7.6.4-cp313-cp313t-win_amd64.whl", hash = "sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1"}, - {file = "coverage-7.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9cb7fa111d21a6b55cbf633039f7bc2749e74932e3aa7cb7333f675a58a58bf3"}, - {file = "coverage-7.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11a223a14e91a4693d2d0755c7a043db43d96a7450b4f356d506c2562c48642c"}, - {file = "coverage-7.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a413a096c4cbac202433c850ee43fa326d2e871b24554da8327b01632673a076"}, - {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00a1d69c112ff5149cabe60d2e2ee948752c975d95f1e1096742e6077affd376"}, - {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f76846299ba5c54d12c91d776d9605ae33f8ae2b9d1d3c3703cf2db1a67f2c0"}, - {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fe439416eb6380de434886b00c859304338f8b19f6f54811984f3420a2e03858"}, - {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0294ca37f1ba500667b1aef631e48d875ced93ad5e06fa665a3295bdd1d95111"}, - {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6f01ba56b1c0e9d149f9ac85a2f999724895229eb36bd997b61e62999e9b0901"}, - {file = "coverage-7.6.4-cp39-cp39-win32.whl", hash = "sha256:bc66f0bf1d7730a17430a50163bb264ba9ded56739112368ba985ddaa9c3bd09"}, - {file = "coverage-7.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:c481b47f6b5845064c65a7bc78bc0860e635a9b055af0df46fdf1c58cebf8e8f"}, - {file = "coverage-7.6.4-pp39.pp310-none-any.whl", hash = "sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e"}, - {file = "coverage-7.6.4.tar.gz", hash = "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73"}, + {file = "coverage-7.6.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b39e6011cd06822eb964d038d5dff5da5d98652b81f5ecd439277b32361a3a50"}, + {file = "coverage-7.6.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:63c19702db10ad79151a059d2d6336fe0c470f2e18d0d4d1a57f7f9713875dcf"}, + {file = "coverage-7.6.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3985b9be361d8fb6b2d1adc9924d01dec575a1d7453a14cccd73225cb79243ee"}, + {file = "coverage-7.6.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:644ec81edec0f4ad17d51c838a7d01e42811054543b76d4ba2c5d6af741ce2a6"}, + {file = "coverage-7.6.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f188a2402f8359cf0c4b1fe89eea40dc13b52e7b4fd4812450da9fcd210181d"}, + {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e19122296822deafce89a0c5e8685704c067ae65d45e79718c92df7b3ec3d331"}, + {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:13618bed0c38acc418896005732e565b317aa9e98d855a0e9f211a7ffc2d6638"}, + {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:193e3bffca48ad74b8c764fb4492dd875038a2f9925530cb094db92bb5e47bed"}, + {file = "coverage-7.6.8-cp310-cp310-win32.whl", hash = "sha256:3988665ee376abce49613701336544041f2117de7b7fbfe91b93d8ff8b151c8e"}, + {file = "coverage-7.6.8-cp310-cp310-win_amd64.whl", hash = "sha256:f56f49b2553d7dd85fd86e029515a221e5c1f8cb3d9c38b470bc38bde7b8445a"}, + {file = "coverage-7.6.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:86cffe9c6dfcfe22e28027069725c7f57f4b868a3f86e81d1c62462764dc46d4"}, + {file = "coverage-7.6.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d82ab6816c3277dc962cfcdc85b1efa0e5f50fb2c449432deaf2398a2928ab94"}, + {file = "coverage-7.6.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13690e923a3932e4fad4c0ebfb9cb5988e03d9dcb4c5150b5fcbf58fd8bddfc4"}, + {file = "coverage-7.6.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4be32da0c3827ac9132bb488d331cb32e8d9638dd41a0557c5569d57cf22c9c1"}, + {file = "coverage-7.6.8-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44e6c85bbdc809383b509d732b06419fb4544dca29ebe18480379633623baafb"}, + {file = "coverage-7.6.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:768939f7c4353c0fac2f7c37897e10b1414b571fd85dd9fc49e6a87e37a2e0d8"}, + {file = "coverage-7.6.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e44961e36cb13c495806d4cac67640ac2866cb99044e210895b506c26ee63d3a"}, + {file = "coverage-7.6.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3ea8bb1ab9558374c0ab591783808511d135a833c3ca64a18ec927f20c4030f0"}, + {file = "coverage-7.6.8-cp311-cp311-win32.whl", hash = "sha256:629a1ba2115dce8bf75a5cce9f2486ae483cb89c0145795603d6554bdc83e801"}, + {file = "coverage-7.6.8-cp311-cp311-win_amd64.whl", hash = "sha256:fb9fc32399dca861584d96eccd6c980b69bbcd7c228d06fb74fe53e007aa8ef9"}, + {file = "coverage-7.6.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e683e6ecc587643f8cde8f5da6768e9d165cd31edf39ee90ed7034f9ca0eefee"}, + {file = "coverage-7.6.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1defe91d41ce1bd44b40fabf071e6a01a5aa14de4a31b986aa9dfd1b3e3e414a"}, + {file = "coverage-7.6.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ad66e8e50225ebf4236368cc43c37f59d5e6728f15f6e258c8639fa0dd8e6d"}, + {file = "coverage-7.6.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fe47da3e4fda5f1abb5709c156eca207eacf8007304ce3019eb001e7a7204cb"}, + {file = "coverage-7.6.8-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:202a2d645c5a46b84992f55b0a3affe4f0ba6b4c611abec32ee88358db4bb649"}, + {file = "coverage-7.6.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4674f0daa1823c295845b6a740d98a840d7a1c11df00d1fd62614545c1583787"}, + {file = "coverage-7.6.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:74610105ebd6f33d7c10f8907afed696e79c59e3043c5f20eaa3a46fddf33b4c"}, + {file = "coverage-7.6.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37cda8712145917105e07aab96388ae76e787270ec04bcb9d5cc786d7cbb8443"}, + {file = "coverage-7.6.8-cp312-cp312-win32.whl", hash = "sha256:9e89d5c8509fbd6c03d0dd1972925b22f50db0792ce06324ba069f10787429ad"}, + {file = "coverage-7.6.8-cp312-cp312-win_amd64.whl", hash = "sha256:379c111d3558272a2cae3d8e57e6b6e6f4fe652905692d54bad5ea0ca37c5ad4"}, + {file = "coverage-7.6.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0b0c69f4f724c64dfbfe79f5dfb503b42fe6127b8d479b2677f2b227478db2eb"}, + {file = "coverage-7.6.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c15b32a7aca8038ed7644f854bf17b663bc38e1671b5d6f43f9a2b2bd0c46f63"}, + {file = "coverage-7.6.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63068a11171e4276f6ece913bde059e77c713b48c3a848814a6537f35afb8365"}, + {file = "coverage-7.6.8-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f4548c5ead23ad13fb7a2c8ea541357474ec13c2b736feb02e19a3085fac002"}, + {file = "coverage-7.6.8-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b4b4299dd0d2c67caaaf286d58aef5e75b125b95615dda4542561a5a566a1e3"}, + {file = "coverage-7.6.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c9ebfb2507751f7196995142f057d1324afdab56db1d9743aab7f50289abd022"}, + {file = "coverage-7.6.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c1b4474beee02ede1eef86c25ad4600a424fe36cff01a6103cb4533c6bf0169e"}, + {file = "coverage-7.6.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d9fd2547e6decdbf985d579cf3fc78e4c1d662b9b0ff7cc7862baaab71c9cc5b"}, + {file = "coverage-7.6.8-cp313-cp313-win32.whl", hash = "sha256:8aae5aea53cbfe024919715eca696b1a3201886ce83790537d1c3668459c7146"}, + {file = "coverage-7.6.8-cp313-cp313-win_amd64.whl", hash = "sha256:ae270e79f7e169ccfe23284ff5ea2d52a6f401dc01b337efb54b3783e2ce3f28"}, + {file = "coverage-7.6.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:de38add67a0af869b0d79c525d3e4588ac1ffa92f39116dbe0ed9753f26eba7d"}, + {file = "coverage-7.6.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b07c25d52b1c16ce5de088046cd2432b30f9ad5e224ff17c8f496d9cb7d1d451"}, + {file = "coverage-7.6.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62a66ff235e4c2e37ed3b6104d8b478d767ff73838d1222132a7a026aa548764"}, + {file = "coverage-7.6.8-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09b9f848b28081e7b975a3626e9081574a7b9196cde26604540582da60235fdf"}, + {file = "coverage-7.6.8-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:093896e530c38c8e9c996901858ac63f3d4171268db2c9c8b373a228f459bbc5"}, + {file = "coverage-7.6.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9a7b8ac36fd688c8361cbc7bf1cb5866977ece6e0b17c34aa0df58bda4fa18a4"}, + {file = "coverage-7.6.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:38c51297b35b3ed91670e1e4efb702b790002e3245a28c76e627478aa3c10d83"}, + {file = "coverage-7.6.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2e4e0f60cb4bd7396108823548e82fdab72d4d8a65e58e2c19bbbc2f1e2bfa4b"}, + {file = "coverage-7.6.8-cp313-cp313t-win32.whl", hash = "sha256:6535d996f6537ecb298b4e287a855f37deaf64ff007162ec0afb9ab8ba3b8b71"}, + {file = "coverage-7.6.8-cp313-cp313t-win_amd64.whl", hash = "sha256:c79c0685f142ca53256722a384540832420dff4ab15fec1863d7e5bc8691bdcc"}, + {file = "coverage-7.6.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3ac47fa29d8d41059ea3df65bd3ade92f97ee4910ed638e87075b8e8ce69599e"}, + {file = "coverage-7.6.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:24eda3a24a38157eee639ca9afe45eefa8d2420d49468819ac5f88b10de84f4c"}, + {file = "coverage-7.6.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4c81ed2820b9023a9a90717020315e63b17b18c274a332e3b6437d7ff70abe0"}, + {file = "coverage-7.6.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd55f8fc8fa494958772a2a7302b0354ab16e0b9272b3c3d83cdb5bec5bd1779"}, + {file = "coverage-7.6.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f39e2f3530ed1626c66e7493be7a8423b023ca852aacdc91fb30162c350d2a92"}, + {file = "coverage-7.6.8-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:716a78a342679cd1177bc8c2fe957e0ab91405bd43a17094324845200b2fddf4"}, + {file = "coverage-7.6.8-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:177f01eeaa3aee4a5ffb0d1439c5952b53d5010f86e9d2667963e632e30082cc"}, + {file = "coverage-7.6.8-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:912e95017ff51dc3d7b6e2be158dedc889d9a5cc3382445589ce554f1a34c0ea"}, + {file = "coverage-7.6.8-cp39-cp39-win32.whl", hash = "sha256:4db3ed6a907b555e57cc2e6f14dc3a4c2458cdad8919e40b5357ab9b6db6c43e"}, + {file = "coverage-7.6.8-cp39-cp39-win_amd64.whl", hash = "sha256:428ac484592f780e8cd7b6b14eb568f7c85460c92e2a37cb0c0e5186e1a0d076"}, + {file = "coverage-7.6.8-pp39.pp310-none-any.whl", hash = "sha256:5c52a036535d12590c32c49209e79cabaad9f9ad8aa4cbd875b68c4d67a9cbce"}, + {file = "coverage-7.6.8.tar.gz", hash = "sha256:8b2b8503edb06822c86d82fa64a4a5cb0760bb8f31f26e138ec743f422f37cfc"}, ] [package.dependencies] @@ -531,13 +531,13 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "dash" -version = "2.18.1" +version = "2.18.2" description = "A Python framework for building reactive web-apps. Developed by Plotly." optional = false python-versions = ">=3.8" files = [ - {file = "dash-2.18.1-py3-none-any.whl", hash = "sha256:07c4513bb5f79a4b936847a0b49afc21dbd4b001ff77ea78d4d836043e211a07"}, - {file = "dash-2.18.1.tar.gz", hash = "sha256:ffdf89690d734f6851ef1cb344222826ffb11ad2214ab9172668bf8aadd75d12"}, + {file = "dash-2.18.2-py3-none-any.whl", hash = "sha256:0ce0479d1bc958e934630e2de7023b8a4558f23ce1f9f5a4b34b65eb3903a869"}, + {file = "dash-2.18.2.tar.gz", hash = "sha256:20e8404f73d0fe88ce2eae33c25bbc513cbe52f30d23a401fa5f24dbb44296c8"}, ] [package.dependencies] @@ -734,59 +734,61 @@ dotenv = ["python-dotenv"] [[package]] name = "fonttools" -version = "4.54.1" +version = "4.55.0" description = "Tools to manipulate font files" optional = true python-versions = ">=3.8" files = [ - {file = "fonttools-4.54.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ed7ee041ff7b34cc62f07545e55e1468808691dddfd315d51dd82a6b37ddef2"}, - {file = "fonttools-4.54.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41bb0b250c8132b2fcac148e2e9198e62ff06f3cc472065dff839327945c5882"}, - {file = "fonttools-4.54.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7965af9b67dd546e52afcf2e38641b5be956d68c425bef2158e95af11d229f10"}, - {file = "fonttools-4.54.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:278913a168f90d53378c20c23b80f4e599dca62fbffae4cc620c8eed476b723e"}, - {file = "fonttools-4.54.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0e88e3018ac809b9662615072dcd6b84dca4c2d991c6d66e1970a112503bba7e"}, - {file = "fonttools-4.54.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4aa4817f0031206e637d1e685251ac61be64d1adef111060df84fdcbc6ab6c44"}, - {file = "fonttools-4.54.1-cp310-cp310-win32.whl", hash = "sha256:7e3b7d44e18c085fd8c16dcc6f1ad6c61b71ff463636fcb13df7b1b818bd0c02"}, - {file = "fonttools-4.54.1-cp310-cp310-win_amd64.whl", hash = "sha256:dd9cc95b8d6e27d01e1e1f1fae8559ef3c02c76317da650a19047f249acd519d"}, - {file = "fonttools-4.54.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5419771b64248484299fa77689d4f3aeed643ea6630b2ea750eeab219588ba20"}, - {file = "fonttools-4.54.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:301540e89cf4ce89d462eb23a89464fef50915255ece765d10eee8b2bf9d75b2"}, - {file = "fonttools-4.54.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ae5091547e74e7efecc3cbf8e75200bc92daaeb88e5433c5e3e95ea8ce5aa7"}, - {file = "fonttools-4.54.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82834962b3d7c5ca98cb56001c33cf20eb110ecf442725dc5fdf36d16ed1ab07"}, - {file = "fonttools-4.54.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d26732ae002cc3d2ecab04897bb02ae3f11f06dd7575d1df46acd2f7c012a8d8"}, - {file = "fonttools-4.54.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:58974b4987b2a71ee08ade1e7f47f410c367cdfc5a94fabd599c88165f56213a"}, - {file = "fonttools-4.54.1-cp311-cp311-win32.whl", hash = "sha256:ab774fa225238986218a463f3fe151e04d8c25d7de09df7f0f5fce27b1243dbc"}, - {file = "fonttools-4.54.1-cp311-cp311-win_amd64.whl", hash = "sha256:07e005dc454eee1cc60105d6a29593459a06321c21897f769a281ff2d08939f6"}, - {file = "fonttools-4.54.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:54471032f7cb5fca694b5f1a0aaeba4af6e10ae989df408e0216f7fd6cdc405d"}, - {file = "fonttools-4.54.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fa92cb248e573daab8d032919623cc309c005086d743afb014c836636166f08"}, - {file = "fonttools-4.54.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a911591200114969befa7f2cb74ac148bce5a91df5645443371aba6d222e263"}, - {file = "fonttools-4.54.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93d458c8a6a354dc8b48fc78d66d2a8a90b941f7fec30e94c7ad9982b1fa6bab"}, - {file = "fonttools-4.54.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5eb2474a7c5be8a5331146758debb2669bf5635c021aee00fd7c353558fc659d"}, - {file = "fonttools-4.54.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9c563351ddc230725c4bdf7d9e1e92cbe6ae8553942bd1fb2b2ff0884e8b714"}, - {file = "fonttools-4.54.1-cp312-cp312-win32.whl", hash = "sha256:fdb062893fd6d47b527d39346e0c5578b7957dcea6d6a3b6794569370013d9ac"}, - {file = "fonttools-4.54.1-cp312-cp312-win_amd64.whl", hash = "sha256:e4564cf40cebcb53f3dc825e85910bf54835e8a8b6880d59e5159f0f325e637e"}, - {file = "fonttools-4.54.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6e37561751b017cf5c40fce0d90fd9e8274716de327ec4ffb0df957160be3bff"}, - {file = "fonttools-4.54.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:357cacb988a18aace66e5e55fe1247f2ee706e01debc4b1a20d77400354cddeb"}, - {file = "fonttools-4.54.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e953cc0bddc2beaf3a3c3b5dd9ab7554677da72dfaf46951e193c9653e515a"}, - {file = "fonttools-4.54.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:58d29b9a294573d8319f16f2f79e42428ba9b6480442fa1836e4eb89c4d9d61c"}, - {file = "fonttools-4.54.1-cp313-cp313-win32.whl", hash = "sha256:9ef1b167e22709b46bf8168368b7b5d3efeaaa746c6d39661c1b4405b6352e58"}, - {file = "fonttools-4.54.1-cp313-cp313-win_amd64.whl", hash = "sha256:262705b1663f18c04250bd1242b0515d3bbae177bee7752be67c979b7d47f43d"}, - {file = "fonttools-4.54.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ed2f80ca07025551636c555dec2b755dd005e2ea8fbeb99fc5cdff319b70b23b"}, - {file = "fonttools-4.54.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9dc080e5a1c3b2656caff2ac2633d009b3a9ff7b5e93d0452f40cd76d3da3b3c"}, - {file = "fonttools-4.54.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d152d1be65652fc65e695e5619e0aa0982295a95a9b29b52b85775243c06556"}, - {file = "fonttools-4.54.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8583e563df41fdecef31b793b4dd3af8a9caa03397be648945ad32717a92885b"}, - {file = "fonttools-4.54.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:0d1d353ef198c422515a3e974a1e8d5b304cd54a4c2eebcae708e37cd9eeffb1"}, - {file = "fonttools-4.54.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:fda582236fee135d4daeca056c8c88ec5f6f6d88a004a79b84a02547c8f57386"}, - {file = "fonttools-4.54.1-cp38-cp38-win32.whl", hash = "sha256:e7d82b9e56716ed32574ee106cabca80992e6bbdcf25a88d97d21f73a0aae664"}, - {file = "fonttools-4.54.1-cp38-cp38-win_amd64.whl", hash = "sha256:ada215fd079e23e060157aab12eba0d66704316547f334eee9ff26f8c0d7b8ab"}, - {file = "fonttools-4.54.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f5b8a096e649768c2f4233f947cf9737f8dbf8728b90e2771e2497c6e3d21d13"}, - {file = "fonttools-4.54.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4e10d2e0a12e18f4e2dd031e1bf7c3d7017be5c8dbe524d07706179f355c5dac"}, - {file = "fonttools-4.54.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31c32d7d4b0958600eac75eaf524b7b7cb68d3a8c196635252b7a2c30d80e986"}, - {file = "fonttools-4.54.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c39287f5c8f4a0c5a55daf9eaf9ccd223ea59eed3f6d467133cc727d7b943a55"}, - {file = "fonttools-4.54.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a7a310c6e0471602fe3bf8efaf193d396ea561486aeaa7adc1f132e02d30c4b9"}, - {file = "fonttools-4.54.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d3b659d1029946f4ff9b6183984578041b520ce0f8fb7078bb37ec7445806b33"}, - {file = "fonttools-4.54.1-cp39-cp39-win32.whl", hash = "sha256:e96bc94c8cda58f577277d4a71f51c8e2129b8b36fd05adece6320dd3d57de8a"}, - {file = "fonttools-4.54.1-cp39-cp39-win_amd64.whl", hash = "sha256:e8a4b261c1ef91e7188a30571be6ad98d1c6d9fa2427244c545e2fa0a2494dd7"}, - {file = "fonttools-4.54.1-py3-none-any.whl", hash = "sha256:37cddd62d83dc4f72f7c3f3c2bcf2697e89a30efb152079896544a93907733bd"}, - {file = "fonttools-4.54.1.tar.gz", hash = "sha256:957f669d4922f92c171ba01bef7f29410668db09f6c02111e22b2bce446f3285"}, + {file = "fonttools-4.55.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:51c029d4c0608a21a3d3d169dfc3fb776fde38f00b35ca11fdab63ba10a16f61"}, + {file = "fonttools-4.55.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bca35b4e411362feab28e576ea10f11268b1aeed883b9f22ed05675b1e06ac69"}, + {file = "fonttools-4.55.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ce4ba6981e10f7e0ccff6348e9775ce25ffadbee70c9fd1a3737e3e9f5fa74f"}, + {file = "fonttools-4.55.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31d00f9852a6051dac23294a4cf2df80ced85d1d173a61ba90a3d8f5abc63c60"}, + {file = "fonttools-4.55.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e198e494ca6e11f254bac37a680473a311a88cd40e58f9cc4dc4911dfb686ec6"}, + {file = "fonttools-4.55.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7208856f61770895e79732e1dcbe49d77bd5783adf73ae35f87fcc267df9db81"}, + {file = "fonttools-4.55.0-cp310-cp310-win32.whl", hash = "sha256:e7e6a352ff9e46e8ef8a3b1fe2c4478f8a553e1b5a479f2e899f9dc5f2055880"}, + {file = "fonttools-4.55.0-cp310-cp310-win_amd64.whl", hash = "sha256:636caaeefe586d7c84b5ee0734c1a5ab2dae619dc21c5cf336f304ddb8f6001b"}, + {file = "fonttools-4.55.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fa34aa175c91477485c44ddfbb51827d470011e558dfd5c7309eb31bef19ec51"}, + {file = "fonttools-4.55.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:37dbb3fdc2ef7302d3199fb12468481cbebaee849e4b04bc55b77c24e3c49189"}, + {file = "fonttools-4.55.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5263d8e7ef3c0ae87fbce7f3ec2f546dc898d44a337e95695af2cd5ea21a967"}, + {file = "fonttools-4.55.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f307f6b5bf9e86891213b293e538d292cd1677e06d9faaa4bf9c086ad5f132f6"}, + {file = "fonttools-4.55.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f0a4b52238e7b54f998d6a56b46a2c56b59c74d4f8a6747fb9d4042190f37cd3"}, + {file = "fonttools-4.55.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3e569711464f777a5d4ef522e781dc33f8095ab5efd7548958b36079a9f2f88c"}, + {file = "fonttools-4.55.0-cp311-cp311-win32.whl", hash = "sha256:2b3ab90ec0f7b76c983950ac601b58949f47aca14c3f21eed858b38d7ec42b05"}, + {file = "fonttools-4.55.0-cp311-cp311-win_amd64.whl", hash = "sha256:aa046f6a63bb2ad521004b2769095d4c9480c02c1efa7d7796b37826508980b6"}, + {file = "fonttools-4.55.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:838d2d8870f84fc785528a692e724f2379d5abd3fc9dad4d32f91cf99b41e4a7"}, + {file = "fonttools-4.55.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f46b863d74bab7bb0d395f3b68d3f52a03444964e67ce5c43ce43a75efce9246"}, + {file = "fonttools-4.55.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33b52a9cfe4e658e21b1f669f7309b4067910321757fec53802ca8f6eae96a5a"}, + {file = "fonttools-4.55.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:732a9a63d6ea4a81b1b25a1f2e5e143761b40c2e1b79bb2b68e4893f45139a40"}, + {file = "fonttools-4.55.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7dd91ac3fcb4c491bb4763b820bcab6c41c784111c24172616f02f4bc227c17d"}, + {file = "fonttools-4.55.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1f0e115281a32ff532118aa851ef497a1b7cda617f4621c1cdf81ace3e36fb0c"}, + {file = "fonttools-4.55.0-cp312-cp312-win32.whl", hash = "sha256:6c99b5205844f48a05cb58d4a8110a44d3038c67ed1d79eb733c4953c628b0f6"}, + {file = "fonttools-4.55.0-cp312-cp312-win_amd64.whl", hash = "sha256:f8c8c76037d05652510ae45be1cd8fb5dd2fd9afec92a25374ac82255993d57c"}, + {file = "fonttools-4.55.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8118dc571921dc9e4b288d9cb423ceaf886d195a2e5329cc427df82bba872cd9"}, + {file = "fonttools-4.55.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01124f2ca6c29fad4132d930da69158d3f49b2350e4a779e1efbe0e82bd63f6c"}, + {file = "fonttools-4.55.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81ffd58d2691f11f7c8438796e9f21c374828805d33e83ff4b76e4635633674c"}, + {file = "fonttools-4.55.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5435e5f1eb893c35c2bc2b9cd3c9596b0fcb0a59e7a14121562986dd4c47b8dd"}, + {file = "fonttools-4.55.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d12081729280c39d001edd0f4f06d696014c26e6e9a0a55488fabc37c28945e4"}, + {file = "fonttools-4.55.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a7ad1f1b98ab6cb927ab924a38a8649f1ffd7525c75fe5b594f5dab17af70e18"}, + {file = "fonttools-4.55.0-cp313-cp313-win32.whl", hash = "sha256:abe62987c37630dca69a104266277216de1023cf570c1643bb3a19a9509e7a1b"}, + {file = "fonttools-4.55.0-cp313-cp313-win_amd64.whl", hash = "sha256:2863555ba90b573e4201feaf87a7e71ca3b97c05aa4d63548a4b69ea16c9e998"}, + {file = "fonttools-4.55.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:00f7cf55ad58a57ba421b6a40945b85ac7cc73094fb4949c41171d3619a3a47e"}, + {file = "fonttools-4.55.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f27526042efd6f67bfb0cc2f1610fa20364396f8b1fc5edb9f45bb815fb090b2"}, + {file = "fonttools-4.55.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e67974326af6a8879dc2a4ec63ab2910a1c1a9680ccd63e4a690950fceddbe"}, + {file = "fonttools-4.55.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61dc0a13451143c5e987dec5254d9d428f3c2789a549a7cf4f815b63b310c1cc"}, + {file = "fonttools-4.55.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:b2e526b325a903868c62155a6a7e24df53f6ce4c5c3160214d8fe1be2c41b478"}, + {file = "fonttools-4.55.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:b7ef9068a1297714e6fefe5932c33b058aa1d45a2b8be32a4c6dee602ae22b5c"}, + {file = "fonttools-4.55.0-cp38-cp38-win32.whl", hash = "sha256:55718e8071be35dff098976bc249fc243b58efa263768c611be17fe55975d40a"}, + {file = "fonttools-4.55.0-cp38-cp38-win_amd64.whl", hash = "sha256:553bd4f8cc327f310c20158e345e8174c8eed49937fb047a8bda51daf2c353c8"}, + {file = "fonttools-4.55.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f901cef813f7c318b77d1c5c14cf7403bae5cb977cede023e22ba4316f0a8f6"}, + {file = "fonttools-4.55.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8c9679fc0dd7e8a5351d321d8d29a498255e69387590a86b596a45659a39eb0d"}, + {file = "fonttools-4.55.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd2820a8b632f3307ebb0bf57948511c2208e34a4939cf978333bc0a3f11f838"}, + {file = "fonttools-4.55.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23bbbb49bec613a32ed1b43df0f2b172313cee690c2509f1af8fdedcf0a17438"}, + {file = "fonttools-4.55.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a656652e1f5d55b9728937a7e7d509b73d23109cddd4e89ee4f49bde03b736c6"}, + {file = "fonttools-4.55.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f50a1f455902208486fbca47ce33054208a4e437b38da49d6721ce2fef732fcf"}, + {file = "fonttools-4.55.0-cp39-cp39-win32.whl", hash = "sha256:161d1ac54c73d82a3cded44202d0218ab007fde8cf194a23d3dd83f7177a2f03"}, + {file = "fonttools-4.55.0-cp39-cp39-win_amd64.whl", hash = "sha256:ca7fd6987c68414fece41c96836e945e1f320cda56fc96ffdc16e54a44ec57a2"}, + {file = "fonttools-4.55.0-py3-none-any.whl", hash = "sha256:12db5888cd4dd3fcc9f0ee60c6edd3c7e1fd44b7dd0f31381ea03df68f8a153f"}, + {file = "fonttools-4.55.0.tar.gz", hash = "sha256:7636acc6ab733572d5e7eec922b254ead611f1cdad17be3f0be7418e8bfaca71"}, ] [package.extras] @@ -968,13 +970,13 @@ lxml = ["lxml"] [[package]] name = "huggingface-hub" -version = "0.26.1" +version = "0.26.2" description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" optional = false python-versions = ">=3.8.0" files = [ - {file = "huggingface_hub-0.26.1-py3-none-any.whl", hash = "sha256:5927a8fc64ae68859cd954b7cc29d1c8390a5e15caba6d3d349c973be8fdacf3"}, - {file = "huggingface_hub-0.26.1.tar.gz", hash = "sha256:414c0d9b769eecc86c70f9d939d0f48bb28e8461dd1130021542eff0212db890"}, + {file = "huggingface_hub-0.26.2-py3-none-any.whl", hash = "sha256:98c2a5a8e786c7b2cb6fdeb2740893cba4d53e312572ed3d8afafda65b128c46"}, + {file = "huggingface_hub-0.26.2.tar.gz", hash = "sha256:b100d853465d965733964d123939ba287da60a547087783ddff8a323f340332b"}, ] [package.dependencies] @@ -1145,22 +1147,22 @@ files = [ [[package]] name = "jedi" -version = "0.19.1" +version = "0.19.2" description = "An autocompletion tool for Python that can be used for text editors." optional = false python-versions = ">=3.6" files = [ - {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, - {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, + {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"}, + {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"}, ] [package.dependencies] -parso = ">=0.8.3,<0.9.0" +parso = ">=0.8.4,<0.9.0" [package.extras] docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] +testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] [[package]] name = "jinja2" @@ -1833,13 +1835,13 @@ tests = ["pytest (>=6.0)", "pyyaml"] [[package]] name = "optuna" -version = "4.0.0" +version = "4.1.0" description = "A hyperparameter optimization framework" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "optuna-4.0.0-py3-none-any.whl", hash = "sha256:a825c32d13f6085bcb2229b2724a5078f2e0f61a7533e800e580ce41a8c6c10d"}, - {file = "optuna-4.0.0.tar.gz", hash = "sha256:844949f09e2a7353ab414e9cfd783cf0a647a65fc32a7236212ed6a37fe08973"}, + {file = "optuna-4.1.0-py3-none-any.whl", hash = "sha256:1763856b01c9238594d9d21db92611aac9980e9a6300bd658a7c6464712c704e"}, + {file = "optuna-4.1.0.tar.gz", hash = "sha256:b364e87a2038f9946c5e2770c130597538aac528b4a82c1cab5267f337ea7679"}, ] [package.dependencies] @@ -1848,11 +1850,11 @@ colorlog = "*" numpy = "*" packaging = ">=20.0" PyYAML = "*" -sqlalchemy = ">=1.3.0" +sqlalchemy = ">=1.4.2" tqdm = "*" [package.extras] -benchmark = ["asv (>=0.5.0)", "botorch", "cma", "virtualenv"] +benchmark = ["asv (>=0.5.0)", "cma", "virtualenv"] checking = ["black", "blackdoc", "flake8", "isort", "mypy", "mypy-boto3-s3", "types-PyYAML", "types-redis", "types-setuptools", "types-tqdm", "typing-extensions (>=3.10.0.0)"] document = ["ase", "cmaes (>=0.10.0)", "fvcore", "kaleido", "lightgbm", "matplotlib (!=3.6.0)", "pandas", "pillow", "plotly (>=4.9.0)", "scikit-learn", "sphinx", "sphinx-copybutton", "sphinx-gallery", "sphinx-rtd-theme (>=1.2.0)", "torch", "torchvision"] optional = ["boto3", "cmaes (>=0.10.0)", "google-cloud-storage", "matplotlib (!=3.6.0)", "pandas", "plotly (>=4.9.0)", "redis", "scikit-learn (>=0.24.2)", "scipy", "torch"] @@ -1860,13 +1862,13 @@ test = ["coverage", "fakeredis[lua]", "kaleido", "moto", "pytest", "scipy (>=1.9 [[package]] name = "packaging" -version = "24.1" +version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] [[package]] @@ -2219,19 +2221,19 @@ pybtex = ">=0.16" [[package]] name = "pydantic" -version = "2.9.2" +version = "2.10.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, - {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, + {file = "pydantic-2.10.2-py3-none-any.whl", hash = "sha256:cfb96e45951117c3024e6b67b25cdc33a3cb7b2fa62e239f7af1378358a1d99e"}, + {file = "pydantic-2.10.2.tar.gz", hash = "sha256:2bc2d7f17232e0841cbba4641e65ba1eb6fafb3a08de3a091ff3ce14a197c4fa"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.23.4" -typing-extensions = {version = ">=4.6.1", markers = "python_version < \"3.13\""} +pydantic-core = "2.27.1" +typing-extensions = ">=4.12.2" [package.extras] email = ["email-validator (>=2.0.0)"] @@ -2239,100 +2241,111 @@ timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.23.4" +version = "2.27.1" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, - {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, - {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, - {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, - {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, - {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, - {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, - {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, - {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, - {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, - {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, - {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, - {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, - {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, + {file = "pydantic_core-2.27.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:71a5e35c75c021aaf400ac048dacc855f000bdfed91614b4a726f7432f1f3d6a"}, + {file = "pydantic_core-2.27.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f82d068a2d6ecfc6e054726080af69a6764a10015467d7d7b9f66d6ed5afa23b"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:121ceb0e822f79163dd4699e4c54f5ad38b157084d97b34de8b232bcaad70278"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4603137322c18eaf2e06a4495f426aa8d8388940f3c457e7548145011bb68e05"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a33cd6ad9017bbeaa9ed78a2e0752c5e250eafb9534f308e7a5f7849b0b1bfb4"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15cc53a3179ba0fcefe1e3ae50beb2784dede4003ad2dfd24f81bba4b23a454f"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45d9c5eb9273aa50999ad6adc6be5e0ecea7e09dbd0d31bd0c65a55a2592ca08"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bf7b66ce12a2ac52d16f776b31d16d91033150266eb796967a7e4621707e4f6"}, + {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:655d7dd86f26cb15ce8a431036f66ce0318648f8853d709b4167786ec2fa4807"}, + {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:5556470f1a2157031e676f776c2bc20acd34c1990ca5f7e56f1ebf938b9ab57c"}, + {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f69ed81ab24d5a3bd93861c8c4436f54afdf8e8cc421562b0c7504cf3be58206"}, + {file = "pydantic_core-2.27.1-cp310-none-win32.whl", hash = "sha256:f5a823165e6d04ccea61a9f0576f345f8ce40ed533013580e087bd4d7442b52c"}, + {file = "pydantic_core-2.27.1-cp310-none-win_amd64.whl", hash = "sha256:57866a76e0b3823e0b56692d1a0bf722bffb324839bb5b7226a7dbd6c9a40b17"}, + {file = "pydantic_core-2.27.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac3b20653bdbe160febbea8aa6c079d3df19310d50ac314911ed8cc4eb7f8cb8"}, + {file = "pydantic_core-2.27.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a5a8e19d7c707c4cadb8c18f5f60c843052ae83c20fa7d44f41594c644a1d330"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f7059ca8d64fea7f238994c97d91f75965216bcbe5f695bb44f354893f11d52"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bed0f8a0eeea9fb72937ba118f9db0cb7e90773462af7962d382445f3005e5a4"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3cb37038123447cf0f3ea4c74751f6a9d7afef0eb71aa07bf5f652b5e6a132c"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84286494f6c5d05243456e04223d5a9417d7f443c3b76065e75001beb26f88de"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acc07b2cfc5b835444b44a9956846b578d27beeacd4b52e45489e93276241025"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4fefee876e07a6e9aad7a8c8c9f85b0cdbe7df52b8a9552307b09050f7512c7e"}, + {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:258c57abf1188926c774a4c94dd29237e77eda19462e5bb901d88adcab6af919"}, + {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:35c14ac45fcfdf7167ca76cc80b2001205a8d5d16d80524e13508371fb8cdd9c"}, + {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d1b26e1dff225c31897696cab7d4f0a315d4c0d9e8666dbffdb28216f3b17fdc"}, + {file = "pydantic_core-2.27.1-cp311-none-win32.whl", hash = "sha256:2cdf7d86886bc6982354862204ae3b2f7f96f21a3eb0ba5ca0ac42c7b38598b9"}, + {file = "pydantic_core-2.27.1-cp311-none-win_amd64.whl", hash = "sha256:3af385b0cee8df3746c3f406f38bcbfdc9041b5c2d5ce3e5fc6637256e60bbc5"}, + {file = "pydantic_core-2.27.1-cp311-none-win_arm64.whl", hash = "sha256:81f2ec23ddc1b476ff96563f2e8d723830b06dceae348ce02914a37cb4e74b89"}, + {file = "pydantic_core-2.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9cbd94fc661d2bab2bc702cddd2d3370bbdcc4cd0f8f57488a81bcce90c7a54f"}, + {file = "pydantic_core-2.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5f8c4718cd44ec1580e180cb739713ecda2bdee1341084c1467802a417fe0f02"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15aae984e46de8d376df515f00450d1522077254ef6b7ce189b38ecee7c9677c"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ba5e3963344ff25fc8c40da90f44b0afca8cfd89d12964feb79ac1411a260ac"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:992cea5f4f3b29d6b4f7f1726ed8ee46c8331c6b4eed6db5b40134c6fe1768bb"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0325336f348dbee6550d129b1627cb8f5351a9dc91aad141ffb96d4937bd9529"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7597c07fbd11515f654d6ece3d0e4e5093edc30a436c63142d9a4b8e22f19c35"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3bbd5d8cc692616d5ef6fbbbd50dbec142c7e6ad9beb66b78a96e9c16729b089"}, + {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:dc61505e73298a84a2f317255fcc72b710b72980f3a1f670447a21efc88f8381"}, + {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:e1f735dc43da318cad19b4173dd1ffce1d84aafd6c9b782b3abc04a0d5a6f5bb"}, + {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f4e5658dbffe8843a0f12366a4c2d1c316dbe09bb4dfbdc9d2d9cd6031de8aae"}, + {file = "pydantic_core-2.27.1-cp312-none-win32.whl", hash = "sha256:672ebbe820bb37988c4d136eca2652ee114992d5d41c7e4858cdd90ea94ffe5c"}, + {file = "pydantic_core-2.27.1-cp312-none-win_amd64.whl", hash = "sha256:66ff044fd0bb1768688aecbe28b6190f6e799349221fb0de0e6f4048eca14c16"}, + {file = "pydantic_core-2.27.1-cp312-none-win_arm64.whl", hash = "sha256:9a3b0793b1bbfd4146304e23d90045f2a9b5fd5823aa682665fbdaf2a6c28f3e"}, + {file = "pydantic_core-2.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f216dbce0e60e4d03e0c4353c7023b202d95cbaeff12e5fd2e82ea0a66905073"}, + {file = "pydantic_core-2.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a2e02889071850bbfd36b56fd6bc98945e23670773bc7a76657e90e6b6603c08"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42b0e23f119b2b456d07ca91b307ae167cc3f6c846a7b169fca5326e32fdc6cf"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:764be71193f87d460a03f1f7385a82e226639732214b402f9aa61f0d025f0737"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c00666a3bd2f84920a4e94434f5974d7bbc57e461318d6bb34ce9cdbbc1f6b2"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ccaa88b24eebc0f849ce0a4d09e8a408ec5a94afff395eb69baf868f5183107"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c65af9088ac534313e1963443d0ec360bb2b9cba6c2909478d22c2e363d98a51"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:206b5cf6f0c513baffaeae7bd817717140770c74528f3e4c3e1cec7871ddd61a"}, + {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:062f60e512fc7fff8b8a9d680ff0ddaaef0193dba9fa83e679c0c5f5fbd018bc"}, + {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:a0697803ed7d4af5e4c1adf1670af078f8fcab7a86350e969f454daf598c4960"}, + {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:58ca98a950171f3151c603aeea9303ef6c235f692fe555e883591103da709b23"}, + {file = "pydantic_core-2.27.1-cp313-none-win32.whl", hash = "sha256:8065914ff79f7eab1599bd80406681f0ad08f8e47c880f17b416c9f8f7a26d05"}, + {file = "pydantic_core-2.27.1-cp313-none-win_amd64.whl", hash = "sha256:ba630d5e3db74c79300d9a5bdaaf6200172b107f263c98a0539eeecb857b2337"}, + {file = "pydantic_core-2.27.1-cp313-none-win_arm64.whl", hash = "sha256:45cf8588c066860b623cd11c4ba687f8d7175d5f7ef65f7129df8a394c502de5"}, + {file = "pydantic_core-2.27.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:5897bec80a09b4084aee23f9b73a9477a46c3304ad1d2d07acca19723fb1de62"}, + {file = "pydantic_core-2.27.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d0165ab2914379bd56908c02294ed8405c252250668ebcb438a55494c69f44ab"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b9af86e1d8e4cfc82c2022bfaa6f459381a50b94a29e95dcdda8442d6d83864"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f6c8a66741c5f5447e047ab0ba7a1c61d1e95580d64bce852e3df1f895c4067"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a42d6a8156ff78981f8aa56eb6394114e0dedb217cf8b729f438f643608cbcd"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64c65f40b4cd8b0e049a8edde07e38b476da7e3aaebe63287c899d2cff253fa5"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdcf339322a3fae5cbd504edcefddd5a50d9ee00d968696846f089b4432cf78"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf99c8404f008750c846cb4ac4667b798a9f7de673ff719d705d9b2d6de49c5f"}, + {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f1edcea27918d748c7e5e4d917297b2a0ab80cad10f86631e488b7cddf76a36"}, + {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:159cac0a3d096f79ab6a44d77a961917219707e2a130739c64d4dd46281f5c2a"}, + {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:029d9757eb621cc6e1848fa0b0310310de7301057f623985698ed7ebb014391b"}, + {file = "pydantic_core-2.27.1-cp38-none-win32.whl", hash = "sha256:a28af0695a45f7060e6f9b7092558a928a28553366519f64083c63a44f70e618"}, + {file = "pydantic_core-2.27.1-cp38-none-win_amd64.whl", hash = "sha256:2d4567c850905d5eaaed2f7a404e61012a51caf288292e016360aa2b96ff38d4"}, + {file = "pydantic_core-2.27.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e9386266798d64eeb19dd3677051f5705bf873e98e15897ddb7d76f477131967"}, + {file = "pydantic_core-2.27.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4228b5b646caa73f119b1ae756216b59cc6e2267201c27d3912b592c5e323b60"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3dfe500de26c52abe0477dde16192ac39c98f05bf2d80e76102d394bd13854"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aee66be87825cdf72ac64cb03ad4c15ffef4143dbf5c113f64a5ff4f81477bf9"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b748c44bb9f53031c8cbc99a8a061bc181c1000c60a30f55393b6e9c45cc5bd"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ca038c7f6a0afd0b2448941b6ef9d5e1949e999f9e5517692eb6da58e9d44be"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e0bd57539da59a3e4671b90a502da9a28c72322a4f17866ba3ac63a82c4498e"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac6c2c45c847bbf8f91930d88716a0fb924b51e0c6dad329b793d670ec5db792"}, + {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b94d4ba43739bbe8b0ce4262bcc3b7b9f31459ad120fb595627eaeb7f9b9ca01"}, + {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:00e6424f4b26fe82d44577b4c842d7df97c20be6439e8e685d0d715feceb9fb9"}, + {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:38de0a70160dd97540335b7ad3a74571b24f1dc3ed33f815f0880682e6880131"}, + {file = "pydantic_core-2.27.1-cp39-none-win32.whl", hash = "sha256:7ccebf51efc61634f6c2344da73e366c75e735960b5654b63d7e6f69a5885fa3"}, + {file = "pydantic_core-2.27.1-cp39-none-win_amd64.whl", hash = "sha256:a57847b090d7892f123726202b7daa20df6694cbd583b67a592e856bff603d6c"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3fa80ac2bd5856580e242dbc202db873c60a01b20309c8319b5c5986fbe53ce6"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d950caa237bb1954f1b8c9227b5065ba6875ac9771bb8ec790d956a699b78676"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e4216e64d203e39c62df627aa882f02a2438d18a5f21d7f721621f7a5d3611d"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02a3d637bd387c41d46b002f0e49c52642281edacd2740e5a42f7017feea3f2c"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:161c27ccce13b6b0c8689418da3885d3220ed2eae2ea5e9b2f7f3d48f1d52c27"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:19910754e4cc9c63bc1c7f6d73aa1cfee82f42007e407c0f413695c2f7ed777f"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e173486019cc283dc9778315fa29a363579372fe67045e971e89b6365cc035ed"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:af52d26579b308921b73b956153066481f064875140ccd1dfd4e77db89dbb12f"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:981fb88516bd1ae8b0cbbd2034678a39dedc98752f264ac9bc5839d3923fa04c"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5fde892e6c697ce3e30c61b239330fc5d569a71fefd4eb6512fc6caec9dd9e2f"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:816f5aa087094099fff7edabb5e01cc370eb21aa1a1d44fe2d2aefdfb5599b31"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c10c309e18e443ddb108f0ef64e8729363adbfd92d6d57beec680f6261556f3"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98476c98b02c8e9b2eec76ac4156fd006628b1b2d0ef27e548ffa978393fd154"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3027001c28434e7ca5a6e1e527487051136aa81803ac812be51802150d880dd"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7699b1df36a48169cdebda7ab5a2bac265204003f153b4bd17276153d997670a"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1c39b07d90be6b48968ddc8c19e7585052088fd7ec8d568bb31ff64c70ae3c97"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:46ccfe3032b3915586e469d4972973f893c0a2bb65669194a5bdea9bacc088c2"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:62ba45e21cf6571d7f716d903b5b7b6d2617e2d5d67c0923dc47b9d41369f840"}, + {file = "pydantic_core-2.27.1.tar.gz", hash = "sha256:62a763352879b84aa31058fc931884055fd75089cccbd9d58bb6afd01141b235"}, ] [package.dependencies] @@ -2592,13 +2605,13 @@ files = [ [[package]] name = "qibo" -version = "0.2.12" +version = "0.2.13" description = "A framework for quantum computing with hardware acceleration." optional = false python-versions = "<3.13,>=3.9" files = [ - {file = "qibo-0.2.12-py3-none-any.whl", hash = "sha256:2e301747b31946d0737bfa621bf5b30b00c861926468ce36973cf61b2803f58a"}, - {file = "qibo-0.2.12.tar.gz", hash = "sha256:6849801eee77f928077a3e11b52cf549c34a9e9678a6d366d495686a6b21e788"}, + {file = "qibo-0.2.13-py3-none-any.whl", hash = "sha256:2c67234fdbdd7bfceed4df0fe8d3d9bede9354c4e18b2c061098b002c665e0f3"}, + {file = "qibo-0.2.13.tar.gz", hash = "sha256:3a815f2262b4d38d57127653df83dbbcbe7e941e8fb9a53c8a107f303b270dc4"}, ] [package.dependencies] @@ -2614,7 +2627,6 @@ tabulate = ">=0.9.0,<0.10.0" [package.extras] qulacs = ["qulacs (>=0.6.4,<0.7.0)"] -tensorflow = ["tensorflow (>=2.16.1,<3.0.0)"] torch = ["torch (>=2.1.1,<2.4)"] [[package]] @@ -2645,8 +2657,8 @@ zh = ["laboneq (==2.25.0)"] [package.source] type = "git" url = "https://github.com/qiboteam/qibolab.git" -reference = "HEAD" -resolved_reference = "ed8b3cccfee6eca0906f5ab8a69289f5bed1adc7" +reference = "pi_half" +resolved_reference = "88d0fd10cd5cbf685997f5acd26defb38b5e6927" [[package]] name = "recommonmark" @@ -2814,23 +2826,23 @@ stats = ["scipy (>=1.3)", "statsmodels (>=0.10)"] [[package]] name = "setuptools" -version = "75.2.0" +version = "75.6.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "setuptools-75.2.0-py3-none-any.whl", hash = "sha256:a7fcb66f68b4d9e8e66b42f9876150a3371558f98fa32222ffaa5bced76406f8"}, - {file = "setuptools-75.2.0.tar.gz", hash = "sha256:753bb6ebf1f465a1912e19ed1d41f403a79173a9acf66a42e7e6aec45c3c16ec"}, + {file = "setuptools-75.6.0-py3-none-any.whl", hash = "sha256:ce74b49e8f7110f9bf04883b730f4765b774ef3ef28f722cce7c273d253aaf7d"}, + {file = "setuptools-75.6.0.tar.gz", hash = "sha256:8199222558df7c86216af4f84c30e9b34a61d8ba19366cc914424cdbd28252f6"}, ] [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"] -core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.7.0)"] +core = ["importlib_metadata (>=6)", "jaraco.collections", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (>=1.12,<1.14)", "pytest-mypy"] [[package]] name = "six" @@ -3256,13 +3268,13 @@ files = [ [[package]] name = "tomli" -version = "2.0.2" +version = "2.1.0" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" files = [ - {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, - {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, + {file = "tomli-2.1.0-py3-none-any.whl", hash = "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391"}, + {file = "tomli-2.1.0.tar.gz", hash = "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8"}, ] [[package]] @@ -3278,20 +3290,21 @@ files = [ [[package]] name = "tqdm" -version = "4.66.5" +version = "4.67.1" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, - {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, + {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, + {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] -dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"] +discord = ["requests"] notebook = ["ipywidgets (>=6)"] slack = ["slack-sdk"] telegram = ["requests"] @@ -3408,92 +3421,87 @@ test = ["pytest"] [[package]] name = "wrapt" -version = "1.16.0" +version = "1.17.0" description = "Module for decorators, wrappers and monkey patching." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, + {file = "wrapt-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a0c23b8319848426f305f9cb0c98a6e32ee68a36264f45948ccf8e7d2b941f8"}, + {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1ca5f060e205f72bec57faae5bd817a1560fcfc4af03f414b08fa29106b7e2d"}, + {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e185ec6060e301a7e5f8461c86fb3640a7beb1a0f0208ffde7a65ec4074931df"}, + {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb90765dd91aed05b53cd7a87bd7f5c188fcd95960914bae0d32c5e7f899719d"}, + {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:879591c2b5ab0a7184258274c42a126b74a2c3d5a329df16d69f9cee07bba6ea"}, + {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fce6fee67c318fdfb7f285c29a82d84782ae2579c0e1b385b7f36c6e8074fffb"}, + {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0698d3a86f68abc894d537887b9bbf84d29bcfbc759e23f4644be27acf6da301"}, + {file = "wrapt-1.17.0-cp310-cp310-win32.whl", hash = "sha256:69d093792dc34a9c4c8a70e4973a3361c7a7578e9cd86961b2bbf38ca71e4e22"}, + {file = "wrapt-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:f28b29dc158ca5d6ac396c8e0a2ef45c4e97bb7e65522bfc04c989e6fe814575"}, + {file = "wrapt-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:74bf625b1b4caaa7bad51d9003f8b07a468a704e0644a700e936c357c17dd45a"}, + {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f2a28eb35cf99d5f5bd12f5dd44a0f41d206db226535b37b0c60e9da162c3ed"}, + {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81b1289e99cf4bad07c23393ab447e5e96db0ab50974a280f7954b071d41b489"}, + {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f2939cd4a2a52ca32bc0b359015718472d7f6de870760342e7ba295be9ebaf9"}, + {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6a9653131bda68a1f029c52157fd81e11f07d485df55410401f745007bd6d339"}, + {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4e4b4385363de9052dac1a67bfb535c376f3d19c238b5f36bddc95efae15e12d"}, + {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bdf62d25234290db1837875d4dceb2151e4ea7f9fff2ed41c0fde23ed542eb5b"}, + {file = "wrapt-1.17.0-cp311-cp311-win32.whl", hash = "sha256:5d8fd17635b262448ab8f99230fe4dac991af1dabdbb92f7a70a6afac8a7e346"}, + {file = "wrapt-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:92a3d214d5e53cb1db8b015f30d544bc9d3f7179a05feb8f16df713cecc2620a"}, + {file = "wrapt-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:89fc28495896097622c3fc238915c79365dd0ede02f9a82ce436b13bd0ab7569"}, + {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:875d240fdbdbe9e11f9831901fb8719da0bd4e6131f83aa9f69b96d18fae7504"}, + {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5ed16d95fd142e9c72b6c10b06514ad30e846a0d0917ab406186541fe68b451"}, + {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b956061b8db634120b58f668592a772e87e2e78bc1f6a906cfcaa0cc7991c1"}, + {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:daba396199399ccabafbfc509037ac635a6bc18510ad1add8fd16d4739cdd106"}, + {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4d63f4d446e10ad19ed01188d6c1e1bb134cde8c18b0aa2acfd973d41fcc5ada"}, + {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8a5e7cc39a45fc430af1aefc4d77ee6bad72c5bcdb1322cfde852c15192b8bd4"}, + {file = "wrapt-1.17.0-cp312-cp312-win32.whl", hash = "sha256:0a0a1a1ec28b641f2a3a2c35cbe86c00051c04fffcfcc577ffcdd707df3f8635"}, + {file = "wrapt-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:3c34f6896a01b84bab196f7119770fd8466c8ae3dfa73c59c0bb281e7b588ce7"}, + {file = "wrapt-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:714c12485aa52efbc0fc0ade1e9ab3a70343db82627f90f2ecbc898fdf0bb181"}, + {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da427d311782324a376cacb47c1a4adc43f99fd9d996ffc1b3e8529c4074d393"}, + {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba1739fb38441a27a676f4de4123d3e858e494fac05868b7a281c0a383c098f4"}, + {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e711fc1acc7468463bc084d1b68561e40d1eaa135d8c509a65dd534403d83d7b"}, + {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:140ea00c87fafc42739bd74a94a5a9003f8e72c27c47cd4f61d8e05e6dec8721"}, + {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:73a96fd11d2b2e77d623a7f26e004cc31f131a365add1ce1ce9a19e55a1eef90"}, + {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0b48554952f0f387984da81ccfa73b62e52817a4386d070c75e4db7d43a28c4a"}, + {file = "wrapt-1.17.0-cp313-cp313-win32.whl", hash = "sha256:498fec8da10e3e62edd1e7368f4b24aa362ac0ad931e678332d1b209aec93045"}, + {file = "wrapt-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:fd136bb85f4568fffca995bd3c8d52080b1e5b225dbf1c2b17b66b4c5fa02838"}, + {file = "wrapt-1.17.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:17fcf043d0b4724858f25b8826c36e08f9fb2e475410bece0ec44a22d533da9b"}, + {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4a557d97f12813dc5e18dad9fa765ae44ddd56a672bb5de4825527c847d6379"}, + {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0229b247b0fc7dee0d36176cbb79dbaf2a9eb7ecc50ec3121f40ef443155fb1d"}, + {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8425cfce27b8b20c9b89d77fb50e368d8306a90bf2b6eef2cdf5cd5083adf83f"}, + {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9c900108df470060174108012de06d45f514aa4ec21a191e7ab42988ff42a86c"}, + {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:4e547b447073fc0dbfcbff15154c1be8823d10dab4ad401bdb1575e3fdedff1b"}, + {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:914f66f3b6fc7b915d46c1cc424bc2441841083de01b90f9e81109c9759e43ab"}, + {file = "wrapt-1.17.0-cp313-cp313t-win32.whl", hash = "sha256:a4192b45dff127c7d69b3bdfb4d3e47b64179a0b9900b6351859f3001397dabf"}, + {file = "wrapt-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:4f643df3d4419ea3f856c5c3f40fec1d65ea2e89ec812c83f7767c8730f9827a"}, + {file = "wrapt-1.17.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:69c40d4655e078ede067a7095544bcec5a963566e17503e75a3a3e0fe2803b13"}, + {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f495b6754358979379f84534f8dd7a43ff8cff2558dcdea4a148a6e713a758f"}, + {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:baa7ef4e0886a6f482e00d1d5bcd37c201b383f1d314643dfb0367169f94f04c"}, + {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fc931382e56627ec4acb01e09ce66e5c03c384ca52606111cee50d931a342d"}, + {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8f8909cdb9f1b237786c09a810e24ee5e15ef17019f7cecb207ce205b9b5fcce"}, + {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ad47b095f0bdc5585bced35bd088cbfe4177236c7df9984b3cc46b391cc60627"}, + {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:948a9bd0fb2c5120457b07e59c8d7210cbc8703243225dbd78f4dfc13c8d2d1f"}, + {file = "wrapt-1.17.0-cp38-cp38-win32.whl", hash = "sha256:5ae271862b2142f4bc687bdbfcc942e2473a89999a54231aa1c2c676e28f29ea"}, + {file = "wrapt-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:f335579a1b485c834849e9075191c9898e0731af45705c2ebf70e0cd5d58beed"}, + {file = "wrapt-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d751300b94e35b6016d4b1e7d0e7bbc3b5e1751e2405ef908316c2a9024008a1"}, + {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7264cbb4a18dc4acfd73b63e4bcfec9c9802614572025bdd44d0721983fc1d9c"}, + {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33539c6f5b96cf0b1105a0ff4cf5db9332e773bb521cc804a90e58dc49b10578"}, + {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c30970bdee1cad6a8da2044febd824ef6dc4cc0b19e39af3085c763fdec7de33"}, + {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bc7f729a72b16ee21795a943f85c6244971724819819a41ddbaeb691b2dd85ad"}, + {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:6ff02a91c4fc9b6a94e1c9c20f62ea06a7e375f42fe57587f004d1078ac86ca9"}, + {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2dfb7cff84e72e7bf975b06b4989477873dcf160b2fd89959c629535df53d4e0"}, + {file = "wrapt-1.17.0-cp39-cp39-win32.whl", hash = "sha256:2399408ac33ffd5b200480ee858baa58d77dd30e0dd0cab6a8a9547135f30a88"}, + {file = "wrapt-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:4f763a29ee6a20c529496a20a7bcb16a73de27f5da6a843249c7047daf135977"}, + {file = "wrapt-1.17.0-py3-none-any.whl", hash = "sha256:d2c63b93548eda58abf5188e505ffed0229bf675f7c3090f8e36ad55b8cbc371"}, + {file = "wrapt-1.17.0.tar.gz", hash = "sha256:16187aa2317c731170a88ef35e8937ae0f533c402872c1ee5e6d079fcf320801"}, ] [[package]] name = "zipp" -version = "3.20.2" +version = "3.21.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"}, - {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"}, + {file = "zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931"}, + {file = "zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4"}, ] [package.extras] @@ -3511,4 +3519,4 @@ viz = ["pydot"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.12" -content-hash = "10c07eb600389aa3ce90c77e2fff18a070f255409ebe3333f117ee770c72ec5a" +content-hash = "86ba8f046c972803b78f07303891a3de1053d75534555d45fa3619cf2f03e18a" From 04cf0f95b96fee28c6294fe3e1cbfcc60bad00d3 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Wed, 27 Nov 2024 14:14:09 +0100 Subject: [PATCH 43/73] Update flipping.py --- src/qibocal/protocols/flipping.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index 65e274c80..6bff6f594 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -358,7 +358,7 @@ def _plot(data: FlippingData, target: QubitId, fit: FlippingResults = None): def _update(results: FlippingResults, platform: CalibrationPlatform, qubit: QubitId): - update.drive_amplitude(results.amplitude[qubit], rx90 = False, platform, qubit) + update.drive_amplitude(results.amplitude[qubit], platform, qubit, rx90=False) flipping = Routine(_acquisition, _fit, _plot, _update) From cf7308478fb0b40c5e7e22bd7561eddc24ba6588 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Wed, 27 Nov 2024 22:22:09 +0400 Subject: [PATCH 44/73] modify amplitude_sequence and length_sequence for rx90, add flipping for rx90 --- src/qibocal/protocols/flipping.py | 63 ++++++++++++++++++++++------- src/qibocal/protocols/rabi/utils.py | 14 ++++++- 2 files changed, 60 insertions(+), 17 deletions(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index 6bff6f594..9028a59f6 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -23,25 +23,45 @@ def flipping_sequence( - platform: CalibrationPlatform, qubit: QubitId, delta_amplitude: float, flips: int + platform: CalibrationPlatform, + qubit: QubitId, + delta_amplitude: float, + flips: int, + rx90: bool, ): """Pulse sequence for flipping experiment.""" sequence = PulseSequence() natives = platform.natives.single_qubit[qubit] - sequence |= natives.R(theta=np.pi / 2) - for _ in range(flips): + if rx90: + sequence |= natives.RX90() - qd_channel, rx_pulse = natives.RX()[0] + for _ in range(flips): + qd_channel, qd_pulse = natives.RX90()[0] - rx_detuned = update.replace( - rx_pulse, amplitude=rx_pulse.amplitude + delta_amplitude - ) - sequence.append((qd_channel, rx_detuned)) - sequence.append((qd_channel, rx_detuned)) + qd_detuned = update.replace( + qd_pulse, delta_amplitude=qd_pulse.amplitude + delta_amplitude + ) + + sequence.append((qd_channel, qd_detuned)) + sequence.append((qd_channel, qd_detuned)) + sequence.append((qd_channel, qd_detuned)) + sequence.append((qd_channel, qd_detuned)) + + else: + sequence |= natives.R(theta=np.pi / 2) - sequence |= natives.MZ() + for _ in range(flips): + qd_channel, qd_pulse = natives.RX()[0] + + qd_detuned = update.replace( + qd_pulse, amplitude=qd_pulse.amplitude + delta_amplitude + ) + sequence.append((qd_channel, qd_detuned)) + sequence.append((qd_channel, qd_detuned)) + + sequence |= natives.MZ() return sequence @@ -59,6 +79,8 @@ class FlippingParameters(Parameters): Defaults to ``False``.""" delta_amplitude: float = 0 """Amplitude detuning.""" + rx90: bool = False + """Calibration of native pi pulse, if true calibrates pi/2 pulse""" @dataclass @@ -75,6 +97,8 @@ class FlippingResults(Results): """Raw fitting output.""" chi2: dict[QubitId, list[float]] = field(default_factory=dict) """Chi squared estimate mean value and error. """ + rx90: bool + """Pi or Pi_half calibration""" FlippingType = np.dtype( @@ -90,10 +114,12 @@ class FlippingData(Data): """Resonator type.""" delta_amplitude: float """Amplitude detuning.""" - pi_pulse_amplitudes: dict[QubitId, float] - """Pi pulse amplitudes for each qubit.""" + pulse_amplitudes: dict[QubitId, float] + """Pulse amplitudes for each qubit.""" data: dict[QubitId, npt.NDArray[FlippingType]] = field(default_factory=dict) """Raw data acquired.""" + rx90: bool + """Pi or Pi_half calibration""" def _acquisition( @@ -120,10 +146,11 @@ def _acquisition( data = FlippingData( resonator_type=platform.resonator_type, delta_amplitude=params.delta_amplitude, - pi_pulse_amplitudes={ + pulse_amplitudes={ qubit: platform.natives.single_qubit[qubit].RX[0][1].amplitude - for qubit in targets + for qubit in targets # check this }, + rx90=params.rx90, ) options = { @@ -144,6 +171,7 @@ def _acquisition( qubit=qubit, delta_amplitude=params.delta_amplitude, flips=flips, + rx90=params.rx90, ) sequences.append(sequence) @@ -222,6 +250,10 @@ def _fit(data: FlippingData) -> FlippingResults: perr = np.sqrt(np.diag(perr)).tolist() popt = popt.tolist() correction = popt[2] / 2 + + if data.rx90: + correction = correction / 2 + corrected_amplitudes[qubit] = [ float(detuned_pi_pulse_amplitude * np.pi / (np.pi + correction)), float( @@ -268,6 +300,7 @@ def _fit(data: FlippingData) -> FlippingResults: delta_amplitude_detuned, fitted_parameters, chi2, + rx90=data.rx90, ) @@ -358,7 +391,7 @@ def _plot(data: FlippingData, target: QubitId, fit: FlippingResults = None): def _update(results: FlippingResults, platform: CalibrationPlatform, qubit: QubitId): - update.drive_amplitude(results.amplitude[qubit], platform, qubit, rx90=False) + update.drive_amplitude(results.amplitude[qubit], results.rx90, platform, qubit) flipping = Routine(_acquisition, _fit, _plot, _update) diff --git a/src/qibocal/protocols/rabi/utils.py b/src/qibocal/protocols/rabi/utils.py index 374ac129d..f87465ea5 100644 --- a/src/qibocal/protocols/rabi/utils.py +++ b/src/qibocal/protocols/rabi/utils.py @@ -236,7 +236,12 @@ def sequence_amplitude( durations = {} for q in targets: natives = platform.natives.single_qubit[q] - qd_channel, qd_pulse = natives.RX()[0] + + if rx90: + qd_channel, qd_pulse = natives.RX90()[0] + else: + qd_channel, qd_pulse = natives.RX()[0] + ro_channel, ro_pulse = natives.MZ()[0] if params.pulse_length is not None: @@ -271,7 +276,12 @@ def sequence_length( amplitudes = {} for q in targets: natives = platform.natives.single_qubit[q] - qd_channel, qd_pulse = natives.RX()[0] + + if rx90: + qd_channel, qd_pulse = natives.RX90()[0] + else: + qd_channel, qd_pulse = natives.RX()[0] + ro_channel, ro_pulse = natives.MZ()[0] if params.pulse_amplitude is not None: From f6bfcaf4bb9cb323120b13e670f4de240ebff9af Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Wed, 27 Nov 2024 19:33:05 +0100 Subject: [PATCH 45/73] Update flipping.py --- src/qibocal/protocols/flipping.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index 9028a59f6..a8cb9bf21 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -147,8 +147,11 @@ def _acquisition( resonator_type=platform.resonator_type, delta_amplitude=params.delta_amplitude, pulse_amplitudes={ - qubit: platform.natives.single_qubit[qubit].RX[0][1].amplitude - for qubit in targets # check this + for qubit in targets: + if rx90: + qubit: platform.natives.single_qubit[qubit].RX90[0][1].amplitude + else: + qubit: platform.natives.single_qubit[qubit].RX[0][1].amplitude }, rx90=params.rx90, ) From 454f5b533b938d7dbcd173d0fa8b5c7f1cfdb5fc Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Wed, 27 Nov 2024 19:40:29 +0100 Subject: [PATCH 46/73] Update flipping.py --- src/qibocal/protocols/flipping.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index a8cb9bf21..4132a9e08 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -147,11 +147,11 @@ def _acquisition( resonator_type=platform.resonator_type, delta_amplitude=params.delta_amplitude, pulse_amplitudes={ - for qubit in targets: - if rx90: - qubit: platform.natives.single_qubit[qubit].RX90[0][1].amplitude - else: - qubit: platform.natives.single_qubit[qubit].RX[0][1].amplitude + if rx90: + qubit: platform.natives.single_qubit[qubit].RX90[0][1].amplitude + else: + qubit: platform.natives.single_qubit[qubit].RX[0][1].amplitude + for qubit in targets }, rx90=params.rx90, ) From 47a22b5550ed98dc80b393072d4c1778b7808996 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Wed, 27 Nov 2024 19:46:35 +0100 Subject: [PATCH 47/73] Update flipping.py --- src/qibocal/protocols/flipping.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index 4132a9e08..f0811cb3b 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -146,13 +146,14 @@ def _acquisition( data = FlippingData( resonator_type=platform.resonator_type, delta_amplitude=params.delta_amplitude, - pulse_amplitudes={ - if rx90: - qubit: platform.natives.single_qubit[qubit].RX90[0][1].amplitude - else: - qubit: platform.natives.single_qubit[qubit].RX[0][1].amplitude + pulse_amplitudes = { + qubit: ( + platform.natives.single_qubit[qubit].RX90[0][1].amplitude + if rx90 + else platform.natives.single_qubit[qubit].RX[0][1].amplitude + ) for qubit in targets - }, + } rx90=params.rx90, ) From 96dd44ef3f843845bd2d65df1fe3f5cd5ff88f93 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Wed, 27 Nov 2024 19:50:31 +0100 Subject: [PATCH 48/73] Update flipping.py --- src/qibocal/protocols/flipping.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index f0811cb3b..d1c79de3d 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -152,7 +152,7 @@ def _acquisition( if rx90 else platform.natives.single_qubit[qubit].RX[0][1].amplitude ) - for qubit in targets + for qubit in targets, } rx90=params.rx90, ) From 07a4bcdbecc1f7efa40f11636fed15c54f5bdffe Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Wed, 27 Nov 2024 19:51:19 +0100 Subject: [PATCH 49/73] Update flipping.py --- src/qibocal/protocols/flipping.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index d1c79de3d..61d76cbcf 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -152,8 +152,8 @@ def _acquisition( if rx90 else platform.natives.single_qubit[qubit].RX[0][1].amplitude ) - for qubit in targets, - } + for qubit in targets + }, rx90=params.rx90, ) From e8cea9abf8a6efc4b747eae06a557f2c11bdd28d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 27 Nov 2024 18:52:01 +0000 Subject: [PATCH 50/73] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/qibocal/protocols/flipping.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index 61d76cbcf..a54ce8631 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -146,7 +146,7 @@ def _acquisition( data = FlippingData( resonator_type=platform.resonator_type, delta_amplitude=params.delta_amplitude, - pulse_amplitudes = { + pulse_amplitudes={ qubit: ( platform.natives.single_qubit[qubit].RX90[0][1].amplitude if rx90 From 4052755c61bdcb41c40d6983b9036fd61732ca15 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Wed, 27 Nov 2024 20:01:02 +0100 Subject: [PATCH 51/73] Update flipping.py --- src/qibocal/protocols/flipping.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index a54ce8631..0a8c24a6a 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -149,7 +149,7 @@ def _acquisition( pulse_amplitudes={ qubit: ( platform.natives.single_qubit[qubit].RX90[0][1].amplitude - if rx90 + if params.rx90 else platform.natives.single_qubit[qubit].RX[0][1].amplitude ) for qubit in targets From 12fedb5c01bc218e6ab3026220c43f7257a91873 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Thu, 28 Nov 2024 11:14:51 +0400 Subject: [PATCH 52/73] fix FlippingResults and FlippingData class definition --- src/qibocal/protocols/flipping.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index 0a8c24a6a..668f0789a 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -95,10 +95,10 @@ class FlippingResults(Results): """Difference in amplitude between detuned value and fit.""" fitted_parameters: dict[QubitId, dict[str, float]] """Raw fitting output.""" - chi2: dict[QubitId, list[float]] = field(default_factory=dict) - """Chi squared estimate mean value and error. """ rx90: bool """Pi or Pi_half calibration""" + chi2: dict[QubitId, list[float]] = field(default_factory=dict) + """Chi squared estimate mean value and error. """ FlippingType = np.dtype( @@ -116,10 +116,10 @@ class FlippingData(Data): """Amplitude detuning.""" pulse_amplitudes: dict[QubitId, float] """Pulse amplitudes for each qubit.""" - data: dict[QubitId, npt.NDArray[FlippingType]] = field(default_factory=dict) - """Raw data acquired.""" rx90: bool """Pi or Pi_half calibration""" + data: dict[QubitId, npt.NDArray[FlippingType]] = field(default_factory=dict) + """Raw data acquired.""" def _acquisition( @@ -303,8 +303,8 @@ def _fit(data: FlippingData) -> FlippingResults: delta_amplitude, delta_amplitude_detuned, fitted_parameters, + data.rx90, chi2, - rx90=data.rx90, ) From b58e13aef99499dfc9d9a396295aa3988944d1b6 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Thu, 28 Nov 2024 11:33:18 +0400 Subject: [PATCH 53/73] fix globalbackends error: downgrade qibo --- poetry.lock | 45 ++++++++++++++++++++++++++++++++++++++------- pyproject.toml | 2 +- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/poetry.lock b/poetry.lock index 1d9e5a27c..76f024803 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2605,13 +2605,13 @@ files = [ [[package]] name = "qibo" -version = "0.2.13" +version = "0.2.12" description = "A framework for quantum computing with hardware acceleration." optional = false python-versions = "<3.13,>=3.9" files = [ - {file = "qibo-0.2.13-py3-none-any.whl", hash = "sha256:2c67234fdbdd7bfceed4df0fe8d3d9bede9354c4e18b2c061098b002c665e0f3"}, - {file = "qibo-0.2.13.tar.gz", hash = "sha256:3a815f2262b4d38d57127653df83dbbcbe7e941e8fb9a53c8a107f303b270dc4"}, + {file = "qibo-0.2.12-py3-none-any.whl", hash = "sha256:2e301747b31946d0737bfa621bf5b30b00c861926468ce36973cf61b2803f58a"}, + {file = "qibo-0.2.12.tar.gz", hash = "sha256:6849801eee77f928077a3e11b52cf549c34a9e9678a6d366d495686a6b21e788"}, ] [package.dependencies] @@ -2627,6 +2627,7 @@ tabulate = ">=0.9.0,<0.10.0" [package.extras] qulacs = ["qulacs (>=0.6.4,<0.7.0)"] +tensorflow = ["tensorflow (>=2.16.1,<3.0.0)"] torch = ["torch (>=2.1.1,<2.4)"] [[package]] @@ -3268,13 +3269,43 @@ files = [ [[package]] name = "tomli" -version = "2.1.0" +version = "2.2.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" files = [ - {file = "tomli-2.1.0-py3-none-any.whl", hash = "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391"}, - {file = "tomli-2.1.0.tar.gz", hash = "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] [[package]] @@ -3519,4 +3550,4 @@ viz = ["pydot"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.12" -content-hash = "86ba8f046c972803b78f07303891a3de1053d75534555d45fa3619cf2f03e18a" +content-hash = "76d1bb8fcbfbca4bb3ffb4fdd2347afd73b76128419a1dad77e0d77d5f5c1884" diff --git a/pyproject.toml b/pyproject.toml index 21e81a125..a11bf355b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ classifiers = [ [tool.poetry.dependencies] python = ">=3.9,<3.12" qibolab = { git = "https://github.com/qiboteam/qibolab.git", branch = "pi_half" } -qibo = "^0.2.12" +qibo = "0.2.12" numpy = "^1.26.4" scipy = "^1.10.1" pandas = { version = "^2.2.2", extras = ["html"] } From 32308e27a96f84d27999cfc082f2f01cdcf6131b Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Thu, 28 Nov 2024 09:46:19 +0100 Subject: [PATCH 54/73] Update flipping.rst --- doc/source/protocols/flipping.rst | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/doc/source/protocols/flipping.rst b/doc/source/protocols/flipping.rst index c210af0c3..39425c558 100644 --- a/doc/source/protocols/flipping.rst +++ b/doc/source/protocols/flipping.rst @@ -1,8 +1,8 @@ Flipping ======== -The flipping experiment corrects the amplitude in the qubit drive pulse. In this experiment, -we applying an :math:`R_x(\pi/2)` rotation followed by :math:`N` flips (two :math:`R_x(\pi)` rotations) +The flipping experiment corrects the amplitude in the qubit drive pulse for :math:`R_x(\pi)` rotations. In this experiment, +we apply an :math:`R_x(\pi/2)` rotation followed by :math:`N` flips (two :math:`R_x(\pi)` rotations) and we measure the qubit state. The first :math:`R_x(\pi/2)` is necessary to discriminate the over rotations and under rotations of the :math:`R_x(\pi)` pulse: without it the difference between the two cases is just a global phase, i.e., the @@ -10,7 +10,9 @@ probabilities are the same. With the :math:`R_x(\pi/2)` pulse, in case of under after the initial flip, in the over rotations one the final state will be closer to :math:`\ket{1}`. By fitting the resulting data with a sinusoidal function, we can determine the delta amplitude, which allows us to refine the -:math:`\pi` pulse amplitue. +:math:`\pi` pulse amplitude. + +We implemented also a version of the flipping protocol to calibrate the drive pulse amplitude of the :math:`R_x(\pi/2)` rotations, in this case each :math:`R_x(\pi)` rotation is replaced by two math:`R_x(\pi/2)` rotations. Parameters ^^^^^^^^^^ @@ -35,6 +37,20 @@ The expected output is the following: .. image:: flipping.png +If the same experiment is run setting the `rx90: True` the flipping is performed to calibrate the amplitude of the :math:`R_x(\pi/2)` rotation + +.. code-block:: yaml + + - id: flipping + operation: flipping + parameters: + delta_amplitude: 0.05 + nflips_max: 30 + nflips_step: 1 + rx90: True + +The expected output is the following: + Requirements ^^^^^^^^^^^^ From 57904a1e1534b4dbb4da1a77c08bb10eec1feedf Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 08:46:31 +0000 Subject: [PATCH 55/73] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- doc/source/protocols/flipping.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/protocols/flipping.rst b/doc/source/protocols/flipping.rst index 39425c558..5ac42e9bb 100644 --- a/doc/source/protocols/flipping.rst +++ b/doc/source/protocols/flipping.rst @@ -37,7 +37,7 @@ The expected output is the following: .. image:: flipping.png -If the same experiment is run setting the `rx90: True` the flipping is performed to calibrate the amplitude of the :math:`R_x(\pi/2)` rotation +If the same experiment is run setting the `rx90: True` the flipping is performed to calibrate the amplitude of the :math:`R_x(\pi/2)` rotation .. code-block:: yaml From 3b6769d10153df6a438c322c1f65ecefb9e39748 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Thu, 28 Nov 2024 13:16:18 +0400 Subject: [PATCH 56/73] fix error in _fit method --- src/qibocal/protocols/flipping.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index 668f0789a..05ceff164 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -229,9 +229,7 @@ def _fit(data: FlippingData) -> FlippingResults: chi2 = {} for qubit in qubits: qubit_data = data[qubit] - detuned_pi_pulse_amplitude = ( - data.pi_pulse_amplitudes[qubit] + data.delta_amplitude - ) + detuned_pulse_amplitude = data.pulse_amplitudes[qubit] + data.delta_amplitude y = qubit_data.prob x = qubit_data.flips @@ -259,9 +257,9 @@ def _fit(data: FlippingData) -> FlippingResults: correction = correction / 2 corrected_amplitudes[qubit] = [ - float(detuned_pi_pulse_amplitude * np.pi / (np.pi + correction)), + float(detuned_pulse_amplitude * np.pi / (np.pi + correction)), float( - detuned_pi_pulse_amplitude + detuned_pulse_amplitude * np.pi * 1 / (np.pi + correction) ** 2 @@ -273,11 +271,9 @@ def _fit(data: FlippingData) -> FlippingResults: fitted_parameters[qubit] = popt delta_amplitude_detuned[qubit] = [ - -correction * detuned_pi_pulse_amplitude / (np.pi + correction), + -correction * detuned_pulse_amplitude / (np.pi + correction), np.abs( - np.pi - * detuned_pi_pulse_amplitude - * np.power(np.pi + correction, -2) + np.pi * detuned_pulse_amplitude * np.power(np.pi + correction, -2) ) * perr[2] / 2, From 022240d637bf825310a665151d8e7b3214136e72 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Thu, 28 Nov 2024 18:23:05 +0400 Subject: [PATCH 57/73] fix tests for rx90 --- poetry.lock | 10 +++++----- tests/test_protocols.py | 19 +++++++++++++++++-- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/poetry.lock b/poetry.lock index 76f024803..aac92e3dc 100644 --- a/poetry.lock +++ b/poetry.lock @@ -970,13 +970,13 @@ lxml = ["lxml"] [[package]] name = "huggingface-hub" -version = "0.26.2" +version = "0.26.3" description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" optional = false python-versions = ">=3.8.0" files = [ - {file = "huggingface_hub-0.26.2-py3-none-any.whl", hash = "sha256:98c2a5a8e786c7b2cb6fdeb2740893cba4d53e312572ed3d8afafda65b128c46"}, - {file = "huggingface_hub-0.26.2.tar.gz", hash = "sha256:b100d853465d965733964d123939ba287da60a547087783ddff8a323f340332b"}, + {file = "huggingface_hub-0.26.3-py3-none-any.whl", hash = "sha256:e66aa99e569c2d5419240a9e553ad07245a5b1300350bfbc5a4945cf7432991b"}, + {file = "huggingface_hub-0.26.3.tar.gz", hash = "sha256:90e1fe62ffc26757a073aaad618422b899ccf9447c2bba8c902a90bef5b42e1d"}, ] [package.dependencies] @@ -2650,7 +2650,7 @@ bluefors = ["pyyaml (>=6.0.2,<7.0.0)"] emulator = ["qutip (>=5.0.2,<6.0.0)"] los = ["pyvisa-py (==0.5.3)", "qcodes (>=0.37.0,<0.38.0)", "qcodes_contrib_drivers (==0.18.0)"] qblox = ["pyvisa-py (==0.5.3)", "qblox-instruments (==0.12.0)", "qcodes (>=0.37.0,<0.38.0)", "qcodes_contrib_drivers (==0.18.0)"] -qm = ["qm-qua (==1.1.6)", "qualang-tools (>=0.15.0,<0.16.0)"] +qm = ["qm-qua (==1.2.1)", "qualang-tools (>=0.15.0,<0.16.0)"] rfsoc = ["qibosoq (>=0.1.2,<0.2)"] twpa = ["pyvisa-py (==0.5.3)", "qcodes (>=0.37.0,<0.38.0)", "qcodes_contrib_drivers (==0.18.0)"] zh = ["laboneq (==2.25.0)"] @@ -2659,7 +2659,7 @@ zh = ["laboneq (==2.25.0)"] type = "git" url = "https://github.com/qiboteam/qibolab.git" reference = "pi_half" -resolved_reference = "88d0fd10cd5cbf685997f5acd26defb38b5e6927" +resolved_reference = "7579f0c85b6ed2ac4a9729e016f57dc0b0c42ff0" [[package]] name = "recommonmark" diff --git a/tests/test_protocols.py b/tests/test_protocols.py index 4e2109cc2..0d4863ccb 100644 --- a/tests/test_protocols.py +++ b/tests/test_protocols.py @@ -156,12 +156,27 @@ def test_fit_command(runcard, update, tmp_path): def test_extract_rabi(): - assert extract_rabi(RabiAmplitudeData()) == ( + assert extract_rabi(RabiAmplitudeData(rx90=False)) == ( "amp", "Amplitude [dimensionless]", rabi_amplitude_function, ) - assert extract_rabi(RabiLengthData()) == ( + assert extract_rabi(RabiLengthData(rx90=False)) == ( + "length", + "Time [ns]", + rabi_length_function, + ) + with pytest.raises(RuntimeError): + extract_rabi(RabiAmplitudeEFData) + + +def test_extract_rabi(): + assert extract_rabi(RabiAmplitudeData(rx90=True)) == ( + "amp", + "Amplitude [dimensionless]", + rabi_amplitude_function, + ) + assert extract_rabi(RabiLengthData(rx90=True)) == ( "length", "Time [ns]", rabi_length_function, From 8b0995ddee0be879dfbde66b37891bd2877ff4bc Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Thu, 28 Nov 2024 15:37:27 +0100 Subject: [PATCH 58/73] Update flipping.rst --- doc/source/protocols/flipping.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/source/protocols/flipping.rst b/doc/source/protocols/flipping.rst index 5ac42e9bb..9503e5349 100644 --- a/doc/source/protocols/flipping.rst +++ b/doc/source/protocols/flipping.rst @@ -49,8 +49,6 @@ If the same experiment is run setting the `rx90: True` the flipping is performed nflips_step: 1 rx90: True -The expected output is the following: - Requirements ^^^^^^^^^^^^ From 98bcf1d2293066b73743ca16d47daa85d004834d Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Fri, 29 Nov 2024 16:03:10 +0400 Subject: [PATCH 59/73] modify plot function in utils to have the correct name of the pulse calibrated --- src/qibocal/protocols/rabi/amplitude.py | 2 +- .../protocols/rabi/amplitude_frequency.py | 8 +++++++- .../rabi/amplitude_frequency_signal.py | 7 ++++++- .../protocols/rabi/amplitude_signal.py | 2 +- src/qibocal/protocols/rabi/ef.py | 2 +- src/qibocal/protocols/rabi/length.py | 2 +- .../protocols/rabi/length_frequency.py | 7 ++++++- .../protocols/rabi/length_frequency_signal.py | 7 ++++++- src/qibocal/protocols/rabi/length_signal.py | 2 +- src/qibocal/protocols/rabi/utils.py | 20 +++++++++++++++---- 10 files changed, 46 insertions(+), 13 deletions(-) diff --git a/src/qibocal/protocols/rabi/amplitude.py b/src/qibocal/protocols/rabi/amplitude.py index eeebb5a1d..bf38d443c 100644 --- a/src/qibocal/protocols/rabi/amplitude.py +++ b/src/qibocal/protocols/rabi/amplitude.py @@ -137,7 +137,7 @@ def _fit(data: RabiAmplitudeData) -> RabiAmplitudeResults: def _plot(data: RabiAmplitudeData, target: QubitId, fit: RabiAmplitudeResults = None): """Plotting function for RabiAmplitude.""" - return utils.plot_probabilities(data, target, fit) + return utils.plot_probabilities(data, target, fit, data.rx90) def _update( diff --git a/src/qibocal/protocols/rabi/amplitude_frequency.py b/src/qibocal/protocols/rabi/amplitude_frequency.py index b45659074..0050f9e28 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency.py @@ -235,10 +235,16 @@ def _plot( row=1, col=1, ) + + if data.rx90: + pulse_name = "Pi-half pulse" + else: + pulse_name = "Pi pulse" + fitting_report = table_html( table_dict( target, - ["Optimal rabi frequency", "Pi-pulse amplitude"], + ["Optimal rabi frequency", f"{pulse_name} amplitude"], [ fit.frequency[target], f"{fit.amplitude[target][0]:.6f} +- {fit.amplitude[target][1]:.6f} [a.u.]", diff --git a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py index 5f5851a98..8c23b0dd3 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py @@ -279,10 +279,15 @@ def _plot( row=1, col=2, ) + if data.rx90: + pulse_name = "Pi-half pulse" + else: + pulse_name = "Pi pulse" + fitting_report = table_html( table_dict( target, - ["Optimal rabi frequency", "Pi-pulse amplitude"], + ["Optimal rabi frequency", f"{pulse_name} amplitude"], [ fit.frequency[target], f"{fit.amplitude[target]:.6f} [a.u]", diff --git a/src/qibocal/protocols/rabi/amplitude_signal.py b/src/qibocal/protocols/rabi/amplitude_signal.py index 5e5342d58..587e0e19c 100644 --- a/src/qibocal/protocols/rabi/amplitude_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_signal.py @@ -158,7 +158,7 @@ def _plot( fit: RabiAmplitudeSignalResults = None, ): """Plotting function for RabiAmplitude.""" - return utils.plot(data, target, fit) + return utils.plot(data, target, fit, data.rx90) def _update( diff --git a/src/qibocal/protocols/rabi/ef.py b/src/qibocal/protocols/rabi/ef.py index c47b52ab6..541a0f16a 100644 --- a/src/qibocal/protocols/rabi/ef.py +++ b/src/qibocal/protocols/rabi/ef.py @@ -115,7 +115,7 @@ def _plot( data: RabiAmplitudeEFData, target: QubitId, fit: RabiAmplitudeEFResults = None ): """Plotting function for RabiAmplitude.""" - figures, report = utils.plot(data, target, fit) + figures, report = utils.plot(data, target, fit, data.rx90) if report is not None: report = report.replace("Pi pulse", "Pi pulse 12") return figures, report diff --git a/src/qibocal/protocols/rabi/length.py b/src/qibocal/protocols/rabi/length.py index 75de4f68c..7f64770d6 100644 --- a/src/qibocal/protocols/rabi/length.py +++ b/src/qibocal/protocols/rabi/length.py @@ -167,7 +167,7 @@ def _update(results: RabiLengthResults, platform: CalibrationPlatform, target: Q def _plot(data: RabiLengthData, fit: RabiLengthResults, target: QubitId): """Plotting function for RabiLength experiment.""" - return utils.plot_probabilities(data, target, fit) + return utils.plot_probabilities(data, target, fit, data.rx90) rabi_length = Routine(_acquisition, _fit, _plot, _update) diff --git a/src/qibocal/protocols/rabi/length_frequency.py b/src/qibocal/protocols/rabi/length_frequency.py index 3ac946aed..cb1ab2ff4 100644 --- a/src/qibocal/protocols/rabi/length_frequency.py +++ b/src/qibocal/protocols/rabi/length_frequency.py @@ -246,10 +246,15 @@ def _plot( row=1, col=1, ) + if data.rx90: + pulse_name = "Pi-half pulse" + else: + pulse_name = "Pi pulse" + fitting_report = table_html( table_dict( target, - ["Optimal rabi frequency", "Pi-pulse duration"], + ["Optimal rabi frequency", f"{pulse_name} duration"], [ fit.frequency[target], f"{fit.length[target][0]:.2f} +- {fit.length[target][1]:.2f} ns", diff --git a/src/qibocal/protocols/rabi/length_frequency_signal.py b/src/qibocal/protocols/rabi/length_frequency_signal.py index 7d590d04e..1d62149af 100644 --- a/src/qibocal/protocols/rabi/length_frequency_signal.py +++ b/src/qibocal/protocols/rabi/length_frequency_signal.py @@ -288,10 +288,15 @@ def _plot( row=1, col=2, ) + if data.rx90: + pulse_name = "Pi-half pulse" + else: + pulse_name = "Pi pulse" + fitting_report = table_html( table_dict( target, - ["Optimal rabi frequency", "Pi-pulse duration"], + ["Optimal rabi frequency", f"{pulse_name} duration"], [ fit.frequency[target], f"{fit.length[target]:.2f} ns", diff --git a/src/qibocal/protocols/rabi/length_signal.py b/src/qibocal/protocols/rabi/length_signal.py index 5c8ad11b5..3e7db1afa 100644 --- a/src/qibocal/protocols/rabi/length_signal.py +++ b/src/qibocal/protocols/rabi/length_signal.py @@ -172,7 +172,7 @@ def _update( def _plot(data: RabiLengthSignalData, fit: RabiLengthSignalResults, target: QubitId): """Plotting function for RabiLength experiment.""" - return utils.plot(data, target, fit) + return utils.plot(data, target, fit, data.rx90) rabi_length_signal = Routine(_acquisition, _fit, _plot, _update) diff --git a/src/qibocal/protocols/rabi/utils.py b/src/qibocal/protocols/rabi/utils.py index f87465ea5..636f1f04f 100644 --- a/src/qibocal/protocols/rabi/utils.py +++ b/src/qibocal/protocols/rabi/utils.py @@ -32,7 +32,7 @@ def rabi_length_function(x, offset, amplitude, period, phase, t2_inv): ) -def plot(data, qubit, fit): +def plot(data, qubit, fit, rx90): quantity, title, fitting = extract_rabi(data) figures = [] fitting_report = "" @@ -94,11 +94,15 @@ def plot(data, qubit, fit): row=1, col=1, ) + if rx90: + pulse_name = "Pi-half pulse" + else: + pulse_name = "Pi pulse" fitting_report = table_html( table_dict( qubit, - ["Pi pulse amplitude [a.u.]", "Pi pulse length [ns]"], + [f"{pulse_name} amplitude [a.u.]", f"{pulse_name} length [ns]"], [np.round(fit.amplitude[qubit], 3), np.round(fit.length[qubit], 3)], ) ) @@ -116,7 +120,7 @@ def plot(data, qubit, fit): return figures, fitting_report -def plot_probabilities(data, qubit, fit): +def plot_probabilities(data, qubit, fit, rx90): quantity, title, fitting = extract_rabi(data) figures = [] fitting_report = "" @@ -165,11 +169,19 @@ def plot_probabilities(data, qubit, fit): marker_color="rgb(255, 130, 67)", ), ) + if rx90: + pulse_name = "Pi-half pulse" + else: + pulse_name = "Pi pulse" fitting_report = table_html( table_dict( qubit, - ["Pi pulse amplitude [a.u.]", "Pi pulse length [ns]", "chi2 reduced"], + [ + f"{pulse_name} amplitude [a.u.]", + f"{pulse_name} length [ns]", + "chi2 reduced", + ], [fit.amplitude[qubit], fit.length[qubit], fit.chi2[qubit]], display_error=True, ) From 7b907ae3396da4d2d60308556cc2370c6e4cc896 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Sat, 30 Nov 2024 10:21:57 +0400 Subject: [PATCH 60/73] improve code for printing pulse names on reports --- src/qibocal/protocols/rabi/amplitude_frequency.py | 6 +----- .../protocols/rabi/amplitude_frequency_signal.py | 5 +---- src/qibocal/protocols/rabi/length_frequency.py | 5 +---- src/qibocal/protocols/rabi/length_frequency_signal.py | 5 +---- src/qibocal/protocols/rabi/utils.py | 10 ++-------- 5 files changed, 6 insertions(+), 25 deletions(-) diff --git a/src/qibocal/protocols/rabi/amplitude_frequency.py b/src/qibocal/protocols/rabi/amplitude_frequency.py index 0050f9e28..ec7f03b05 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency.py @@ -235,11 +235,7 @@ def _plot( row=1, col=1, ) - - if data.rx90: - pulse_name = "Pi-half pulse" - else: - pulse_name = "Pi pulse" + pulse_name = "Pi-half pulse" if data.rx90 else "Pi pulse" fitting_report = table_html( table_dict( diff --git a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py index 8c23b0dd3..a03b30658 100644 --- a/src/qibocal/protocols/rabi/amplitude_frequency_signal.py +++ b/src/qibocal/protocols/rabi/amplitude_frequency_signal.py @@ -279,10 +279,7 @@ def _plot( row=1, col=2, ) - if data.rx90: - pulse_name = "Pi-half pulse" - else: - pulse_name = "Pi pulse" + pulse_name = "Pi-half pulse" if data.rx90 else "Pi pulse" fitting_report = table_html( table_dict( diff --git a/src/qibocal/protocols/rabi/length_frequency.py b/src/qibocal/protocols/rabi/length_frequency.py index cb1ab2ff4..5e2871bf0 100644 --- a/src/qibocal/protocols/rabi/length_frequency.py +++ b/src/qibocal/protocols/rabi/length_frequency.py @@ -246,10 +246,7 @@ def _plot( row=1, col=1, ) - if data.rx90: - pulse_name = "Pi-half pulse" - else: - pulse_name = "Pi pulse" + pulse_name = "Pi-half pulse" if data.rx90 else "Pi pulse" fitting_report = table_html( table_dict( diff --git a/src/qibocal/protocols/rabi/length_frequency_signal.py b/src/qibocal/protocols/rabi/length_frequency_signal.py index 1d62149af..00fe5b80b 100644 --- a/src/qibocal/protocols/rabi/length_frequency_signal.py +++ b/src/qibocal/protocols/rabi/length_frequency_signal.py @@ -288,10 +288,7 @@ def _plot( row=1, col=2, ) - if data.rx90: - pulse_name = "Pi-half pulse" - else: - pulse_name = "Pi pulse" + pulse_name = "Pi-half pulse" if data.rx90 else "Pi pulse" fitting_report = table_html( table_dict( diff --git a/src/qibocal/protocols/rabi/utils.py b/src/qibocal/protocols/rabi/utils.py index 636f1f04f..540affcb2 100644 --- a/src/qibocal/protocols/rabi/utils.py +++ b/src/qibocal/protocols/rabi/utils.py @@ -94,10 +94,7 @@ def plot(data, qubit, fit, rx90): row=1, col=1, ) - if rx90: - pulse_name = "Pi-half pulse" - else: - pulse_name = "Pi pulse" + pulse_name = "Pi-half pulse" if rx90 else "Pi pulse" fitting_report = table_html( table_dict( @@ -169,10 +166,7 @@ def plot_probabilities(data, qubit, fit, rx90): marker_color="rgb(255, 130, 67)", ), ) - if rx90: - pulse_name = "Pi-half pulse" - else: - pulse_name = "Pi pulse" + pulse_name = "Pi-half pulse" if rx90 else "Pi pulse" fitting_report = table_html( table_dict( From 7660fde5941a4efead56ee84c9ac0f813c85a789 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Tue, 3 Dec 2024 10:34:04 +0400 Subject: [PATCH 61/73] fix compatibility with qibo v0.2.14 --- poetry.lock | 202 +++++++++--------- pyproject.toml | 4 +- .../randomized_benchmarking/utils.py | 4 +- .../protocols/readout_mitigation_matrix.py | 4 +- src/qibocal/protocols/state_tomography.py | 4 +- .../protocols/two_qubit_state_tomography.py | 4 +- tests/test_task_options.py | 4 +- tests/test_transpile.py | 6 +- 8 files changed, 116 insertions(+), 116 deletions(-) diff --git a/poetry.lock b/poetry.lock index aac92e3dc..49308e5a7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -734,61 +734,61 @@ dotenv = ["python-dotenv"] [[package]] name = "fonttools" -version = "4.55.0" +version = "4.55.1" description = "Tools to manipulate font files" optional = true python-versions = ">=3.8" files = [ - {file = "fonttools-4.55.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:51c029d4c0608a21a3d3d169dfc3fb776fde38f00b35ca11fdab63ba10a16f61"}, - {file = "fonttools-4.55.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bca35b4e411362feab28e576ea10f11268b1aeed883b9f22ed05675b1e06ac69"}, - {file = "fonttools-4.55.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ce4ba6981e10f7e0ccff6348e9775ce25ffadbee70c9fd1a3737e3e9f5fa74f"}, - {file = "fonttools-4.55.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31d00f9852a6051dac23294a4cf2df80ced85d1d173a61ba90a3d8f5abc63c60"}, - {file = "fonttools-4.55.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e198e494ca6e11f254bac37a680473a311a88cd40e58f9cc4dc4911dfb686ec6"}, - {file = "fonttools-4.55.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7208856f61770895e79732e1dcbe49d77bd5783adf73ae35f87fcc267df9db81"}, - {file = "fonttools-4.55.0-cp310-cp310-win32.whl", hash = "sha256:e7e6a352ff9e46e8ef8a3b1fe2c4478f8a553e1b5a479f2e899f9dc5f2055880"}, - {file = "fonttools-4.55.0-cp310-cp310-win_amd64.whl", hash = "sha256:636caaeefe586d7c84b5ee0734c1a5ab2dae619dc21c5cf336f304ddb8f6001b"}, - {file = "fonttools-4.55.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fa34aa175c91477485c44ddfbb51827d470011e558dfd5c7309eb31bef19ec51"}, - {file = "fonttools-4.55.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:37dbb3fdc2ef7302d3199fb12468481cbebaee849e4b04bc55b77c24e3c49189"}, - {file = "fonttools-4.55.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5263d8e7ef3c0ae87fbce7f3ec2f546dc898d44a337e95695af2cd5ea21a967"}, - {file = "fonttools-4.55.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f307f6b5bf9e86891213b293e538d292cd1677e06d9faaa4bf9c086ad5f132f6"}, - {file = "fonttools-4.55.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:f0a4b52238e7b54f998d6a56b46a2c56b59c74d4f8a6747fb9d4042190f37cd3"}, - {file = "fonttools-4.55.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3e569711464f777a5d4ef522e781dc33f8095ab5efd7548958b36079a9f2f88c"}, - {file = "fonttools-4.55.0-cp311-cp311-win32.whl", hash = "sha256:2b3ab90ec0f7b76c983950ac601b58949f47aca14c3f21eed858b38d7ec42b05"}, - {file = "fonttools-4.55.0-cp311-cp311-win_amd64.whl", hash = "sha256:aa046f6a63bb2ad521004b2769095d4c9480c02c1efa7d7796b37826508980b6"}, - {file = "fonttools-4.55.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:838d2d8870f84fc785528a692e724f2379d5abd3fc9dad4d32f91cf99b41e4a7"}, - {file = "fonttools-4.55.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f46b863d74bab7bb0d395f3b68d3f52a03444964e67ce5c43ce43a75efce9246"}, - {file = "fonttools-4.55.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33b52a9cfe4e658e21b1f669f7309b4067910321757fec53802ca8f6eae96a5a"}, - {file = "fonttools-4.55.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:732a9a63d6ea4a81b1b25a1f2e5e143761b40c2e1b79bb2b68e4893f45139a40"}, - {file = "fonttools-4.55.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7dd91ac3fcb4c491bb4763b820bcab6c41c784111c24172616f02f4bc227c17d"}, - {file = "fonttools-4.55.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1f0e115281a32ff532118aa851ef497a1b7cda617f4621c1cdf81ace3e36fb0c"}, - {file = "fonttools-4.55.0-cp312-cp312-win32.whl", hash = "sha256:6c99b5205844f48a05cb58d4a8110a44d3038c67ed1d79eb733c4953c628b0f6"}, - {file = "fonttools-4.55.0-cp312-cp312-win_amd64.whl", hash = "sha256:f8c8c76037d05652510ae45be1cd8fb5dd2fd9afec92a25374ac82255993d57c"}, - {file = "fonttools-4.55.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8118dc571921dc9e4b288d9cb423ceaf886d195a2e5329cc427df82bba872cd9"}, - {file = "fonttools-4.55.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01124f2ca6c29fad4132d930da69158d3f49b2350e4a779e1efbe0e82bd63f6c"}, - {file = "fonttools-4.55.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81ffd58d2691f11f7c8438796e9f21c374828805d33e83ff4b76e4635633674c"}, - {file = "fonttools-4.55.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5435e5f1eb893c35c2bc2b9cd3c9596b0fcb0a59e7a14121562986dd4c47b8dd"}, - {file = "fonttools-4.55.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d12081729280c39d001edd0f4f06d696014c26e6e9a0a55488fabc37c28945e4"}, - {file = "fonttools-4.55.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a7ad1f1b98ab6cb927ab924a38a8649f1ffd7525c75fe5b594f5dab17af70e18"}, - {file = "fonttools-4.55.0-cp313-cp313-win32.whl", hash = "sha256:abe62987c37630dca69a104266277216de1023cf570c1643bb3a19a9509e7a1b"}, - {file = "fonttools-4.55.0-cp313-cp313-win_amd64.whl", hash = "sha256:2863555ba90b573e4201feaf87a7e71ca3b97c05aa4d63548a4b69ea16c9e998"}, - {file = "fonttools-4.55.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:00f7cf55ad58a57ba421b6a40945b85ac7cc73094fb4949c41171d3619a3a47e"}, - {file = "fonttools-4.55.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f27526042efd6f67bfb0cc2f1610fa20364396f8b1fc5edb9f45bb815fb090b2"}, - {file = "fonttools-4.55.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e67974326af6a8879dc2a4ec63ab2910a1c1a9680ccd63e4a690950fceddbe"}, - {file = "fonttools-4.55.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61dc0a13451143c5e987dec5254d9d428f3c2789a549a7cf4f815b63b310c1cc"}, - {file = "fonttools-4.55.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:b2e526b325a903868c62155a6a7e24df53f6ce4c5c3160214d8fe1be2c41b478"}, - {file = "fonttools-4.55.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:b7ef9068a1297714e6fefe5932c33b058aa1d45a2b8be32a4c6dee602ae22b5c"}, - {file = "fonttools-4.55.0-cp38-cp38-win32.whl", hash = "sha256:55718e8071be35dff098976bc249fc243b58efa263768c611be17fe55975d40a"}, - {file = "fonttools-4.55.0-cp38-cp38-win_amd64.whl", hash = "sha256:553bd4f8cc327f310c20158e345e8174c8eed49937fb047a8bda51daf2c353c8"}, - {file = "fonttools-4.55.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f901cef813f7c318b77d1c5c14cf7403bae5cb977cede023e22ba4316f0a8f6"}, - {file = "fonttools-4.55.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8c9679fc0dd7e8a5351d321d8d29a498255e69387590a86b596a45659a39eb0d"}, - {file = "fonttools-4.55.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd2820a8b632f3307ebb0bf57948511c2208e34a4939cf978333bc0a3f11f838"}, - {file = "fonttools-4.55.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23bbbb49bec613a32ed1b43df0f2b172313cee690c2509f1af8fdedcf0a17438"}, - {file = "fonttools-4.55.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a656652e1f5d55b9728937a7e7d509b73d23109cddd4e89ee4f49bde03b736c6"}, - {file = "fonttools-4.55.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f50a1f455902208486fbca47ce33054208a4e437b38da49d6721ce2fef732fcf"}, - {file = "fonttools-4.55.0-cp39-cp39-win32.whl", hash = "sha256:161d1ac54c73d82a3cded44202d0218ab007fde8cf194a23d3dd83f7177a2f03"}, - {file = "fonttools-4.55.0-cp39-cp39-win_amd64.whl", hash = "sha256:ca7fd6987c68414fece41c96836e945e1f320cda56fc96ffdc16e54a44ec57a2"}, - {file = "fonttools-4.55.0-py3-none-any.whl", hash = "sha256:12db5888cd4dd3fcc9f0ee60c6edd3c7e1fd44b7dd0f31381ea03df68f8a153f"}, - {file = "fonttools-4.55.0.tar.gz", hash = "sha256:7636acc6ab733572d5e7eec922b254ead611f1cdad17be3f0be7418e8bfaca71"}, + {file = "fonttools-4.55.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c17a6f9814f83772cd6d9c9009928e1afa4ab66210a31ced721556651075a9a0"}, + {file = "fonttools-4.55.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c4d14eecc814826a01db87a40af3407c892ba49996bc6e49961e386cd78b537c"}, + {file = "fonttools-4.55.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8589f9a15dc005592b94ecdc45b4dfae9bbe9e73542e89af5a5e776e745db83b"}, + {file = "fonttools-4.55.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfee95bd9395bcd9e6c78955387554335109b6a613db71ef006020b42f761c58"}, + {file = "fonttools-4.55.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:34fa2ecc0bf1923d1a51bf2216a006de2c3c0db02c6aa1470ea50b62b8619bd5"}, + {file = "fonttools-4.55.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9c1c48483148bfb1b9ad951133ceea957faa004f6cb475b67e7bc75d482b48f8"}, + {file = "fonttools-4.55.1-cp310-cp310-win32.whl", hash = "sha256:3e2fc388ca7d023b3c45badd71016fd4185f93e51a22cfe4bd65378af7fba759"}, + {file = "fonttools-4.55.1-cp310-cp310-win_amd64.whl", hash = "sha256:c4c36c71f69d2b3ee30394b0986e5f8b2c461e7eff48dde49b08a90ded9fcdbd"}, + {file = "fonttools-4.55.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5daab3a55d460577f45bb8f5a8eca01fa6cde43ef2ab943b527991f54b735c41"}, + {file = "fonttools-4.55.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:acf1e80cf96c2fbc79e46f669d8713a9a79faaebcc68e31a9fbe600cf8027992"}, + {file = "fonttools-4.55.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e88a0329f7f88a210f09f79c088fb64f8032fc3ab65e2390a40b7d3a11773026"}, + {file = "fonttools-4.55.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03105b42259a8a94b2f0cbf1bee45f7a8a34e7b26c946a8fb89b4967e44091a8"}, + {file = "fonttools-4.55.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9af3577e821649879ab5774ad0e060af34816af556c77c6d3820345d12bf415e"}, + {file = "fonttools-4.55.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:34bd5de3d0ad085359b79a96575cd6bd1bc2976320ef24a2aa152ead36dbf656"}, + {file = "fonttools-4.55.1-cp311-cp311-win32.whl", hash = "sha256:5da92c4b637f0155a41f345fa81143c8e17425260fcb21521cb2ad4d2cea2a95"}, + {file = "fonttools-4.55.1-cp311-cp311-win_amd64.whl", hash = "sha256:f70234253d15f844e6da1178f019a931f03181463ce0c7b19648b8c370527b07"}, + {file = "fonttools-4.55.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9c372e527d58ba64b695f15f8014e97bc8826cf64d3380fc89b4196edd3c0fa8"}, + {file = "fonttools-4.55.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:845a967d3bef3245ba81fb5582dc731f6c2c8417fa211f1068c56893504bc000"}, + {file = "fonttools-4.55.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03be82bcd4ba4418adf10e6165743f824bb09d6594c2743d7f93ea50968805b"}, + {file = "fonttools-4.55.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c42e935cf146f826f556d977660dac88f2fa3fb2efa27d5636c0b89a60c16edf"}, + {file = "fonttools-4.55.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:96328bf91e05621d8e40d9f854af7a262cb0e8313e9b38e7f3a7f3c4c0caaa8b"}, + {file = "fonttools-4.55.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:291acec4d774e8cd2d8472d88c04643a77a3324a15247951bd6cfc969799b69e"}, + {file = "fonttools-4.55.1-cp312-cp312-win32.whl", hash = "sha256:6d768d6632809aec1c3fa8f195b173386d85602334701a6894a601a4d3c80368"}, + {file = "fonttools-4.55.1-cp312-cp312-win_amd64.whl", hash = "sha256:2a3850afdb0be1f79a1e95340a2059226511675c5b68098d4e49bfbeb48a8aab"}, + {file = "fonttools-4.55.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0c88d427eaf8bd8497b9051f56e0f5f9fb96a311aa7c72cda35e03e18d59cd16"}, + {file = "fonttools-4.55.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f062c95a725a79fd908fe8407b6ad63e230e1c7d6dece2d5d6ecaf843d6927f6"}, + {file = "fonttools-4.55.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f298c5324c45cad073475146bf560f4110ce2dc2488ff12231a343ec489f77bc"}, + {file = "fonttools-4.55.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f06dbb71344ffd85a6cb7e27970a178952f0bdd8d319ed938e64ba4bcc41700"}, + {file = "fonttools-4.55.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4c46b3525166976f5855b1f039b02433dc51eb635fb54d6a111e0c5d6e6cdc4c"}, + {file = "fonttools-4.55.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:af46f52a21e086a2f89b87bd941c9f0f91e5f769e1a5eb3b37c912228814d3e5"}, + {file = "fonttools-4.55.1-cp313-cp313-win32.whl", hash = "sha256:cd7f36335c5725a3fd724cc667c10c3f5254e779bdc5bffefebb33cf5a75ecb1"}, + {file = "fonttools-4.55.1-cp313-cp313-win_amd64.whl", hash = "sha256:5d6394897710ccac7f74df48492d7f02b9586ff0588c66a2c218844e90534b22"}, + {file = "fonttools-4.55.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:52c4f4b383c56e1a4fe8dab1b63c2269ba9eab0695d2d8e033fa037e61e6f1ef"}, + {file = "fonttools-4.55.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d83892dafdbd62b56545c77b6bd4fa49eef6ec1d6b95e042ee2c930503d1831e"}, + {file = "fonttools-4.55.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:604d5bf16f811fcaaaec2dde139f7ce958462487565edcd54b6fadacb2942083"}, + {file = "fonttools-4.55.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3324b92feb5fd084923a8e89a8248afd5b9f9d81ab9517d7b07cc84403bd448"}, + {file = "fonttools-4.55.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:30f8b1ca9b919c04850678d026fc330c19acaa9e3b282fcacc09a5eb3c8d20c3"}, + {file = "fonttools-4.55.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:1835c98df2cf28c86a66d234895c87df7b9325fd079a8019c5053a389ff55d23"}, + {file = "fonttools-4.55.1-cp38-cp38-win32.whl", hash = "sha256:9f202703720a7cc0049f2ed1a2047925e264384eb5cc4d34f80200d7b17f1b6a"}, + {file = "fonttools-4.55.1-cp38-cp38-win_amd64.whl", hash = "sha256:2efff20aed0338d37c2ff58766bd67f4b9607ded61cf3d6baf1b3e25ea74e119"}, + {file = "fonttools-4.55.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3032d9bf010c395e6eca2851666cafb1f4ecde85d420188555e928ad0144326e"}, + {file = "fonttools-4.55.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0794055588c30ffe25426048e8a7c0a5271942727cd61fc939391e37f4d580d5"}, + {file = "fonttools-4.55.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ba980e3ffd3206b8c63a365f90dc10eeec27da946d5ee5373c3a325a46d77c"}, + {file = "fonttools-4.55.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d7063babd7434a17a5e355e87de9b2306c85a5c19c7da0794be15c58aab0c39"}, + {file = "fonttools-4.55.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ed84c15144015a58ef550dd6312884c9fb31a2dbc31a6467bcdafd63be7db476"}, + {file = "fonttools-4.55.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e89419d88b0bbfdb55209e03a17afa2d20db3c2fa0d785543c9d0875668195d5"}, + {file = "fonttools-4.55.1-cp39-cp39-win32.whl", hash = "sha256:6eb781e401b93cda99356bc043ababead2a5096550984d8a4ecf3d5c9f859dc2"}, + {file = "fonttools-4.55.1-cp39-cp39-win_amd64.whl", hash = "sha256:db1031acf04523c5a51c3e1ae19c21a1c32bc5f820a477dd4659a02f9cb82002"}, + {file = "fonttools-4.55.1-py3-none-any.whl", hash = "sha256:4bcfb11f90f48b48c366dd638d773a52fca0d1b9e056dc01df766bf5835baa08"}, + {file = "fonttools-4.55.1.tar.gz", hash = "sha256:85bb2e985718b0df96afc659abfe194c171726054314b019dbbfed31581673c7"}, ] [package.extras] @@ -1635,51 +1635,52 @@ files = [ [[package]] name = "matplotlib" -version = "3.9.2" +version = "3.9.3" description = "Python plotting package" optional = true python-versions = ">=3.9" files = [ - {file = "matplotlib-3.9.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9d78bbc0cbc891ad55b4f39a48c22182e9bdaea7fc0e5dbd364f49f729ca1bbb"}, - {file = "matplotlib-3.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c375cc72229614632c87355366bdf2570c2dac01ac66b8ad048d2dabadf2d0d4"}, - {file = "matplotlib-3.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d94ff717eb2bd0b58fe66380bd8b14ac35f48a98e7c6765117fe67fb7684e64"}, - {file = "matplotlib-3.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab68d50c06938ef28681073327795c5db99bb4666214d2d5f880ed11aeaded66"}, - {file = "matplotlib-3.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:65aacf95b62272d568044531e41de26285d54aec8cb859031f511f84bd8b495a"}, - {file = "matplotlib-3.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:3fd595f34aa8a55b7fc8bf9ebea8aa665a84c82d275190a61118d33fbc82ccae"}, - {file = "matplotlib-3.9.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d8dd059447824eec055e829258ab092b56bb0579fc3164fa09c64f3acd478772"}, - {file = "matplotlib-3.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c797dac8bb9c7a3fd3382b16fe8f215b4cf0f22adccea36f1545a6d7be310b41"}, - {file = "matplotlib-3.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d719465db13267bcef19ea8954a971db03b9f48b4647e3860e4bc8e6ed86610f"}, - {file = "matplotlib-3.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8912ef7c2362f7193b5819d17dae8629b34a95c58603d781329712ada83f9447"}, - {file = "matplotlib-3.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7741f26a58a240f43bee74965c4882b6c93df3e7eb3de160126d8c8f53a6ae6e"}, - {file = "matplotlib-3.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:ae82a14dab96fbfad7965403c643cafe6515e386de723e498cf3eeb1e0b70cc7"}, - {file = "matplotlib-3.9.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ac43031375a65c3196bee99f6001e7fa5bdfb00ddf43379d3c0609bdca042df9"}, - {file = "matplotlib-3.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be0fc24a5e4531ae4d8e858a1a548c1fe33b176bb13eff7f9d0d38ce5112a27d"}, - {file = "matplotlib-3.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf81de2926c2db243c9b2cbc3917619a0fc85796c6ba4e58f541df814bbf83c7"}, - {file = "matplotlib-3.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6ee45bc4245533111ced13f1f2cace1e7f89d1c793390392a80c139d6cf0e6c"}, - {file = "matplotlib-3.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:306c8dfc73239f0e72ac50e5a9cf19cc4e8e331dd0c54f5e69ca8758550f1e1e"}, - {file = "matplotlib-3.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:5413401594cfaff0052f9d8b1aafc6d305b4bd7c4331dccd18f561ff7e1d3bd3"}, - {file = "matplotlib-3.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:18128cc08f0d3cfff10b76baa2f296fc28c4607368a8402de61bb3f2eb33c7d9"}, - {file = "matplotlib-3.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4876d7d40219e8ae8bb70f9263bcbe5714415acfdf781086601211335e24f8aa"}, - {file = "matplotlib-3.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d9f07a80deab4bb0b82858a9e9ad53d1382fd122be8cde11080f4e7dfedb38b"}, - {file = "matplotlib-3.9.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c0410f181a531ec4e93bbc27692f2c71a15c2da16766f5ba9761e7ae518413"}, - {file = "matplotlib-3.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:909645cce2dc28b735674ce0931a4ac94e12f5b13f6bb0b5a5e65e7cea2c192b"}, - {file = "matplotlib-3.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:f32c7410c7f246838a77d6d1eff0c0f87f3cb0e7c4247aebea71a6d5a68cab49"}, - {file = "matplotlib-3.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:37e51dd1c2db16ede9cfd7b5cabdfc818b2c6397c83f8b10e0e797501c963a03"}, - {file = "matplotlib-3.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b82c5045cebcecd8496a4d694d43f9cc84aeeb49fe2133e036b207abe73f4d30"}, - {file = "matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f053c40f94bc51bc03832a41b4f153d83f2062d88c72b5e79997072594e97e51"}, - {file = "matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbe196377a8248972f5cede786d4c5508ed5f5ca4a1e09b44bda889958b33f8c"}, - {file = "matplotlib-3.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5816b1e1fe8c192cbc013f8f3e3368ac56fbecf02fb41b8f8559303f24c5015e"}, - {file = "matplotlib-3.9.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:cef2a73d06601437be399908cf13aee74e86932a5ccc6ccdf173408ebc5f6bb2"}, - {file = "matplotlib-3.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e0830e188029c14e891fadd99702fd90d317df294c3298aad682739c5533721a"}, - {file = "matplotlib-3.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03ba9c1299c920964e8d3857ba27173b4dbb51ca4bab47ffc2c2ba0eb5e2cbc5"}, - {file = "matplotlib-3.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cd93b91ab47a3616b4d3c42b52f8363b88ca021e340804c6ab2536344fad9ca"}, - {file = "matplotlib-3.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6d1ce5ed2aefcdce11904fc5bbea7d9c21fff3d5f543841edf3dea84451a09ea"}, - {file = "matplotlib-3.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:b2696efdc08648536efd4e1601b5fd491fd47f4db97a5fbfd175549a7365c1b2"}, - {file = "matplotlib-3.9.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:d52a3b618cb1cbb769ce2ee1dcdb333c3ab6e823944e9a2d36e37253815f9556"}, - {file = "matplotlib-3.9.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:039082812cacd6c6bec8e17a9c1e6baca230d4116d522e81e1f63a74d01d2e21"}, - {file = "matplotlib-3.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6758baae2ed64f2331d4fd19be38b7b4eae3ecec210049a26b6a4f3ae1c85dcc"}, - {file = "matplotlib-3.9.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:050598c2b29e0b9832cde72bcf97627bf00262adbc4a54e2b856426bb2ef0697"}, - {file = "matplotlib-3.9.2.tar.gz", hash = "sha256:96ab43906269ca64a6366934106fa01534454a69e471b7bf3d79083981aaab92"}, + {file = "matplotlib-3.9.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:41b016e3be4e740b66c79a031a0a6e145728dbc248142e751e8dab4f3188ca1d"}, + {file = "matplotlib-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e0143975fc2a6d7136c97e19c637321288371e8f09cff2564ecd73e865ea0b9"}, + {file = "matplotlib-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f459c8ee2c086455744723628264e43c884be0c7d7b45d84b8cd981310b4815"}, + {file = "matplotlib-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:687df7ceff57b8f070d02b4db66f75566370e7ae182a0782b6d3d21b0d6917dc"}, + {file = "matplotlib-3.9.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:edd14cf733fdc4f6e6fe3f705af97676a7e52859bf0044aa2c84e55be739241c"}, + {file = "matplotlib-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:1c40c244221a1adbb1256692b1133c6fb89418df27bf759a31a333e7912a4010"}, + {file = "matplotlib-3.9.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:cf2a60daf6cecff6828bc608df00dbc794380e7234d2411c0ec612811f01969d"}, + {file = "matplotlib-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:213d6dc25ce686516208d8a3e91120c6a4fdae4a3e06b8505ced5b716b50cc04"}, + {file = "matplotlib-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c52f48eb75fcc119a4fdb68ba83eb5f71656999420375df7c94cc68e0e14686e"}, + {file = "matplotlib-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3c93796b44fa111049b88a24105e947f03c01966b5c0cc782e2ee3887b790a3"}, + {file = "matplotlib-3.9.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cd1077b9a09b16d8c3c7075a8add5ffbfe6a69156a57e290c800ed4d435bef1d"}, + {file = "matplotlib-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:c96eeeb8c68b662c7747f91a385688d4b449687d29b691eff7068a4602fe6dc4"}, + {file = "matplotlib-3.9.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0a361bd5583bf0bcc08841df3c10269617ee2a36b99ac39d455a767da908bbbc"}, + {file = "matplotlib-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e14485bb1b83eeb3d55b6878f9560240981e7bbc7a8d4e1e8c38b9bd6ec8d2de"}, + {file = "matplotlib-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a8d279f78844aad213c4935c18f8292a9432d51af2d88bca99072c903948045"}, + {file = "matplotlib-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6c12514329ac0d03128cf1dcceb335f4fbf7c11da98bca68dca8dcb983153a9"}, + {file = "matplotlib-3.9.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6e9de2b390d253a508dd497e9b5579f3a851f208763ed67fdca5dc0c3ea6849c"}, + {file = "matplotlib-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d796272408f8567ff7eaa00eb2856b3a00524490e47ad505b0b4ca6bb8a7411f"}, + {file = "matplotlib-3.9.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:203d18df84f5288973b2d56de63d4678cc748250026ca9e1ad8f8a0fd8a75d83"}, + {file = "matplotlib-3.9.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b651b0d3642991259109dc0351fc33ad44c624801367bb8307be9bfc35e427ad"}, + {file = "matplotlib-3.9.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66d7b171fecf96940ce069923a08ba3df33ef542de82c2ff4fe8caa8346fa95a"}, + {file = "matplotlib-3.9.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6be0ba61f6ff2e6b68e4270fb63b6813c9e7dec3d15fc3a93f47480444fd72f0"}, + {file = "matplotlib-3.9.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d6b2e8856dec3a6db1ae51aec85c82223e834b228c1d3228aede87eee2b34f9"}, + {file = "matplotlib-3.9.3-cp313-cp313-win_amd64.whl", hash = "sha256:90a85a004fefed9e583597478420bf904bb1a065b0b0ee5b9d8d31b04b0f3f70"}, + {file = "matplotlib-3.9.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3119b2f16de7f7b9212ba76d8fe6a0e9f90b27a1e04683cd89833a991682f639"}, + {file = "matplotlib-3.9.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:87ad73763d93add1b6c1f9fcd33af662fd62ed70e620c52fcb79f3ac427cf3a6"}, + {file = "matplotlib-3.9.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:026bdf3137ab6022c866efa4813b6bbeddc2ed4c9e7e02f0e323a7bca380dfa0"}, + {file = "matplotlib-3.9.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:760a5e89ebbb172989e8273024a1024b0f084510b9105261b3b00c15e9c9f006"}, + {file = "matplotlib-3.9.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a42b9dc42de2cfe357efa27d9c50c7833fc5ab9b2eb7252ccd5d5f836a84e1e4"}, + {file = "matplotlib-3.9.3-cp313-cp313t-win_amd64.whl", hash = "sha256:e0fcb7da73fbf67b5f4bdaa57d85bb585a4e913d4a10f3e15b32baea56a67f0a"}, + {file = "matplotlib-3.9.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:031b7f5b8e595cc07def77ec5b58464e9bb67dc5760be5d6f26d9da24892481d"}, + {file = "matplotlib-3.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9fa6e193c14d6944e0685cdb527cb6b38b0e4a518043e7212f214113af7391da"}, + {file = "matplotlib-3.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e6eefae6effa0c35bbbc18c25ee6e0b1da44d2359c3cd526eb0c9e703cf055d"}, + {file = "matplotlib-3.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d3e5c7a99bd28afb957e1ae661323b0800d75b419f24d041ed1cc5d844a764"}, + {file = "matplotlib-3.9.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:816a966d5d376bf24c92af8f379e78e67278833e4c7cbc9fa41872eec629a060"}, + {file = "matplotlib-3.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fb0b37c896172899a4a93d9442ffdc6f870165f59e05ce2e07c6fded1c15749"}, + {file = "matplotlib-3.9.3-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f2a4ea08e6876206d511365b0bc234edc813d90b930be72c3011bbd7898796f"}, + {file = "matplotlib-3.9.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:9b081dac96ab19c54fd8558fac17c9d2c9cb5cc4656e7ed3261ddc927ba3e2c5"}, + {file = "matplotlib-3.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a0a63cb8404d1d1f94968ef35738900038137dab8af836b6c21bb6f03d75465"}, + {file = "matplotlib-3.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:896774766fd6be4571a43bc2fcbcb1dcca0807e53cab4a5bf88c4aa861a08e12"}, + {file = "matplotlib-3.9.3.tar.gz", hash = "sha256:cd5dbbc8e25cad5f706845c4d100e2c8b34691b412b93717ce38d8ae803bcfa5"}, ] [package.dependencies] @@ -1695,7 +1696,7 @@ pyparsing = ">=2.3.1" python-dateutil = ">=2.7" [package.extras] -dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6)", "setuptools (>=64)", "setuptools_scm (>=7)"] +dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6,!=2.13.3)", "setuptools (>=64)", "setuptools_scm (>=7)"] [[package]] name = "matplotlib-inline" @@ -2605,13 +2606,13 @@ files = [ [[package]] name = "qibo" -version = "0.2.12" +version = "0.2.14" description = "A framework for quantum computing with hardware acceleration." optional = false python-versions = "<3.13,>=3.9" files = [ - {file = "qibo-0.2.12-py3-none-any.whl", hash = "sha256:2e301747b31946d0737bfa621bf5b30b00c861926468ce36973cf61b2803f58a"}, - {file = "qibo-0.2.12.tar.gz", hash = "sha256:6849801eee77f928077a3e11b52cf549c34a9e9678a6d366d495686a6b21e788"}, + {file = "qibo-0.2.14-py3-none-any.whl", hash = "sha256:4641280f6f5afbdc6042c8e234b4c384b3085b2885b2138fa5a4fa4d70ba5366"}, + {file = "qibo-0.2.14.tar.gz", hash = "sha256:e3d21a8eb1b2625e80d3b86adc4d59ac0bdd00c60daed75d45ac7ad9a57e3907"}, ] [package.dependencies] @@ -2627,12 +2628,11 @@ tabulate = ">=0.9.0,<0.10.0" [package.extras] qulacs = ["qulacs (>=0.6.4,<0.7.0)"] -tensorflow = ["tensorflow (>=2.16.1,<3.0.0)"] torch = ["torch (>=2.1.1,<2.4)"] [[package]] name = "qibolab" -version = "0.2.2" +version = "0.2.3" description = "Quantum hardware module and drivers for Qibo" optional = false python-versions = ">=3.9,<3.13" @@ -2658,8 +2658,8 @@ zh = ["laboneq (==2.25.0)"] [package.source] type = "git" url = "https://github.com/qiboteam/qibolab.git" -reference = "pi_half" -resolved_reference = "7579f0c85b6ed2ac4a9729e016f57dc0b0c42ff0" +reference = "HEAD" +resolved_reference = "80bd2875d6cc51cf3fd30c8426d80c595f4f0328" [[package]] name = "recommonmark" @@ -3550,4 +3550,4 @@ viz = ["pydot"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.12" -content-hash = "76d1bb8fcbfbca4bb3ffb4fdd2347afd73b76128419a1dad77e0d77d5f5c1884" +content-hash = "10c07eb600389aa3ce90c77e2fff18a070f255409ebe3333f117ee770c72ec5a" diff --git a/pyproject.toml b/pyproject.toml index a11bf355b..796150ec9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,8 +17,8 @@ classifiers = [ [tool.poetry.dependencies] python = ">=3.9,<3.12" -qibolab = { git = "https://github.com/qiboteam/qibolab.git", branch = "pi_half" } -qibo = "0.2.12" +qibolab = { git = "https://github.com/qiboteam/qibolab.git"} +qibo = "^0.2.12" numpy = "^1.26.4" scipy = "^1.10.1" pandas = { version = "^2.2.2", extras = ["html"] } diff --git a/src/qibocal/protocols/randomized_benchmarking/utils.py b/src/qibocal/protocols/randomized_benchmarking/utils.py index a10188171..326c0fdf5 100644 --- a/src/qibocal/protocols/randomized_benchmarking/utils.py +++ b/src/qibocal/protocols/randomized_benchmarking/utils.py @@ -7,7 +7,7 @@ import numpy as np import numpy.typing as npt from qibo import gates -from qibo.backends import GlobalBackend +from qibo.backends import get_backend from qibo.config import raise_error from qibo.models import Circuit @@ -351,7 +351,7 @@ def setup( tuple: A tuple containing the experiment data, noise model, and backend. """ - backend = GlobalBackend() + backend = get_backend() backend.platform = platform # For simulations, a noise model can be added. noise_model = None diff --git a/src/qibocal/protocols/readout_mitigation_matrix.py b/src/qibocal/protocols/readout_mitigation_matrix.py index 780d08d7d..4272017f6 100644 --- a/src/qibocal/protocols/readout_mitigation_matrix.py +++ b/src/qibocal/protocols/readout_mitigation_matrix.py @@ -5,7 +5,7 @@ import numpy.typing as npt import plotly.express as px from qibo import gates -from qibo.backends import GlobalBackend +from qibo.backends import get_backend from qibo.models import Circuit from qibolab import PulseSequence from scipy.sparse import lil_matrix @@ -115,7 +115,7 @@ def _acquisition( data = ReadoutMitigationMatrixData( nshots=params.nshots, qubit_list=[list(qq) for qq in targets] ) - backend = GlobalBackend() + backend = get_backend() backend.platform = platform transpiler = dummy_transpiler(backend) diff --git a/src/qibocal/protocols/state_tomography.py b/src/qibocal/protocols/state_tomography.py index 7089bfeb2..be6d8aa6a 100644 --- a/src/qibocal/protocols/state_tomography.py +++ b/src/qibocal/protocols/state_tomography.py @@ -8,7 +8,7 @@ import plotly.graph_objects as go from plotly.subplots import make_subplots from qibo import Circuit, gates -from qibo.backends import GlobalBackend, NumpyBackend, matrices +from qibo.backends import NumpyBackend, get_backend, matrices from qibo.quantum_info import fidelity, partial_trace from qibocal.auto.operation import DATAFILE, Data, Parameters, QubitId, Results, Routine @@ -103,7 +103,7 @@ def _acquisition( if params.circuit is None: params.circuit = Circuit(len(targets)) - backend = GlobalBackend() + backend = get_backend() backend.platform = platform transpiler = dummy_transpiler(backend) diff --git a/src/qibocal/protocols/two_qubit_state_tomography.py b/src/qibocal/protocols/two_qubit_state_tomography.py index 75c9ffbbd..5a1f3405e 100644 --- a/src/qibocal/protocols/two_qubit_state_tomography.py +++ b/src/qibocal/protocols/two_qubit_state_tomography.py @@ -9,7 +9,7 @@ import plotly.graph_objects as go from plotly.subplots import make_subplots from qibo import Circuit, gates -from qibo.backends import GlobalBackend, NumpyBackend +from qibo.backends import NumpyBackend, get_backend from qibo.quantum_info import fidelity, partial_trace from qibo.result import QuantumState @@ -105,7 +105,7 @@ def _acquisition( if params.circuit is None: params.circuit = Circuit(len(qubits)) - backend = GlobalBackend() + backend = get_backend() backend.platform = platform simulator = NumpyBackend() transpiler = dummy_transpiler(backend) diff --git a/tests/test_task_options.py b/tests/test_task_options.py index 2ca178b62..f7cc956ee 100644 --- a/tests/test_task_options.py +++ b/tests/test_task_options.py @@ -4,7 +4,7 @@ import pytest from pytest import approx -from qibo.backends import GlobalBackend, set_backend +from qibo.backends import get_backend, set_backend from qibocal import protocols from qibocal.auto.mode import AUTOCALIBRATION, ExecutionMode @@ -21,7 +21,7 @@ @pytest.fixture(scope="module") def platform(): set_backend(backend="qibolab", platform="dummy") - return CalibrationPlatform.from_platform(GlobalBackend().platform) + return CalibrationPlatform.from_platform(get_backend().platform) TARGETS = [0, 1, 2] diff --git a/tests/test_transpile.py b/tests/test_transpile.py index 499ac9d28..d9f953796 100644 --- a/tests/test_transpile.py +++ b/tests/test_transpile.py @@ -1,6 +1,6 @@ import numpy as np from qibo import Circuit, gates, set_backend -from qibo.backends import GlobalBackend +from qibo.backends import get_backend from qibocal.auto.transpile import ( dummy_transpiler, @@ -30,7 +30,7 @@ def test_execute_transpiled_circuit(): circuit.add(gates.X(1)) qubit_map = [1, 2] set_backend("qibolab", platform="dummy") - backend = GlobalBackend() + backend = get_backend() transpiler = dummy_transpiler(backend) transpiled_circuit, _ = execute_transpiled_circuit( circuit, qubit_map, backend, transpiler=transpiler @@ -52,7 +52,7 @@ def test_execute_transpiled_circuits(): circuit.add(gates.X(1)) qubit_map = [1, 2] set_backend("qibolab", platform="dummy") - backend = GlobalBackend() + backend = get_backend() transpiler = dummy_transpiler(backend) transpiled_circuits, _ = execute_transpiled_circuits( [circuit], [qubit_map], backend, transpiler=transpiler From 2d8c8f767c3a065fe565b8392ced9351e67e8e00 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Tue, 3 Dec 2024 11:04:41 +0400 Subject: [PATCH 62/73] fix conflict with pyproject.toml for branch 0.2 --- poetry.lock | 2 +- pyproject.toml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 49308e5a7..1513a63a6 100644 --- a/poetry.lock +++ b/poetry.lock @@ -3550,4 +3550,4 @@ viz = ["pydot"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.12" -content-hash = "10c07eb600389aa3ce90c77e2fff18a070f255409ebe3333f117ee770c72ec5a" +content-hash = "a3245b251268b0a425008b584e398ce8ce63531356431ba4e99897d5899b2dae" diff --git a/pyproject.toml b/pyproject.toml index 796150ec9..8a8c93246 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,8 +17,8 @@ classifiers = [ [tool.poetry.dependencies] python = ">=3.9,<3.12" -qibolab = { git = "https://github.com/qiboteam/qibolab.git"} -qibo = "^0.2.12" +qibolab = { git = "https://github.com/qiboteam/qibolab.git" } +qibo = "^0.2.13" numpy = "^1.26.4" scipy = "^1.10.1" pandas = { version = "^2.2.2", extras = ["html"] } From 1bac5942307dd4ebc3594ad5cef4762b03110684 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Tue, 3 Dec 2024 15:08:20 +0400 Subject: [PATCH 63/73] fix error in flipping sequence construction for rx90 --- src/qibocal/protocols/flipping.py | 2 ++ tests/runcards/protocols.yml | 1 + 2 files changed, 3 insertions(+) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index 05ceff164..c8176ae39 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -49,6 +49,8 @@ def flipping_sequence( sequence.append((qd_channel, qd_detuned)) sequence.append((qd_channel, qd_detuned)) + sequence |= natives.MZ() + else: sequence |= natives.R(theta=np.pi / 2) diff --git a/tests/runcards/protocols.yml b/tests/runcards/protocols.yml index 447c294e4..e0278280b 100644 --- a/tests/runcards/protocols.yml +++ b/tests/runcards/protocols.yml @@ -611,6 +611,7 @@ actions: nflips_step: 1 nshots: 50 unrolling: True + rx90: True - id: dispersive shift From 228a02e413cbca288b1ea5ebd6d597a509179ccb Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Fri, 6 Dec 2024 07:25:44 +0100 Subject: [PATCH 64/73] Update src/qibocal/protocols/flipping.py Co-authored-by: Alessandro Candido --- src/qibocal/protocols/flipping.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index c8176ae39..46d87aecc 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -149,11 +149,7 @@ def _acquisition( resonator_type=platform.resonator_type, delta_amplitude=params.delta_amplitude, pulse_amplitudes={ - qubit: ( - platform.natives.single_qubit[qubit].RX90[0][1].amplitude - if params.rx90 - else platform.natives.single_qubit[qubit].RX[0][1].amplitude - ) + qubit: getattr(platform.natives.single_qubit[qubit], "RX90" if params.rx90 else "RX")[0][1].amplitude for qubit in targets }, rx90=params.rx90, From 35c717882ab7f0c2c9d7118f48ffab90f7f5addc Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 06:25:56 +0000 Subject: [PATCH 65/73] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/qibocal/protocols/flipping.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index 46d87aecc..13e1a6a97 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -149,7 +149,9 @@ def _acquisition( resonator_type=platform.resonator_type, delta_amplitude=params.delta_amplitude, pulse_amplitudes={ - qubit: getattr(platform.natives.single_qubit[qubit], "RX90" if params.rx90 else "RX")[0][1].amplitude + qubit: getattr( + platform.natives.single_qubit[qubit], "RX90" if params.rx90 else "RX" + )[0][1].amplitude for qubit in targets }, rx90=params.rx90, From 8950008ee300229fa41132f0d1559135fe6198db Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Fri, 6 Dec 2024 07:26:41 +0100 Subject: [PATCH 66/73] Update src/qibocal/protocols/flipping.py Co-authored-by: Alessandro Candido --- src/qibocal/protocols/flipping.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index 13e1a6a97..1e25362f4 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -254,7 +254,7 @@ def _fit(data: FlippingData) -> FlippingResults: correction = popt[2] / 2 if data.rx90: - correction = correction / 2 + correction /= 2 corrected_amplitudes[qubit] = [ float(detuned_pulse_amplitude * np.pi / (np.pi + correction)), From b90f8871a7e319241fd646beaa5087f53f97eee1 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Fri, 6 Dec 2024 09:30:38 +0100 Subject: [PATCH 67/73] fix test definition and improve code for flipping with rx90 gate --- poetry.lock | 128 +++++++++++++++--------------- src/qibocal/protocols/flipping.py | 33 +++----- tests/test_protocols.py | 2 +- 3 files changed, 78 insertions(+), 85 deletions(-) diff --git a/poetry.lock b/poetry.lock index 95691f452..64deae2ca 100644 --- a/poetry.lock +++ b/poetry.lock @@ -734,61 +734,61 @@ dotenv = ["python-dotenv"] [[package]] name = "fonttools" -version = "4.55.1" +version = "4.55.2" description = "Tools to manipulate font files" optional = true python-versions = ">=3.8" files = [ - {file = "fonttools-4.55.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c17a6f9814f83772cd6d9c9009928e1afa4ab66210a31ced721556651075a9a0"}, - {file = "fonttools-4.55.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c4d14eecc814826a01db87a40af3407c892ba49996bc6e49961e386cd78b537c"}, - {file = "fonttools-4.55.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8589f9a15dc005592b94ecdc45b4dfae9bbe9e73542e89af5a5e776e745db83b"}, - {file = "fonttools-4.55.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfee95bd9395bcd9e6c78955387554335109b6a613db71ef006020b42f761c58"}, - {file = "fonttools-4.55.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:34fa2ecc0bf1923d1a51bf2216a006de2c3c0db02c6aa1470ea50b62b8619bd5"}, - {file = "fonttools-4.55.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9c1c48483148bfb1b9ad951133ceea957faa004f6cb475b67e7bc75d482b48f8"}, - {file = "fonttools-4.55.1-cp310-cp310-win32.whl", hash = "sha256:3e2fc388ca7d023b3c45badd71016fd4185f93e51a22cfe4bd65378af7fba759"}, - {file = "fonttools-4.55.1-cp310-cp310-win_amd64.whl", hash = "sha256:c4c36c71f69d2b3ee30394b0986e5f8b2c461e7eff48dde49b08a90ded9fcdbd"}, - {file = "fonttools-4.55.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5daab3a55d460577f45bb8f5a8eca01fa6cde43ef2ab943b527991f54b735c41"}, - {file = "fonttools-4.55.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:acf1e80cf96c2fbc79e46f669d8713a9a79faaebcc68e31a9fbe600cf8027992"}, - {file = "fonttools-4.55.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e88a0329f7f88a210f09f79c088fb64f8032fc3ab65e2390a40b7d3a11773026"}, - {file = "fonttools-4.55.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03105b42259a8a94b2f0cbf1bee45f7a8a34e7b26c946a8fb89b4967e44091a8"}, - {file = "fonttools-4.55.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9af3577e821649879ab5774ad0e060af34816af556c77c6d3820345d12bf415e"}, - {file = "fonttools-4.55.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:34bd5de3d0ad085359b79a96575cd6bd1bc2976320ef24a2aa152ead36dbf656"}, - {file = "fonttools-4.55.1-cp311-cp311-win32.whl", hash = "sha256:5da92c4b637f0155a41f345fa81143c8e17425260fcb21521cb2ad4d2cea2a95"}, - {file = "fonttools-4.55.1-cp311-cp311-win_amd64.whl", hash = "sha256:f70234253d15f844e6da1178f019a931f03181463ce0c7b19648b8c370527b07"}, - {file = "fonttools-4.55.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9c372e527d58ba64b695f15f8014e97bc8826cf64d3380fc89b4196edd3c0fa8"}, - {file = "fonttools-4.55.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:845a967d3bef3245ba81fb5582dc731f6c2c8417fa211f1068c56893504bc000"}, - {file = "fonttools-4.55.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03be82bcd4ba4418adf10e6165743f824bb09d6594c2743d7f93ea50968805b"}, - {file = "fonttools-4.55.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c42e935cf146f826f556d977660dac88f2fa3fb2efa27d5636c0b89a60c16edf"}, - {file = "fonttools-4.55.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:96328bf91e05621d8e40d9f854af7a262cb0e8313e9b38e7f3a7f3c4c0caaa8b"}, - {file = "fonttools-4.55.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:291acec4d774e8cd2d8472d88c04643a77a3324a15247951bd6cfc969799b69e"}, - {file = "fonttools-4.55.1-cp312-cp312-win32.whl", hash = "sha256:6d768d6632809aec1c3fa8f195b173386d85602334701a6894a601a4d3c80368"}, - {file = "fonttools-4.55.1-cp312-cp312-win_amd64.whl", hash = "sha256:2a3850afdb0be1f79a1e95340a2059226511675c5b68098d4e49bfbeb48a8aab"}, - {file = "fonttools-4.55.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0c88d427eaf8bd8497b9051f56e0f5f9fb96a311aa7c72cda35e03e18d59cd16"}, - {file = "fonttools-4.55.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f062c95a725a79fd908fe8407b6ad63e230e1c7d6dece2d5d6ecaf843d6927f6"}, - {file = "fonttools-4.55.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f298c5324c45cad073475146bf560f4110ce2dc2488ff12231a343ec489f77bc"}, - {file = "fonttools-4.55.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f06dbb71344ffd85a6cb7e27970a178952f0bdd8d319ed938e64ba4bcc41700"}, - {file = "fonttools-4.55.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4c46b3525166976f5855b1f039b02433dc51eb635fb54d6a111e0c5d6e6cdc4c"}, - {file = "fonttools-4.55.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:af46f52a21e086a2f89b87bd941c9f0f91e5f769e1a5eb3b37c912228814d3e5"}, - {file = "fonttools-4.55.1-cp313-cp313-win32.whl", hash = "sha256:cd7f36335c5725a3fd724cc667c10c3f5254e779bdc5bffefebb33cf5a75ecb1"}, - {file = "fonttools-4.55.1-cp313-cp313-win_amd64.whl", hash = "sha256:5d6394897710ccac7f74df48492d7f02b9586ff0588c66a2c218844e90534b22"}, - {file = "fonttools-4.55.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:52c4f4b383c56e1a4fe8dab1b63c2269ba9eab0695d2d8e033fa037e61e6f1ef"}, - {file = "fonttools-4.55.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d83892dafdbd62b56545c77b6bd4fa49eef6ec1d6b95e042ee2c930503d1831e"}, - {file = "fonttools-4.55.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:604d5bf16f811fcaaaec2dde139f7ce958462487565edcd54b6fadacb2942083"}, - {file = "fonttools-4.55.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3324b92feb5fd084923a8e89a8248afd5b9f9d81ab9517d7b07cc84403bd448"}, - {file = "fonttools-4.55.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:30f8b1ca9b919c04850678d026fc330c19acaa9e3b282fcacc09a5eb3c8d20c3"}, - {file = "fonttools-4.55.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:1835c98df2cf28c86a66d234895c87df7b9325fd079a8019c5053a389ff55d23"}, - {file = "fonttools-4.55.1-cp38-cp38-win32.whl", hash = "sha256:9f202703720a7cc0049f2ed1a2047925e264384eb5cc4d34f80200d7b17f1b6a"}, - {file = "fonttools-4.55.1-cp38-cp38-win_amd64.whl", hash = "sha256:2efff20aed0338d37c2ff58766bd67f4b9607ded61cf3d6baf1b3e25ea74e119"}, - {file = "fonttools-4.55.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3032d9bf010c395e6eca2851666cafb1f4ecde85d420188555e928ad0144326e"}, - {file = "fonttools-4.55.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0794055588c30ffe25426048e8a7c0a5271942727cd61fc939391e37f4d580d5"}, - {file = "fonttools-4.55.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ba980e3ffd3206b8c63a365f90dc10eeec27da946d5ee5373c3a325a46d77c"}, - {file = "fonttools-4.55.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d7063babd7434a17a5e355e87de9b2306c85a5c19c7da0794be15c58aab0c39"}, - {file = "fonttools-4.55.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ed84c15144015a58ef550dd6312884c9fb31a2dbc31a6467bcdafd63be7db476"}, - {file = "fonttools-4.55.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e89419d88b0bbfdb55209e03a17afa2d20db3c2fa0d785543c9d0875668195d5"}, - {file = "fonttools-4.55.1-cp39-cp39-win32.whl", hash = "sha256:6eb781e401b93cda99356bc043ababead2a5096550984d8a4ecf3d5c9f859dc2"}, - {file = "fonttools-4.55.1-cp39-cp39-win_amd64.whl", hash = "sha256:db1031acf04523c5a51c3e1ae19c21a1c32bc5f820a477dd4659a02f9cb82002"}, - {file = "fonttools-4.55.1-py3-none-any.whl", hash = "sha256:4bcfb11f90f48b48c366dd638d773a52fca0d1b9e056dc01df766bf5835baa08"}, - {file = "fonttools-4.55.1.tar.gz", hash = "sha256:85bb2e985718b0df96afc659abfe194c171726054314b019dbbfed31581673c7"}, + {file = "fonttools-4.55.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bef0f8603834643b1a6419d57902f18e7d950ec1a998fb70410635c598dc1a1e"}, + {file = "fonttools-4.55.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:944228b86d472612d3b48bcc83b31c25c2271e63fdc74539adfcfa7a96d487fb"}, + {file = "fonttools-4.55.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f0e55f5da594b85f269cfbecd2f6bd3e07d0abba68870bc3f34854de4fa4678"}, + {file = "fonttools-4.55.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b1a6e576db0c83c1b91925bf1363478c4bb968dbe8433147332fb5782ce6190"}, + {file = "fonttools-4.55.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:616368b15716781bc84df5c2191dc0540137aaef56c2771eb4b89b90933f347a"}, + {file = "fonttools-4.55.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7bbae4f3915225c2c37670da68e2bf18a21206060ad31dfb95fec91ef641caa7"}, + {file = "fonttools-4.55.2-cp310-cp310-win32.whl", hash = "sha256:8b02b10648d69d67a7eb055f4d3eedf4a85deb22fb7a19fbd9acbae7c7538199"}, + {file = "fonttools-4.55.2-cp310-cp310-win_amd64.whl", hash = "sha256:bbea0ab841113ac8e8edde067e099b7288ffc6ac2dded538b131c2c0595d5f77"}, + {file = "fonttools-4.55.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d34525e8141286fa976e14806639d32294bfb38d28bbdb5f6be9f46a1cd695a6"}, + {file = "fonttools-4.55.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ecd1c2b1c2ec46bb73685bc5473c72e16ed0930ef79bc2919ccadc43a99fb16"}, + {file = "fonttools-4.55.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9008438ad59e5a8e403a62fbefef2b2ff377eb3857d90a3f2a5f4d674ff441b2"}, + {file = "fonttools-4.55.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:131591ac8d7a47043aaf29581aba755ae151d46e49d2bf49608601efd71e8b4d"}, + {file = "fonttools-4.55.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4c83381c3e3e3d9caa25527c4300543578341f21aae89e4fbbb4debdda8d82a2"}, + {file = "fonttools-4.55.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:42aca564b575252fd9954ed0d91d97a24de24289a16ce8ff74ed0bdf5ecebf11"}, + {file = "fonttools-4.55.2-cp311-cp311-win32.whl", hash = "sha256:c6457f650ebe15baa17fc06e256227f0a47f46f80f27ec5a0b00160de8dc2c13"}, + {file = "fonttools-4.55.2-cp311-cp311-win_amd64.whl", hash = "sha256:5cfa67414d7414442a5635ff634384101c54f53bb7b0e04aa6a61b013fcce194"}, + {file = "fonttools-4.55.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:18f082445b8fe5e91c53e6184f4c1c73f3f965c8bcc614c6cd6effd573ce6c1a"}, + {file = "fonttools-4.55.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c0f91adbbd706e8acd1db73e3e510118e62d0ffb651864567dccc5b2339f90"}, + {file = "fonttools-4.55.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d8ccce035320d63dba0c35f52499322f5531dbe85bba1514c7cea26297e4c54"}, + {file = "fonttools-4.55.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96e126df9615df214ec7f04bebcf60076297fbc10b75c777ce58b702d7708ffb"}, + {file = "fonttools-4.55.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:508ebb42956a7a931c4092dfa2d9b4ffd4f94cea09b8211199090d2bd082506b"}, + {file = "fonttools-4.55.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c1b9de46ef7b683d50400abf9f1578eaceee271ff51c36bf4b7366f2be29f498"}, + {file = "fonttools-4.55.2-cp312-cp312-win32.whl", hash = "sha256:2df61d9fc15199cc86dad29f64dd686874a3a52dda0c2d8597d21f509f95c332"}, + {file = "fonttools-4.55.2-cp312-cp312-win_amd64.whl", hash = "sha256:d337ec087da8216a828574aa0525d869df0a2ac217a2efc1890974ddd1fbc5b9"}, + {file = "fonttools-4.55.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:10aff204e2edee1d312fa595c06f201adf8d528a3b659cfb34cd47eceaaa6a26"}, + {file = "fonttools-4.55.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:09fe922a3eff181fd07dd724cdb441fb6b9fc355fd1c0f1aa79aca60faf1fbdd"}, + {file = "fonttools-4.55.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:487e1e8b524143a799bda0169c48b44a23a6027c1bb1957d5a172a7d3a1dd704"}, + {file = "fonttools-4.55.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b1726872e09268bbedb14dc02e58b7ea31ecdd1204c6073eda4911746b44797"}, + {file = "fonttools-4.55.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6fc88cfb58b0cd7b48718c3e61dd0d0a3ee8e2c86b973342967ce09fbf1db6d4"}, + {file = "fonttools-4.55.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e857fe1859901ad8c5cab32e0eebc920adb09f413d2d73b74b677cf47b28590c"}, + {file = "fonttools-4.55.2-cp313-cp313-win32.whl", hash = "sha256:81ccd2b3a420b8050c7d9db3be0555d71662973b3ef2a1d921a2880b58957db8"}, + {file = "fonttools-4.55.2-cp313-cp313-win_amd64.whl", hash = "sha256:d559eb1744c7dcfa90ae60cb1a4b3595e898e48f4198738c321468c01180cd83"}, + {file = "fonttools-4.55.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6b5917ef79cac8300b88fd6113003fd01bbbbea2ea060a27b95d8f77cb4c65c2"}, + {file = "fonttools-4.55.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:663eba5615d6abaaf616432354eb7ce951d518e43404371bcc2b0694ef21e8d6"}, + {file = "fonttools-4.55.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:803d5cef5fc47f44f5084d154aa3d6f069bb1b60e32390c225f897fa19b0f939"}, + {file = "fonttools-4.55.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bc5f100de0173cc39102c0399bd6c3bd544bbdf224957933f10ee442d43cddd"}, + {file = "fonttools-4.55.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3d9bbc1e380fdaf04ad9eabd8e3e6a4301eaf3487940893e9fd98537ea2e283b"}, + {file = "fonttools-4.55.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:42a9afedff07b6f75aa0f39b5e49922ac764580ef3efce035ca30284b2ee65c8"}, + {file = "fonttools-4.55.2-cp38-cp38-win32.whl", hash = "sha256:f1c76f423f1a241df08f87614364dff6e0b7ce23c962c1b74bd995ec7c0dad13"}, + {file = "fonttools-4.55.2-cp38-cp38-win_amd64.whl", hash = "sha256:25062b6ca03464dd5179fc2040fb19e03391b7cc49b9cc4f879312e638605c5c"}, + {file = "fonttools-4.55.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d1100d8e665fe386a79cab59446992de881ea74d0d6c191bb988642692aa2421"}, + {file = "fonttools-4.55.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dbdc251c5e472e5ae6bc816f9b82718b8e93ff7992e7331d6cf3562b96aa268e"}, + {file = "fonttools-4.55.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0bf24d2b02dbc9376d795a63062632ff73e3e9e60c0229373f500aed7e86dd7"}, + {file = "fonttools-4.55.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4ff250ed4ff05015dfd9cf2adf7570c7a383ca80f4d9732ac484a5ed0d8453c"}, + {file = "fonttools-4.55.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44cf2a98aa661dbdeb8c03f5e405b074e2935196780bb729888639f5276067d9"}, + {file = "fonttools-4.55.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22ef222740eb89d189bf0612eb98fbae592c61d7efeac51bfbc2a1592d469557"}, + {file = "fonttools-4.55.2-cp39-cp39-win32.whl", hash = "sha256:93f439ca27e55f585e7aaa04a74990acd983b5f2245e41d6b79f0a8b44e684d8"}, + {file = "fonttools-4.55.2-cp39-cp39-win_amd64.whl", hash = "sha256:627cf10d6f5af5bec6324c18a2670f134c29e1b7dce3fb62e8ef88baa6cba7a9"}, + {file = "fonttools-4.55.2-py3-none-any.whl", hash = "sha256:8e2d89fbe9b08d96e22c7a81ec04a4e8d8439c31223e2dc6f2f9fc8ff14bdf9f"}, + {file = "fonttools-4.55.2.tar.gz", hash = "sha256:45947e7b3f9673f91df125d375eb57b9a23f2a603f438a1aebf3171bffa7a205"}, ] [package.extras] @@ -1528,13 +1528,13 @@ source = ["Cython (>=3.0.11)"] [[package]] name = "mako" -version = "1.3.6" +version = "1.3.7" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." optional = false python-versions = ">=3.8" files = [ - {file = "Mako-1.3.6-py3-none-any.whl", hash = "sha256:a91198468092a2f1a0de86ca92690fb0cfc43ca90ee17e15d93662b4c04b241a"}, - {file = "mako-1.3.6.tar.gz", hash = "sha256:9ec3a1583713479fae654f83ed9fa8c9a4c16b7bb0daba0e6bbebff50c0d983d"}, + {file = "Mako-1.3.7-py3-none-any.whl", hash = "sha256:d18f990ad57f800ce8e76cbfb0b74afe471c293517e9f5003ace6dad5aa72c36"}, + {file = "mako-1.3.7.tar.gz", hash = "sha256:20405b1232e0759f0e7d87b01f6bb94fce0761747f1cb876ecf90bd512d0b639"}, ] [package.dependencies] @@ -2222,13 +2222,13 @@ pybtex = ">=0.16" [[package]] name = "pydantic" -version = "2.10.2" +version = "2.10.3" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.10.2-py3-none-any.whl", hash = "sha256:cfb96e45951117c3024e6b67b25cdc33a3cb7b2fa62e239f7af1378358a1d99e"}, - {file = "pydantic-2.10.2.tar.gz", hash = "sha256:2bc2d7f17232e0841cbba4641e65ba1eb6fafb3a08de3a091ff3ce14a197c4fa"}, + {file = "pydantic-2.10.3-py3-none-any.whl", hash = "sha256:be04d85bbc7b65651c5f8e6b9976ed9c6f41782a55524cef079a34a0bb82144d"}, + {file = "pydantic-2.10.3.tar.gz", hash = "sha256:cb5ac360ce894ceacd69c403187900a02c4b20b693a9dd1d643e1effab9eadf9"}, ] [package.dependencies] @@ -2606,13 +2606,13 @@ files = [ [[package]] name = "qibo" -version = "0.2.13" +version = "0.2.14" description = "A framework for quantum computing with hardware acceleration." optional = false python-versions = "<3.13,>=3.9" files = [ - {file = "qibo-0.2.13-py3-none-any.whl", hash = "sha256:2c67234fdbdd7bfceed4df0fe8d3d9bede9354c4e18b2c061098b002c665e0f3"}, - {file = "qibo-0.2.13.tar.gz", hash = "sha256:3a815f2262b4d38d57127653df83dbbcbe7e941e8fb9a53c8a107f303b270dc4"}, + {file = "qibo-0.2.14-py3-none-any.whl", hash = "sha256:4641280f6f5afbdc6042c8e234b4c384b3085b2885b2138fa5a4fa4d70ba5366"}, + {file = "qibo-0.2.14.tar.gz", hash = "sha256:e3d21a8eb1b2625e80d3b86adc4d59ac0bdd00c60daed75d45ac7ad9a57e3907"}, ] [package.dependencies] @@ -2847,13 +2847,13 @@ type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (>=1.12 [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [[package]] diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index c8176ae39..f95385718 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -36,34 +36,27 @@ def flipping_sequence( if rx90: sequence |= natives.RX90() - - for _ in range(flips): - qd_channel, qd_pulse = natives.RX90()[0] - - qd_detuned = update.replace( - qd_pulse, delta_amplitude=qd_pulse.amplitude + delta_amplitude - ) - - sequence.append((qd_channel, qd_detuned)) - sequence.append((qd_channel, qd_detuned)) - sequence.append((qd_channel, qd_detuned)) - sequence.append((qd_channel, qd_detuned)) - - sequence |= natives.MZ() - else: sequence |= natives.R(theta=np.pi / 2) - for _ in range(flips): + for _ in range(flips): + + if rx90: + qd_channel, qd_pulse = natives.RX90()[0] + else: qd_channel, qd_pulse = natives.RX()[0] - qd_detuned = update.replace( - qd_pulse, amplitude=qd_pulse.amplitude + delta_amplitude - ) + qd_detuned = update.replace( + qd_pulse, delta_amplitude=qd_pulse.amplitude + delta_amplitude + ) + sequence.append((qd_channel, qd_detuned)) + sequence.append((qd_channel, qd_detuned)) + + if rx90: sequence.append((qd_channel, qd_detuned)) sequence.append((qd_channel, qd_detuned)) - sequence |= natives.MZ() + sequence |= natives.MZ() return sequence diff --git a/tests/test_protocols.py b/tests/test_protocols.py index 0d4863ccb..07f3ff3ea 100644 --- a/tests/test_protocols.py +++ b/tests/test_protocols.py @@ -170,7 +170,7 @@ def test_extract_rabi(): extract_rabi(RabiAmplitudeEFData) -def test_extract_rabi(): +def test_extract_rabi_rx90(): assert extract_rabi(RabiAmplitudeData(rx90=True)) == ( "amp", "Amplitude [dimensionless]", From 01a4d1ae0a6af8683c7666d43d0b061c4bea3975 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Fri, 6 Dec 2024 14:12:55 +0100 Subject: [PATCH 68/73] Update utils.py change syntax --- src/qibocal/protocols/rabi/utils.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/qibocal/protocols/rabi/utils.py b/src/qibocal/protocols/rabi/utils.py index 540affcb2..dc609e8c1 100644 --- a/src/qibocal/protocols/rabi/utils.py +++ b/src/qibocal/protocols/rabi/utils.py @@ -243,11 +243,7 @@ def sequence_amplitude( for q in targets: natives = platform.natives.single_qubit[q] - if rx90: - qd_channel, qd_pulse = natives.RX90()[0] - else: - qd_channel, qd_pulse = natives.RX()[0] - + qd_channel, qd_pulse = natives.RX90()[0] if rx90 else natives.RX()[0] ro_channel, ro_pulse = natives.MZ()[0] if params.pulse_length is not None: @@ -283,11 +279,7 @@ def sequence_length( for q in targets: natives = platform.natives.single_qubit[q] - if rx90: - qd_channel, qd_pulse = natives.RX90()[0] - else: - qd_channel, qd_pulse = natives.RX()[0] - + qd_channel, qd_pulse = natives.RX90()[0] if rx90 else natives.RX()[0] ro_channel, ro_pulse = natives.MZ()[0] if params.pulse_amplitude is not None: From c5bb28fda9b5047f58c61b254c24635593d9d535 Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Fri, 6 Dec 2024 18:05:31 +0100 Subject: [PATCH 69/73] improve documentation for flipping and rabi protocols --- doc/source/protocols/flipping.rst | 6 ++++-- doc/source/protocols/rabi/rabi.rst | 12 ++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/doc/source/protocols/flipping.rst b/doc/source/protocols/flipping.rst index 9503e5349..969330d79 100644 --- a/doc/source/protocols/flipping.rst +++ b/doc/source/protocols/flipping.rst @@ -12,7 +12,9 @@ after the initial flip, in the over rotations one the final state will be closer By fitting the resulting data with a sinusoidal function, we can determine the delta amplitude, which allows us to refine the :math:`\pi` pulse amplitude. -We implemented also a version of the flipping protocol to calibrate the drive pulse amplitude of the :math:`R_x(\pi/2)` rotations, in this case each :math:`R_x(\pi)` rotation is replaced by two math:`R_x(\pi/2)` rotations. +We implemented also a version of the flipping protocol to calibrate the drive pulse amplitude of the :math:`R_x(\pi/2)` rotations, +in this case each :math:`R_x(\pi)` rotation is replaced by two :math:`R_x(\pi/2)` rotations. +The main reasons for implementing protocols to fine tune the `R_x(\pi/2)` rotations are explained in :ref:`rabi`. Parameters ^^^^^^^^^^ @@ -47,7 +49,7 @@ If the same experiment is run setting the `rx90: True` the flipping is performed delta_amplitude: 0.05 nflips_max: 30 nflips_step: 1 - rx90: True + rx90: True Requirements ^^^^^^^^^^^^ diff --git a/doc/source/protocols/rabi/rabi.rst b/doc/source/protocols/rabi/rabi.rst index e883aee85..21f5f6333 100644 --- a/doc/source/protocols/rabi/rabi.rst +++ b/doc/source/protocols/rabi/rabi.rst @@ -29,9 +29,17 @@ Rabi rate is larger than the decay and the pure dephasing rate, where :math:`\Omega_R` is the Rabi frequency and :math:`\tau` the decay time. -In qibocal we implemented also another version of the Rabi experiment which can be used to tune the amplitude (duration) of the drive pulse in order + +Since many routines and protocols in quantum computing are based on `R_x(\pi/2)` rotations, in qibocal we implemented +also another version of the Rabi experiment which can be used to tune the amplitude (duration) of the drive pulse in order to excite the qubit from the ground state up to state :math:`\frac{\ket{0}-i\ket{1}}{\sqrt{2}}`. +The possibility to calibrate an `R_x(\pi/2)` rotation as native gate allows us to remove the errors that could arise from assuming that the `R_x(\pi/2)` amplitude (duration) +is exactly half that of the `R_x(\pi)` amplitude (duration). This assumption presumes a perfectly linear response of the qubit to the drive pulse, which is +often not the case due to nonlinearities in the qubit's response or imperfections in the pulse shaping :cite:p:`Chen2018MetrologyOQ`. + +In this case the pulse sequence is the same as before with the only difference that instad of a single `R_x(\pi)` pulse we use two concatenated `R_x(\pi/2)` pulses. + Parameters ^^^^^^^^^^ @@ -111,7 +119,7 @@ to excite the qubit from the ground state up to state :math:`\ket{1}`. All these example runcards can be modified to calibrate the amplitude (duration) of the drive pulse to excite the qubit from the ground state up to state :math:`\frac{\ket{0}-i\ket{1}}{\sqrt{2}}` by simply setting the `rx90` parameter to `True`. -In the following we show an example runcard +In the following we show an example runcard for the amplitude calibration of the `R_x(\pi/2)`. .. code-block:: yaml From f62bbc3a9fa09e94e7552fc8bfd6f86437836123 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Sat, 7 Dec 2024 10:02:31 +0100 Subject: [PATCH 70/73] Update doc/source/protocols/rabi/rabi.rst Co-authored-by: Alessandro Candido --- doc/source/protocols/rabi/rabi.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/protocols/rabi/rabi.rst b/doc/source/protocols/rabi/rabi.rst index 21f5f6333..d28f33c4c 100644 --- a/doc/source/protocols/rabi/rabi.rst +++ b/doc/source/protocols/rabi/rabi.rst @@ -38,7 +38,7 @@ The possibility to calibrate an `R_x(\pi/2)` rotation as native gate allows us t is exactly half that of the `R_x(\pi)` amplitude (duration). This assumption presumes a perfectly linear response of the qubit to the drive pulse, which is often not the case due to nonlinearities in the qubit's response or imperfections in the pulse shaping :cite:p:`Chen2018MetrologyOQ`. -In this case the pulse sequence is the same as before with the only difference that instad of a single `R_x(\pi)` pulse we use two concatenated `R_x(\pi/2)` pulses. +In this case the pulse sequence is the same as before with the only difference that instead of a single `R_x(\pi)` pulse we use two concatenated `R_x(\pi/2)` pulses. Parameters ^^^^^^^^^^ From 832d0e9139e947588267759a729328949fe0592e Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Wed, 11 Dec 2024 17:17:40 +0100 Subject: [PATCH 71/73] create first RX90 of the sequence always using R.(theta=pi/2) --- src/qibocal/protocols/flipping.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index 2cdda6b73..0fc086ec9 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -34,10 +34,7 @@ def flipping_sequence( sequence = PulseSequence() natives = platform.natives.single_qubit[qubit] - if rx90: - sequence |= natives.RX90() - else: - sequence |= natives.R(theta=np.pi / 2) + sequence |= natives.R(theta=np.pi / 2) for _ in range(flips): From 05c2886a578834e74a3b73248994114733dcacce Mon Sep 17 00:00:00 2001 From: ElStabilini Date: Wed, 11 Dec 2024 17:36:16 +0100 Subject: [PATCH 72/73] fix tabs --- doc/source/protocols/flipping.rst | 24 ++++++++++++------------ doc/source/protocols/rabi/rabi.rst | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/doc/source/protocols/flipping.rst b/doc/source/protocols/flipping.rst index 969330d79..0ac31d154 100644 --- a/doc/source/protocols/flipping.rst +++ b/doc/source/protocols/flipping.rst @@ -28,12 +28,12 @@ It follows a runcard example of this experiment. .. code-block:: yaml - - id: flipping - operation: flipping - parameters: - delta_amplitude: 0.05 - nflips_max: 30 - nflips_step: 1 + - id: flipping + operation: flipping + parameters: + delta_amplitude: 0.05 + nflips_max: 30 + nflips_step: 1 The expected output is the following: @@ -43,12 +43,12 @@ If the same experiment is run setting the `rx90: True` the flipping is performed .. code-block:: yaml - - id: flipping - operation: flipping - parameters: - delta_amplitude: 0.05 - nflips_max: 30 - nflips_step: 1 + - id: flipping + operation: flipping + parameters: + delta_amplitude: 0.05 + nflips_max: 30 + nflips_step: 1 rx90: True Requirements diff --git a/doc/source/protocols/rabi/rabi.rst b/doc/source/protocols/rabi/rabi.rst index 21f5f6333..742420a89 100644 --- a/doc/source/protocols/rabi/rabi.rst +++ b/doc/source/protocols/rabi/rabi.rst @@ -133,7 +133,7 @@ In the following we show an example runcard for the amplitude calibration of the pulse_length: 40 nshots: 1024 relaxation_time: 50000 - rx90: True + rx90: True .. image:: rabi_amplitude_rx90 From 837cc08c174fe66854bd96f6041f13ae7e693433 Mon Sep 17 00:00:00 2001 From: Elisa Stabilini Date: Wed, 11 Dec 2024 18:10:54 +0100 Subject: [PATCH 73/73] Update src/qibocal/protocols/flipping.py Co-authored-by: Andrea Pasquale --- src/qibocal/protocols/flipping.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qibocal/protocols/flipping.py b/src/qibocal/protocols/flipping.py index 0fc086ec9..ba3247f75 100644 --- a/src/qibocal/protocols/flipping.py +++ b/src/qibocal/protocols/flipping.py @@ -44,7 +44,7 @@ def flipping_sequence( qd_channel, qd_pulse = natives.RX()[0] qd_detuned = update.replace( - qd_pulse, delta_amplitude=qd_pulse.amplitude + delta_amplitude + qd_pulse, amplitude=qd_pulse.amplitude + delta_amplitude ) sequence.append((qd_channel, qd_detuned)) sequence.append((qd_channel, qd_detuned))