Calibrate Discrimination Kernels#

This experiment is quite similar to the Time Of Flight (Readout) experiment but has a different objective.

In the time-of-flight experiment, we were only interested in the timing of the pulse, regardless of the current qubit state. Here, on the other hand, we want to build a “vector of weights,” with a value for each point in the measurement, to maximize the differences between \(\ket{0}\) and \(\ket{1}\). Points that are further away, considering the two states, are given a higher weight since they are “more interesting” for discrimination purposes.

Parameters#

class qibocal.protocols.signal_experiments.calibrate_state_discrimination.CalibrateStateDiscriminationParameters(nshots: Optional[int] = None, relaxation_time: Optional[int] = None)[source]

Calibrate State Discrimination inputs.

nshots: Optional[int] = None

Number of shots.

relaxation_time: Optional[int] = None

Relaxation time (ns).

hardware_average: bool = False

By default hardware average will be performed.

Example#

- id: calibrate kernels                     # custom ID of the experiment
  operation: calibrate_state_discrimination # unique name of the routine
  parameters:
    nshots: 1024
    relaxation_time: 20_000
../../_images/kernel.png

The fit procedure (qibocal.protocols.signal_experiments.calibrate_state_discrimination._fit()) uses the numpy conjugate function, as it takes the conjugate of the differences of the two RAW traces acquired (one for the ground state and one for the excited state) as the kernel, after normalization.

The kernel is also updated in the platform runcard after successful fitting.

Requirements#

This experiment requires the calibration of a pi-pulse, since in the pulse sequence, we need to use the X gate. Therefore, before this experiment, we need to run at least a: