Cryoscope experiment#
In this section we show how to run a cryoscope experiment using Qibocal.
The goal of the Cryoscope experiment is to reconstruct the shape of the flux pulse sent to the qubit in order to determine correction for signal distortions. To do this we exploit the dependence of the transition frequency of a transmon qubit on the magnetic flux
where \(E_C\) is the charging energy, \(E_J\) is the sum of the Jospehson energies and \(\Phi_0\) is the flux quantum. The routine implementation follows the description given in [20]:
Cryoscope#
The cryoscope experiment consists of a Ramsey-like experiment where a flux pulse is embedded between the two \(\pi/2\) pulses separated by a fixed time interval \(T\). The first \(\pi /2\) rotation around the \(Y\) axis change the qubit state from \(\ket{0}\) to \(\frac{\ket{0}+\ket{1}}{\sqrt{2}}\); then the flux pulse transforms the qubit state to \(\frac{\ket{0}+e^{i\phi_\tau}\ket{1}}{\sqrt{2}}\) where
Then the experiment is completed with a \(\pi/2\) rotation either around the \(y\) axis or around the \(x\) axis in order to obtain, respectively the \(\langle Y \rangle\) or \(\langle X \rangle\) component of the Bloch vector. From the \(\langle X \rangle\) and \(\langle Y \rangle\) components of the Bloch vector we can derive the relative phase \(\phi_\tau\) which in turn can be used to computed
and then we can extract an estimate of the effective flux pulse \(\Phi_Q(t)\) on the qubit by inverting (1).
Flux amplitude frequency#
In Qibocal implementation of Cryoscope is necessary to run a flux amplitude-frequency experiment before performing a cryoscope experiment. This auxiliary routine is used determine the coefficients of the quadratic relationship between the qubit frequency and the flux pulse amplitude in the vicinity of the sweetspot.
Parameters#
- class qibocal.protocols.flux_amplitude_frequency.FluxAmplitudeFrequencyParameters(amplitude_min: int, amplitude_max: int, amplitude_step: int, duration: float)[source]
FluxAmplitudeFrequency runcard inputs.
- amplitude_min: int
Minimum flux pulse amplitude.
- amplitude_max: int
Maximum flux amplitude.
- amplitude_step: int
Flux pulse amplitude step.
- duration: float
Flux pulse duration.
- hardware_average: bool = False
By default hardware average will be performed.
- nshots: int
Number of executions on hardware.
- relaxation_time: float
Wait time for the qubit to decohere back to the gnd state.
Example#
The following is an example of runcard that can be used to acquire the coefficients for the amplitude-frequency relation for the flux pulse
- id: flux amplitude frequency
operation: flux_amplitude_frequency
parameters:
amplitude_max: 0.7
amplitude_min: 0.0
amplitude_step: 0.001
duration: 60
relaxation_time: 50000
The expected output is the following:

Parameters#
- class qibocal.protocols.two_qubit_interaction.cryoscope.CryoscopeParameters(duration_min: int, duration_max: int, duration_step: int, flux_pulse_amplitude: float, fir: int = 20, unrolling: bool = True)[source]
Cryoscope runcard inputs.
- duration_min: int
Minimum flux pulse duration.
- duration_max: int
Maximum flux duration start.
- duration_step: int
Flux pulse duration step.
- flux_pulse_amplitude: float
Flux pulse amplitude.
- fir: int = 20
Number of feedforward taps to be optimized after IIR.
- unrolling: bool = True
- hardware_average: bool = False
By default hardware average will be performed.
- nshots: int
Number of executions on hardware.
- relaxation_time: float
Wait time for the qubit to decohere back to the gnd state.
Example#
A possible runcard to launch a Cryoscope experiment could be the following:
- id: cryoscope
operation: cryoscope
parameters:
duration_max: 80
duration_min: 1
duration_step: 1
flux_pulse_amplitude: 0.7
relaxation_time: 50000
The expected output is the following:

Note
In the case where there are no filters the protocol will compute the FIR and the IIR filters. If the filters are already present the computation of the filters will be skipped and only the reconstructed waveform will be shown.