qibocal.protocols.flux_dependence package¶
Submodules¶
qibocal.protocols.flux_dependence.cryoscope module¶
Cryoscope experiment.
- class qibocal.protocols.flux_dependence.cryoscope.CryoscopeData(flux_pulse_amplitude: float, fir: int, flux_coefficients: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]] = <factory>, filters: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], float] = <factory>, data: dict[tuple[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], str], ~numpy.ndarray[tuple[~typing.Any, ...], ~numpy.dtype[dtype([('duration', '<f8'), ('prob_1', '<f8')])]]] = <factory>)[source]¶
Bases:
Data
Cryoscope acquisition outputs.
- _to_npz(path: Path, filename: str)¶
Helper function to use np.savez while converting keys into strings.
- property pairs¶
Access qubit pairs ordered alphanumerically from data structure.
- property qubits¶
Access qubits from data structure.
- register_qubit(dtype, data_keys, data_dict)¶
Store output for single qubit.
- flux_coefficients: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]]¶
Flux - amplitude relation coefficients obtained from flux_amplitude_frequency routine
- filters: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], float]¶
Check if there are filters already.
- class qibocal.protocols.flux_dependence.cryoscope.CryoscopeResults(fitted_parameters: dict[tuple[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], str], list[float]] = <factory>, detuning: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]] = <factory>, amplitude: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]] = <factory>, step_response: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]] = <factory>, exp_amplitude: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]] = <factory>, tau: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]] = <factory>, feedforward_taps: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]] = <factory>, feedforward_taps_iir: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]] = <factory>, feedback_taps: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]] = <factory>)[source]¶
Bases:
Results
Cryoscope outputs.
- fitted_parameters: dict[tuple[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], str], list[float]]¶
Fitted <X> and <Y> for each qubit.
- detuning: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]]¶
Expected detuning.
- amplitude: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]]¶
Flux amplitude computed from detuning.
- step_response: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]]¶
Waveform normalized to 1.
- exp_amplitude: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]]¶
A parameters for the exp decay approximation
- tau: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]]¶
time decay constant in exp decay approximation
- feedforward_taps: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]]¶
feedforward taps
- feedforward_taps_iir: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]]¶
feedforward taps for IIR
- feedback_taps: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], list[float]]¶
feedback taps
qibocal.protocols.flux_dependence.flux_amplitude_frequency module¶
Experiment to compute detuning from flux pulses.
qibocal.protocols.flux_dependence.flux_gate module¶
FluxGate experiment, implementation of Z gate using flux pulse.
qibocal.protocols.flux_dependence.qubit_crosstalk module¶
- qibocal.protocols.flux_dependence.qubit_crosstalk.qubit_crosstalk = Routine(acquisition=<function _acquisition>, fit=<function _fit>, report=<function _plot>, update=<function _update>, two_qubit_gates=False)¶
Qubit crosstalk Routine object
qibocal.protocols.flux_dependence.qubit_flux_dependence module¶
- class qibocal.protocols.flux_dependence.qubit_flux_dependence.QubitFluxData(resonator_type: str, charging_energy: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], float] = <factory>, qubit_frequency: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], float] = <factory>, data: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], ~numpy.ndarray[tuple[~typing.Any, ...], ~numpy.dtype[dtype([('freq', '<f8'), ('bias', '<f8'), ('signal', '<f8'), ('phase', '<f8')])]]] = <factory>)[source]¶
Bases:
Data
QubitFlux acquisition outputs.
- _to_npz(path: Path, filename: str)¶
Helper function to use np.savez while converting keys into strings.
- property pairs¶
Access qubit pairs ordered alphanumerically from data structure.
- property qubits¶
Access qubits from data structure.
- charging_energy: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], float]¶
Qubit charging energy.
- qubit_frequency: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], float]¶
Qubit charging energy.
- class qibocal.protocols.flux_dependence.qubit_flux_dependence.QubitFluxParameters(freq_width: int, freq_step: int, bias_width: float | None = None, bias_step: float | None = None, drive_amplitude: float | None = None, drive_duration: int = 2000)[source]¶
Bases:
ResonatorFluxParameters
QubitFlux runcard inputs.
- class qibocal.protocols.flux_dependence.qubit_flux_dependence.QubitFluxResults(sweetspot: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], float] = <factory>, frequency: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], float] = <factory>, fitted_parameters: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], dict[str, float]] = <factory>, matrix_element: dict[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], float] = <factory>)[source]¶
Bases:
Results
QubitFlux outputs.
- sweetspot: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], float]¶
Sweetspot for each qubit.
- frequency: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], float]¶
Drive frequency for each qubit.
- fitted_parameters: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], dict[str, float]]¶
Raw fitting output.
- matrix_element: dict[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], float]¶
V_ii coefficient.
- qibocal.protocols.flux_dependence.qubit_flux_dependence.QubitFluxType = dtype([('freq', '<f8'), ('bias', '<f8'), ('signal', '<f8'), ('phase', '<f8')])¶
Custom dtype for resonator flux dependence.
- qibocal.protocols.flux_dependence.qubit_flux_dependence.qubit_flux = Routine(acquisition=<function _acquisition>, fit=<function _fit>, report=<function _plot>, update=<function _update>, two_qubit_gates=False)¶
QubitFlux Routine object.
qibocal.protocols.flux_dependence.qubit_vz module¶
Experiment to measure the Z rotation of a qubit under a rectangular flux pulse.
qibocal.protocols.flux_dependence.resonator_flux_dependence module¶
- class qibocal.protocols.flux_dependence.resonator_flux_dependence.ResonatorFluxParameters(freq_width: int, freq_step: int, bias_width: float | None = None, bias_step: float | None = None)[source]¶
Bases:
Parameters
ResonatorFlux runcard inputs.
- qibocal.protocols.flux_dependence.resonator_flux_dependence.resonator_flux = Routine(acquisition=<function _acquisition>, fit=<function _fit>, report=<function _plot>, update=<function _update>, two_qubit_gates=False)¶
ResonatorFlux Routine object.
qibocal.protocols.flux_dependence.utils module¶
- qibocal.protocols.flux_dependence.utils.is_crosstalk(data)[source]¶
Check if keys are tuple which corresponds to crosstalk data structure.
- qibocal.protocols.flux_dependence.utils.create_data_array(freq, bias, signal, phase, dtype)[source]¶
Create custom dtype array for acquired data.
- qibocal.protocols.flux_dependence.utils.flux_dependence_plot(data, fit, qubit, fit_function=None)[source]¶
- qibocal.protocols.flux_dependence.utils.flux_crosstalk_plot(data, qubit, fit, fit_function)[source]¶
- qibocal.protocols.flux_dependence.utils.G_f_d(xi, xj, offset, d, crosstalk_element, normalization)[source]¶
Auxiliary function to calculate qubit frequency as a function of bias.
It also determines the flux dependence of \(E_J\),:math:E_J(phi)=E_J(0)G_f_d. For more details see: https://arxiv.org/pdf/cond-mat/0703002.pdf
- Parameters:
xi (float) – bias of target qubit
xj (float) – bias of neighbor qubit
offset (float) – phase_offset [V].
d (float) – asymmetry between the two junctions of the transmon. Typically denoted as \(d\). \(d = (E_J^1 - E_J^2) / (E_J^1 + E_J^2)\).
crosstalk_element (float) – off-diagonal crosstalk matrix element
normalization (float) – diagonal crosstalk matrix element
- Returns:
(float)
- qibocal.protocols.flux_dependence.utils.transmon_frequency(xi, xj, w_max, d, normalization, offset, crosstalk_element, charging_energy)[source]¶
Approximation to transmon frequency.
The formula holds in the transmon regime Ej / Ec >> 1.
See https://arxiv.org/pdf/cond-mat/0703002.pdf for the complete formula.
- Parameters:
xi (float) – bias of target qubit
xj (float) – bias of neighbor qubit
w_max (float) – maximum frequency :math:`w_{max} = sqrt{8 E_j E_c}
d (float) – asymmetry between the two junctions of the transmon. Typically denoted as \(d\). \(d = (E_J^1 - E_J^2) / (E_J^1 + E_J^2)\).
normalization (float) – diagonal crosstalk matrix element
offset (float) – phase_offset [V].
crosstalk_element (float) – off-diagonal crosstalk matrix element
charging_energy – Ec / h (GHz)
- qibocal.protocols.flux_dependence.utils.transmon_readout_frequency(xi, xj, w_max, d, normalization, crosstalk_element, offset, resonator_freq, g, charging_energy)[source]¶
Approximation to flux dependent resonator frequency.
The formula holds in the transmon regime Ej / Ec >> 1.
See https://arxiv.org/pdf/cond-mat/0703002.pdf for the complete formula.
- Parameters:
xi (float) – bias of target qubit
xj (float) – bias of neighbor qubit
w_max (float) – maximum frequency :math:`w_{max} = sqrt{8 E_j E_c}
d (float) – asymmetry between the two junctions of the transmon. Typically denoted as \(d\). \(d = (E_J^1 - E_J^2) / (E_J^1 + E_J^2)\).
normalization (float) – diagonal crosstalk matrix element
offset (float) – phase_offset [V].
crosstalk_element (float) – off-diagonal crosstalk matrix element
resonator_freq (float) – bare resonator frequency [GHz]
g (float) – readout coupling.
charging_energy – Ec / h (GHz)