qibocal.protocols.rabi package#
Submodules#
qibocal.protocols.rabi.amplitude module#
- qibocal.protocols.rabi.amplitude.rabi_amplitude = Routine(acquisition=<function _acquisition>, fit=<function _fit>, report=<function _plot>, update=<function _update>, two_qubit_gates=False)#
RabiAmplitude Routine object.
qibocal.protocols.rabi.amplitude_frequency module#
Rabi experiment that sweeps amplitude and frequency.
- qibocal.protocols.rabi.amplitude_frequency.rabi_amplitude_frequency = Routine(acquisition=<function _acquisition>, fit=<function _fit>, report=<function _plot>, update=<function _update>, two_qubit_gates=False)#
Rabi amplitude with frequency tuning.
qibocal.protocols.rabi.amplitude_frequency_signal module#
Rabi experiment that sweeps amplitude and frequency (with probability).
- class qibocal.protocols.rabi.amplitude_frequency_signal.RabiAmplitudeSignalResults(amplitude: dict[Union[int, str], Union[float, list[float]]], length: dict[Union[int, str], Union[float, list[float]]], fitted_parameters: dict[Union[int, str], dict[str, float]], rx90: bool)[source]#
Bases:
Results
RabiAmplitude outputs.
- length: dict[Union[int, str], Union[float, list[float]]]#
Drive pulse duration. Same for all qubits.
- class qibocal.protocols.rabi.amplitude_frequency_signal.RabiAmplitudeFrequencySignalParameters(min_amp: float, max_amp: float, step_amp: float, min_freq: int, max_freq: int, step_freq: int, rx90: bool = False, pulse_length: Optional[float] = None)[source]#
Bases:
Parameters
RabiAmplitudeFrequency runcard inputs.
- class qibocal.protocols.rabi.amplitude_frequency_signal.RabiAmplitudeFreqSignalData(rx90: bool, durations: dict[typing.Union[int, str], float] = <factory>, data: dict[typing.Union[int, str], numpy.ndarray[typing.Any, numpy.dtype[dtype([('amp', '<f8'), ('freq', '<f8'), ('signal', '<f8'), ('phase', '<f8')])]]] = <factory>)[source]#
Bases:
Data
RabiAmplitudeFreqSignal data acquisition.
- _to_npz(path: Path, filename: str)#
Helper function to use np.savez while converting keys into strings.
- property pairs#
Access qubit pairs ordered alphanumerically from data structure.
- property qubits#
Access qubits from data structure.
- data: dict[typing.Union[int, str], numpy.ndarray[typing.Any, numpy.dtype[dtype([('amp', '<f8'), ('freq', '<f8'), ('signal', '<f8'), ('phase', '<f8')])]]]#
Raw data acquired.
- qibocal.protocols.rabi.amplitude_frequency_signal._update(results: RabiAmplitudeFrequencySignalResults, platform: CalibrationPlatform, target: Union[int, str])[source]#
- qibocal.protocols.rabi.amplitude_frequency_signal.rabi_amplitude_frequency_signal = Routine(acquisition=<function _acquisition>, fit=<function _fit>, report=<function _plot>, update=<function _update>, two_qubit_gates=False)#
Rabi amplitude with frequency tuning.
qibocal.protocols.rabi.amplitude_signal module#
- class qibocal.protocols.rabi.amplitude_signal.RabiAmplitudeSignalResults(amplitude: dict[Union[int, str], Union[float, list[float]]], length: dict[Union[int, str], Union[float, list[float]]], fitted_parameters: dict[Union[int, str], dict[str, float]], rx90: bool)[source]#
Bases:
Results
RabiAmplitude outputs.
- length: dict[Union[int, str], Union[float, list[float]]]#
Drive pulse duration. Same for all qubits.
- class qibocal.protocols.rabi.amplitude_signal.RabiAmplitudeSignalParameters(min_amp: float, max_amp: float, step_amp: float, pulse_length: Optional[float] = None, rx90: bool = False)[source]#
Bases:
Parameters
RabiAmplitude runcard inputs.
- class qibocal.protocols.rabi.amplitude_signal.RabiAmplitudeSignalData(rx90: bool, durations: dict[typing.Union[int, str], float] = <factory>, data: dict[typing.Union[int, str], numpy.ndarray[typing.Any, numpy.dtype[dtype([('amp', '<f8'), ('signal', '<f8'), ('phase', '<f8')])]]] = <factory>)[source]#
Bases:
Data
RabiAmplitudeSignal data acquisition.
- _to_npz(path: Path, filename: str)#
Helper function to use np.savez while converting keys into strings.
- property pairs#
Access qubit pairs ordered alphanumerically from data structure.
- property qubits#
Access qubits from data structure.
- register_qubit(dtype, data_keys, data_dict)#
Store output for single qubit.
- data: dict[typing.Union[int, str], numpy.ndarray[typing.Any, numpy.dtype[dtype([('amp', '<f8'), ('signal', '<f8'), ('phase', '<f8')])]]]#
Raw data acquired.
- qibocal.protocols.rabi.amplitude_signal.rabi_amplitude_signal = Routine(acquisition=<function _acquisition>, fit=<function _fit>, report=<function _plot>, update=<function _update>, two_qubit_gates=False)#
RabiAmplitude Routine object.
- qibocal.protocols.rabi.amplitude_signal._fit(data: RabiAmplitudeSignalData) RabiAmplitudeSignalResults [source]#
Post-processing for RabiAmplitude.
- qibocal.protocols.rabi.amplitude_signal.RabiAmpSignalType = dtype([('amp', '<f8'), ('signal', '<f8'), ('phase', '<f8')])#
Custom dtype for rabi amplitude.
qibocal.protocols.rabi.ef module#
- qibocal.protocols.rabi.ef.rabi_amplitude_ef = Routine(acquisition=<function _acquisition>, fit=<function _fit>, report=<function _plot>, update=<function _update>, two_qubit_gates=False)#
RabiAmplitudeEF Routine object.
qibocal.protocols.rabi.length module#
- qibocal.protocols.rabi.length.rabi_length = Routine(acquisition=<function _acquisition>, fit=<function _fit>, report=<function _plot>, update=<function _update>, two_qubit_gates=False)#
RabiLength Routine object.
qibocal.protocols.rabi.length_frequency module#
Rabi experiment that sweeps length and frequency (with probability).
- qibocal.protocols.rabi.length_frequency.rabi_length_frequency = Routine(acquisition=<function _acquisition>, fit=<function _fit>, report=<function _plot>, update=<function _update>, two_qubit_gates=False)#
Rabi length with frequency tuning.
qibocal.protocols.rabi.length_frequency_signal module#
Rabi experiment that sweeps length and frequency.
- qibocal.protocols.rabi.length_frequency_signal.rabi_length_frequency_signal = Routine(acquisition=<function _acquisition>, fit=<function _fit>, report=<function _plot>, update=<function _update>, two_qubit_gates=False)#
Rabi length with frequency tuning.
- class qibocal.protocols.rabi.length_frequency_signal.RabiLengthFrequencySignalParameters(pulse_duration_start: float, pulse_duration_end: float, pulse_duration_step: float, min_freq: int, max_freq: int, step_freq: int, pulse_amplitude: Optional[float] = None, rx90: bool = False, interpolated_sweeper: bool = False)[source]#
Bases:
Parameters
RabiLengthFrequency runcard inputs.
- class qibocal.protocols.rabi.length_frequency_signal.RabiLengthFreqSignalData(rx90: bool, amplitudes: dict[typing.Union[int, str], float] = <factory>, data: dict[typing.Union[int, str], numpy.ndarray[typing.Any, numpy.dtype[dtype([('len', '<f8'), ('freq', '<f8'), ('signal', '<f8'), ('phase', '<f8')])]]] = <factory>)[source]#
Bases:
Data
RabiLengthFreqSignal data acquisition.
- _to_npz(path: Path, filename: str)#
Helper function to use np.savez while converting keys into strings.
- property pairs#
Access qubit pairs ordered alphanumerically from data structure.
- property qubits#
Access qubits from data structure.
- data: dict[typing.Union[int, str], numpy.ndarray[typing.Any, numpy.dtype[dtype([('len', '<f8'), ('freq', '<f8'), ('signal', '<f8'), ('phase', '<f8')])]]]#
Raw data acquired.
- qibocal.protocols.rabi.length_frequency_signal._update(results: RabiLengthFrequencySignalResults, platform: CalibrationPlatform, target: Union[int, str])[source]#
- class qibocal.protocols.rabi.length_frequency_signal.RabiLengthFrequencySignalResults(length: dict[Union[int, str], Union[int, list[float]]], amplitude: dict[Union[int, str], Union[float, list[float]]], fitted_parameters: dict[Union[int, str], dict[str, float]], rx90: bool, frequency: dict[Union[int, str], Union[float, list[float]]])[source]#
Bases:
RabiLengthSignalResults
RabiLengthFrequency outputs.
- _to_npz(path: Path, filename: str)#
Helper function to use np.savez while converting keys into strings.
qibocal.protocols.rabi.length_signal module#
- qibocal.protocols.rabi.length_signal.rabi_length_signal = Routine(acquisition=<function _acquisition>, fit=<function _fit>, report=<function _plot>, update=<function _update>, two_qubit_gates=False)#
RabiLength Routine object.
- class qibocal.protocols.rabi.length_signal.RabiLengthSignalResults(length: dict[Union[int, str], Union[int, list[float]]], amplitude: dict[Union[int, str], Union[float, list[float]]], fitted_parameters: dict[Union[int, str], dict[str, float]], rx90: bool)[source]#
Bases:
Results
RabiLengthSignal outputs.
- amplitude: dict[Union[int, str], Union[float, list[float]]]#
Pi pulse amplitude. Same for all qubits.
qibocal.protocols.rabi.utils module#
- qibocal.protocols.rabi.utils.rabi_amplitude_function(x, offset, amplitude, period, phase)[source]#
Fit function of Rabi amplitude signal experiment.
- Parameters:
x – Input data.
- qibocal.protocols.rabi.utils.rabi_length_function(x, offset, amplitude, period, phase, t2_inv)[source]#
Fit function of Rabi length signal experiment.
- Parameters:
x – Input data.
- qibocal.protocols.rabi.utils.period_correction_factor(phase: float)[source]#
Correct period by taking phase into account.
https://github.com/qiboteam/qibocal/issues/656
We want to find the first maximum or minimum which will correspond to an exchange of population between 0 and 1. To find it we need to solve the following equation \(\cos(2 \pi x / T + \phi) = \pm 1\) which will give us the following solution
\[x = ( k - \phi / \pi) T / 2\]for integer \(k\), which is chosen such that we get the smallest multiplicative correction compared to \(T/2\).
- qibocal.protocols.rabi.utils.sequence_amplitude(targets: list[Union[int, str]], params: Parameters, platform: Platform, rx90: bool) tuple[qibolab._core.sequence.PulseSequence, dict, dict, dict] [source]#
Return sequence for rabi amplitude.
- qibocal.protocols.rabi.utils.sequence_length(targets: list[Union[int, str]], params: Parameters, platform: Platform, rx90: bool, use_align: bool = False) tuple[qibolab._core.sequence.PulseSequence, dict, dict, dict] [source]#
Return sequence for rabi length.