qibocal.protocols.characterization.two_qubit_interaction package#

Submodules#

qibocal.protocols.characterization.two_qubit_interaction.chevron module#

SWAP experiment for two qubit gates, chevron plot.

class qibocal.protocols.characterization.two_qubit_interaction.chevron.ChevronParameters(amplitude_min: float, amplitude_max: float, amplitude_step: float, duration_min: float, duration_max: float, duration_step: float, dt: Optional[int] = 0, nshots: Optional[int] = None, parking: bool = True)[source]#

Bases: Parameters

CzFluxTime runcard inputs.

amplitude_min: float#

Amplitude minimum.

amplitude_max: float#

Amplitude maximum.

amplitude_step: float#

Amplitude step.

duration_min: float#

Duration minimum.

duration_max: float#

Duration maximum.

duration_step: float#

Duration step.

dt: Optional[int] = 0#

Time delay between flux pulses and readout.

nshots: Optional[int] = None#

Number of shots per point.

parking: bool = True#

Wether to park non interacting qubits or not.

class qibocal.protocols.characterization.two_qubit_interaction.chevron.ChevronResults(period: dict[str, float])[source]#

Bases: Results

CzFluxTime outputs when fitting will be done.

period: dict[str, float]#

Period of the oscillation

qibocal.protocols.characterization.two_qubit_interaction.chevron.ChevronType = dtype([('amp', '<f8'), ('length', '<f8'), ('prob', '<f8')])#

Custom dtype for Chevron.

class qibocal.protocols.characterization.two_qubit_interaction.chevron.ChevronData(data: dict[tuple[typing.Union[str, int], typing.Union[str, int], typing.Union[str, int]], numpy.ndarray[typing.Any, numpy.dtype[dtype([('amp', '<f8'), ('length', '<f8'), ('prob', '<f8')])]]] = <factory>)[source]#

Bases: Data

CzFluxTime acquisition outputs.

data: dict[tuple[typing.Union[str, int], typing.Union[str, int], typing.Union[str, int]], numpy.ndarray[typing.Any, numpy.dtype[dtype([('amp', '<f8'), ('length', '<f8'), ('prob', '<f8')])]]]#

Data object to store arrays

register_qubit(low_qubit, high_qubit, qubit, length, amp, prob)[source]#

Store output for single qubit.

qibocal.protocols.characterization.two_qubit_interaction.chevron.fit_function(x, p0, p1, p2, p3)[source]#

Sinusoidal fit function.

qibocal.protocols.characterization.two_qubit_interaction.chevron.chevron = Routine(acquisition=<function _aquisition>, fit=<function _fit>, report=<function _plot>)#

Chevron routine.

qibocal.protocols.characterization.two_qubit_interaction.cz_virtualz module#

CZ virtual correction experiment for two qubit gates, tune landscape.

class qibocal.protocols.characterization.two_qubit_interaction.cz_virtualz.CZVirtualZParameters(theta_start: float, theta_end: float, theta_step: float, nshots: Optional[int] = None, relaxation_time: Optional[float] = None, dt: Optional[float] = 20, parking: bool = True)[source]#

Bases: Parameters

CzVirtualZ runcard inputs.

theta_start: float#

Initial angle for the low frequency qubit measurement in radians.

theta_end: float#

Final angle for the low frequency qubit measurement in radians.

theta_step: float#

Step size for the theta sweep in radians.

nshots: Optional[int] = None#

Number of shots per point.

relaxation_time: Optional[float] = None#

Relaxation time.

dt: Optional[float] = 20#

Time delay between flux pulses and readout.

parking: bool = True#

Wether to park non interacting qubits or not.

class qibocal.protocols.characterization.two_qubit_interaction.cz_virtualz.CZVirtualZResults(fitted_parameters: dict[tuple[str, Union[str, int]]], cz_angle: dict[tuple[Union[str, int], Union[str, int]], float], virtual_phase: dict[tuple[Union[str, int], Union[str, int]], float])[source]#

Bases: Results

CzVirtualZ outputs when fitting will be done.

fitted_parameters: dict[tuple[str, Union[str, int]]]#

Fitted parameters

cz_angle: dict[tuple[Union[str, int], Union[str, int]], float]#

CZ angle.

virtual_phase: dict[tuple[Union[str, int], Union[str, int]], float]#

Virtual Z phase correction.

class qibocal.protocols.characterization.two_qubit_interaction.cz_virtualz.CZVirtualZData(data: dict[tuple[typing.Union[str, int], typing.Union[str, int], str], numpy.ndarray[typing.Any, numpy.dtype[dtype([('target', '<f8'), ('control', '<f8')])]]] = <factory>, thetas: list = <factory>, vphases: dict[tuple[typing.Union[str, int], typing.Union[str, int]], dict[typing.Union[str, int], float]] = <factory>)[source]#

Bases: Data

CZVirtualZ data.

data: dict[tuple[typing.Union[str, int], typing.Union[str, int], str], numpy.ndarray[typing.Any, numpy.dtype[dtype([('target', '<f8'), ('control', '<f8')])]]]#

Data object to store arrays

thetas: list#
vphases: dict[tuple[Union[str, int], Union[str, int]], dict[Union[str, int], float]]#
register_qubit(target, control, setup, prob_target, prob_control)[source]#
property global_params_dict#

Convert non-arrays attributes into dict.

qibocal.protocols.characterization.two_qubit_interaction.cz_virtualz.create_sequence(platform: Platform, setup: str, target_qubit: Union[str, int], control_qubit: Union[str, int], ordered_pair: list[Union[str, int], Union[str, int]], parking: bool, dt: float) tuple[qibolab.pulses.PulseSequence, dict[Union[str, int], qibolab.pulses.Pulse], dict[Union[str, int], qibolab.pulses.Pulse], dict[Union[str, int], qibolab.pulses.Pulse]][source]#

Create the experiment PulseSequence.

qibocal.protocols.characterization.two_qubit_interaction.cz_virtualz.fit_function(x, p0, p1, p2)[source]#

Sinusoidal fit function.

qibocal.protocols.characterization.two_qubit_interaction.cz_virtualz.cz_virtualz = Routine(acquisition=<function _acquisition>, fit=<function _fit>, report=<function _plot>)#

CZ virtual Z correction routine.

qibocal.protocols.characterization.two_qubit_interaction.utils module#

qibocal.protocols.characterization.two_qubit_interaction.utils.OrderedPair#

Pair object to discriminate high and low freq qubit.

qibocal.protocols.characterization.two_qubit_interaction.utils.order_pair(pair: list[Union[str, int], Union[str, int]], qubits: dict[Union[str, int], qibolab.qubits.Qubit]) Pair[source]#

Order a pair of qubits by drive frequency.