Source code for qibocal.protocols.coherence.t2_sequences

import numpy as np
from qibolab import AcquisitionType, AveragingMode, ExecutionParameters
from qibolab.platform import Platform
from qibolab.pulses import PulseSequence
from qibolab.qubits import QubitId

from qibocal.auto.operation import Routine

from .t2_signal import T2SignalData, T2SignalParameters, _fit, _plot, _update
from .utils import CoherenceType


[docs]def _acquisition( params: T2SignalParameters, platform: Platform, targets: list[QubitId], ) -> T2SignalData: """Data acquisition for Ramsey Experiment (detuned).""" # create a sequence of pulses for the experiment # RX90 - t - RX90 - MZ ro_pulses = {} RX90_pulses1 = {} RX90_pulses2 = {} sequence = PulseSequence() for qubit in targets: RX90_pulses1[qubit] = platform.create_RX90_pulse(qubit, start=0) RX90_pulses2[qubit] = platform.create_RX90_pulse( qubit, start=RX90_pulses1[qubit].finish, ) ro_pulses[qubit] = platform.create_qubit_readout_pulse( qubit, start=RX90_pulses2[qubit].finish ) sequence.add(RX90_pulses1[qubit]) sequence.add(RX90_pulses2[qubit]) sequence.add(ro_pulses[qubit]) # define the parameter to sweep and its range: waits = np.arange( # wait time between RX90 pulses params.delay_between_pulses_start, params.delay_between_pulses_end, params.delay_between_pulses_step, ) data = T2SignalData() # sweep the parameter for wait in waits: for qubit in targets: RX90_pulses2[qubit].start = RX90_pulses1[qubit].finish + wait ro_pulses[qubit].start = RX90_pulses2[qubit].finish # execute the pulse sequence results = platform.execute_pulse_sequence( sequence, ExecutionParameters( nshots=params.nshots, relaxation_time=params.relaxation_time, acquisition_type=AcquisitionType.INTEGRATION, averaging_mode=AveragingMode.CYCLIC, ), ) for qubit in targets: result = results[ro_pulses[qubit].serial] data.register_qubit( CoherenceType, (qubit), dict( wait=np.array([wait]), signal=np.array([result.magnitude]), phase=np.array([result.phase]), ), ) return data
t2_sequences = Routine(_acquisition, _fit, _plot, _update) """T2 Routine object."""