T1 experiments#

In this section we show how to run T1 experiments.

T1#

Due to coupling to the environment the qubit in state \(\ket{1}\) will decay to the state \(\ket{0}\). To measure such decay we can perform a simple experiment by initializing the qubit in \(\ket{1}\) through a \(\pi\)-pulse previously calibrated, we then measure the population of the excited state for different waiting times \(\Delta \tau\). We expect to measure an exponential decay which is fitted with the following formula:

\[p_e(t) = A + B e^{ - t / T_1}\]

\(A\) and \(B\) are introduced to improve the performance of the fit.

Parameters#

class qibocal.protocols.coherence.t1.T1Parameters(delay_before_readout_start: int, delay_before_readout_end: int, delay_before_readout_step: int, single_shot: bool = False)[source]

T1 runcard inputs.

hardware_average: bool = False

By default hardware average will be performed.

single_shot: bool = False

If True save single shot signal data.

delay_before_readout_start: int

Initial delay before readout [ns].

delay_before_readout_end: int

Final delay before readout [ns].

delay_before_readout_step: int

Step delay before readout [ns].

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 T1 experiment could be the following:

- id: t1
  operation: t1
  parameters:
    delay_before_readout_end: 10000
    delay_before_readout_start: 4
    delay_before_readout_step: 100
    nshots: 1000

The expected output is the following:

../../_images/t1_prob.png

\(T_1\) is determined by fitting the output signal using the formula presented above.

Requirements#

T1 with raw signal#

A standard \(T_1\) experiment will try to compute the probability of the qubit being measured in state \(\ket{1}\). It is possible to perform a \(T_1\) experiment without performing single shot calibration by running an experiment called t1_signal.

The acquisition and the fitting procedure are exactly the same, the only difference being that on the y axis it will be displayed the raw measurements from the instruments.

Parameters#

class qibocal.protocols.coherence.t1_signal.T1SignalParameters(delay_before_readout_start: int, delay_before_readout_end: int, delay_before_readout_step: int, single_shot: bool = False)[source]

T1 runcard inputs.

delay_before_readout_start: int

Initial delay before readout [ns].

delay_before_readout_end: int

Final delay before readout [ns].

delay_before_readout_step: int

Step delay before readout [ns].

single_shot: bool = False

If True save single shot signal data.

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#

- id: T1 with signal
  operation: t1_signal
  parameters:
    delay_before_readout_end: 100008
    delay_before_readout_start: 16
    delay_before_readout_step: 1000
    nshots: 2048
../../_images/t1_signal.png

Note that in this case error bands will not be provided.

Requirements#

T1 with for loops#

If the instrument driver is not able to perform duration sweepers in real time, we provide a protocol where the different waiting time are swept through a python for loop. Such execution will be usually slower compared to the one where sweepers are supported but it could be useful for debugging purposes.

Here is a possible runcard:

- id: T1 with for loops
  operation: t1_sequences
  parameters:
    delay_before_readout_end: 100008
    delay_before_readout_start: 16
    delay_before_readout_step: 1000
    nshots: 2048

Note

For t1_sequences on the y-axis it will be shown the raw output from instruments, not the population of \(\ket{1}\).

Requirements#