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 [26]:
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).
Parameters¶
- class qibocal.protocols.flux_dependence.cryoscope.CryoscopeParameters(duration_max: float, flux_pulse_amplitude: float, fir: int, iir: bool, padding_duration: float = 0)[source]
Cryoscope user inputs.
- duration_max: float
Maximum flux pulse duration [ns].
- flux_pulse_amplitude: float
Flux pulse amplitude.
- fir: int
Number of feedforward taps to be optimized after IIR.
- iir: bool
Whether an IIR filter should be determined. If False only an FIR filter is determined.
- padding_duration: float = 0
Duration in ns of the leading zeros in the flux pulse.
Padding is fixed during the duration sweep and added before the pulse. The waveform consists of padding_duration ns of zeros followed by duration ns of rectangular samples, for a total length of padding_duration + duration.
Useful when hardware enforces a minimum pulse length.
- nshots: int
Number of executions on hardware.
- relaxation_time: float
Wait time for the qubit to decohere back to the ground state.
Example¶
A possible runcard to launch a Cryoscope experiment could be the following:
- id: cryoscope
operation: cryoscope
parameters:
duration_max: 80
flux_pulse_amplitude: 0.7
fir: 32
iir: true
relaxation_time: 50000
The expected output is the following:
Note
The flux pulse duration is swept one sample at a time, from a single sample up to
duration_max. Set iir: false to determine only an FIR filter. On instruments
that enforce a minimum pulse duration (e.g. Qblox), use padding_duration to
prepend leading zeros to the flux pulse, so that also flux pulses below that limit can
be executed.
If no filters are configured, the protocol computes the FIR and IIR filters and updates the platform. If filters are already present, they are left untouched and only the reconstructed waveform is shown. This makes it possible to run the protocol a second time to validate the previously determined filters.