qibocal.protocols.two_qubit_interaction package¶
Subpackages¶
- qibocal.protocols.two_qubit_interaction.chevron package
- qibocal.protocols.two_qubit_interaction.chsh package
- Submodules
- qibocal.protocols.two_qubit_interaction.chsh.circuits module
- qibocal.protocols.two_qubit_interaction.chsh.protocol module
CLASSICAL_BOUNDQUANTUM_BOUNDCHSHParametersmerge_frequencies()mitigated_frequencies()CHSHDataCHSHData.bell_statesCHSHData.thetasCHSHData.dataCHSHData.frequenciesCHSHData.mitigated_frequenciesCHSHData.register_basis()CHSHData._to_json()CHSHData._to_npz()CHSHData.load_data()CHSHData.load_params()CHSHData.pairsCHSHData.paramsCHSHData.qubitsCHSHData.register_qubit()CHSHData.save()
CHSHResults_acquisition()_plot()_fit()chsh
- qibocal.protocols.two_qubit_interaction.chsh.utils module
- qibocal.protocols.two_qubit_interaction.cross_resonance package
- Submodules
- qibocal.protocols.two_qubit_interaction.cross_resonance.cancellation_amplitude module
- qibocal.protocols.two_qubit_interaction.cross_resonance.cancellation_phase module
- qibocal.protocols.two_qubit_interaction.cross_resonance.cr_parent_classes module
HamiltonianTomographyTypeOverlappingQubitPairErrorcheck_qubit_overlap()SetControlSetControl.IdSetControl.XSetControl.encode()SetControl.replace()SetControl.split()SetControl.rsplit()SetControl.join()SetControl.capitalize()SetControl.casefold()SetControl.title()SetControl.center()SetControl.count()SetControl.expandtabs()SetControl.find()SetControl.partition()SetControl.index()SetControl.ljust()SetControl.lower()SetControl.lstrip()SetControl.rfind()SetControl.rindex()SetControl.rjust()SetControl.rstrip()SetControl.rpartition()SetControl.splitlines()SetControl.strip()SetControl.swapcase()SetControl.translate()SetControl.upper()SetControl.startswith()SetControl.endswith()SetControl.removeprefix()SetControl.removesuffix()SetControl.isascii()SetControl.islower()SetControl.isupper()SetControl.istitle()SetControl.isspace()SetControl.isdecimal()SetControl.isdigit()SetControl.isnumeric()SetControl.isalpha()SetControl.isalnum()SetControl.isidentifier()SetControl.isprintable()SetControl.zfill()SetControl.format()SetControl.format_map()SetControl.maketrans()
BasisBasis.XBasis.YBasis.ZBasis.encode()Basis.replace()Basis.split()Basis.rsplit()Basis.join()Basis.capitalize()Basis.casefold()Basis.title()Basis.center()Basis.count()Basis.expandtabs()Basis.find()Basis.partition()Basis.index()Basis.ljust()Basis.lower()Basis.lstrip()Basis.rfind()Basis.rindex()Basis.rjust()Basis.rstrip()Basis.rpartition()Basis.splitlines()Basis.strip()Basis.swapcase()Basis.translate()Basis.upper()Basis.startswith()Basis.endswith()Basis.removeprefix()Basis.removesuffix()Basis.isascii()Basis.islower()Basis.isupper()Basis.istitle()Basis.isspace()Basis.isdecimal()Basis.isdigit()Basis.isnumeric()Basis.isalpha()Basis.isalnum()Basis.isidentifier()Basis.isprintable()Basis.zfill()Basis.format()Basis.format_map()Basis.maketrans()
HamiltonianTermHamiltonianTerm.IXHamiltonianTerm.IYHamiltonianTerm.IZHamiltonianTerm.ZXHamiltonianTerm.ZYHamiltonianTerm.ZZHamiltonianTerm.encode()HamiltonianTerm.replace()HamiltonianTerm.split()HamiltonianTerm.rsplit()HamiltonianTerm.join()HamiltonianTerm.capitalize()HamiltonianTerm.casefold()HamiltonianTerm.title()HamiltonianTerm.center()HamiltonianTerm.count()HamiltonianTerm.expandtabs()HamiltonianTerm.find()HamiltonianTerm.partition()HamiltonianTerm.index()HamiltonianTerm.ljust()HamiltonianTerm.lower()HamiltonianTerm.lstrip()HamiltonianTerm.rfind()HamiltonianTerm.rindex()HamiltonianTerm.rjust()HamiltonianTerm.rstrip()HamiltonianTerm.rpartition()HamiltonianTerm.splitlines()HamiltonianTerm.strip()HamiltonianTerm.swapcase()HamiltonianTerm.translate()HamiltonianTerm.upper()HamiltonianTerm.startswith()HamiltonianTerm.endswith()HamiltonianTerm.removeprefix()HamiltonianTerm.removesuffix()HamiltonianTerm.isascii()HamiltonianTerm.islower()HamiltonianTerm.isupper()HamiltonianTerm.istitle()HamiltonianTerm.isspace()HamiltonianTerm.isdecimal()HamiltonianTerm.isdigit()HamiltonianTerm.isnumeric()HamiltonianTerm.isalpha()HamiltonianTerm.isalnum()HamiltonianTerm.isidentifier()HamiltonianTerm.isprintable()HamiltonianTerm.zfill()HamiltonianTerm.format()HamiltonianTerm.format_map()HamiltonianTerm.maketrans()
HamiltonianTomographyParametersHamiltonianTomographyResultsHamiltonianTomographyResults.echoHamiltonianTomographyResults.cr_lengthsHamiltonianTomographyResults.hamiltonian_termsHamiltonianTomographyResults._to_json()HamiltonianTomographyResults._to_npz()HamiltonianTomographyResults.load_data()HamiltonianTomographyResults.load_params()HamiltonianTomographyResults.paramsHamiltonianTomographyResults.save()HamiltonianTomographyResults.fitted_parameters
HamiltonianTomographyDataHamiltonianTomographyData._to_json()HamiltonianTomographyData._to_npz()HamiltonianTomographyData.load_data()HamiltonianTomographyData.load_params()HamiltonianTomographyData.paramsHamiltonianTomographyData.qubitsHamiltonianTomographyData.register_qubit()HamiltonianTomographyData.save()HamiltonianTomographyData.echoHamiltonianTomographyData.dataHamiltonianTomographyData.pairs
- qibocal.protocols.two_qubit_interaction.cross_resonance.cross_resonance_amplitude module
- qibocal.protocols.two_qubit_interaction.cross_resonance.cross_resonance_length module
- qibocal.protocols.two_qubit_interaction.cross_resonance.cross_resonance_processing module
dynamic_evolution_optimizer()scipy_curve_fit_optimizer()numerical_root_finder()compute_total_expectation_value()bloch_func()compute_bloch_vector()estimate_cr_param()tune_cancellation_sequence()estimate_cancellation_amplitudes()estimate_cr_phases()tomography_cr_fit()extract_hamiltonian_terms()refactor_hamiltonian_terms()reconstruct_full_hamiltonian_terms()amp_tom_fit()cancellation_amplitude_fit()phase_tom_fit()cancellation_phase_fit()
- qibocal.protocols.two_qubit_interaction.cross_resonance.fitting module
- qibocal.protocols.two_qubit_interaction.cross_resonance.plotting module
- qibocal.protocols.two_qubit_interaction.cross_resonance.utils module
Submodules¶
qibocal.protocols.two_qubit_interaction.optimize module¶
virtual correction experiment for two qubit gates, tune landscape.
- qibocal.protocols.two_qubit_interaction.optimize.optimize_two_qubit_gate = Protocol(acquisition=<function _acquisition>, fit=<function _fit>, report=<function _plot>, update=<function _update>, two_qubit_gates=True)¶
Optimize two qubit gate protocol
qibocal.protocols.two_qubit_interaction.snz_optimize module¶
- class qibocal.protocols.two_qubit_interaction.snz_optimize.SNZFinetuningParamteters(amplitude_min: float, amplitude_max: float, amplitude_step: float, amp_ratio_min: float, amp_ratio_max: float, amp_ratio_step: float, theta_start: float, theta_end: float, theta_step: float, t_idling: float, tp: float, flux_time_delay: float = 0)[source]¶
Bases:
Parameters- property theta_range: ndarray¶
- property amplitude_range: ndarray¶
- property amplitude_ratio_range: ndarray¶
- class qibocal.protocols.two_qubit_interaction.snz_optimize.SNZFinetuningResults(leakages: dict = <factory>, virtual_phases: dict = <factory>, fitted_parameters: dict = <factory>, angles: dict = <factory>, best_amplitude: dict = <factory>, best_leakage: dict = <factory>, best_angle: dict = <factory>, best_rel_amplitude: dict = <factory>)[source]¶
Bases:
Results
- class qibocal.protocols.two_qubit_interaction.snz_optimize.SNZFinetuningData(rel_amplitudes: list[float] = <factory>, _sorted_pairs: list[typing.Annotated[tuple[typing.Annotated[typing.Union[int, str], FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], typing.Annotated[typing.Union[int, str], FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], BeforeValidator(func=<function <lambda> at 0x7ff3fd586200>, json_schema_input_type=PydanticUndefined), PlainSerializer(func=<function <lambda> at 0x7ff3e0e42a20>, return_type=PydanticUndefined, when_used='always')]] = <factory>, thetas: list = <factory>, amplitudes: list = <factory>, data: dict[tuple, numpy.ndarray[tuple[typing.Any, ...], numpy.dtype[~_ScalarT]]] = <factory>)[source]¶
Bases:
Data- _to_npz(path: Path, filename: str)¶
Helper function to use np.savez while converting keys into strings.
- property pairs¶
Access qubit pairs from data structure.
- property qubits: list[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]]¶
Access qubits from data structure.
- register_qubit(dtype, data_keys, data_dict)¶
Store output for single qubit.
- _sorted_pairs: list[~typing.Annotated[tuple[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], ~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], ~pydantic.functional_validators.BeforeValidator(func=~qibocal.calibration.calibration.<lambda>, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~qibocal.calibration.calibration.<lambda>, return_type=PydanticUndefined, when_used=always)]]¶
- property sorted_pairs¶
- qibocal.protocols.two_qubit_interaction.snz_optimize._aquisition(params: ~qibocal.protocols.two_qubit_interaction.snz_optimize.SNZFinetuningParamteters, platform: ~qibocal.calibration.platform.CalibrationPlatform, targets: list[~typing.Annotated[tuple[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], ~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], ~pydantic.functional_validators.BeforeValidator(func=~qibocal.calibration.calibration.<lambda>, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~qibocal.calibration.calibration.<lambda>, return_type=PydanticUndefined, when_used=always)]]) SNZFinetuningData[source]¶
Acquisition for the optimization of SNZ amplitudes. The amplitude of the SNZ pulse and its amplitude ratio (B/A) are swept while the virtual phase correction experiment is performed.
- qibocal.protocols.two_qubit_interaction.snz_optimize._fit(data: SNZFinetuningData) SNZFinetuningResults[source]¶
Repetition of correct virtual phase fit for all configurations.
- qibocal.protocols.two_qubit_interaction.snz_optimize._plot(data: ~qibocal.protocols.two_qubit_interaction.snz_optimize.SNZFinetuningData, fit: ~qibocal.protocols.two_qubit_interaction.snz_optimize.SNZFinetuningResults, target: ~typing.Annotated[tuple[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], ~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], ~pydantic.functional_validators.BeforeValidator(func=~qibocal.calibration.calibration.<lambda>, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~qibocal.calibration.calibration.<lambda>, return_type=PydanticUndefined, when_used=always)])[source]¶
Plot routine for SNZ optimization.
- qibocal.protocols.two_qubit_interaction.snz_optimize._update(results: ~qibocal.protocols.two_qubit_interaction.snz_optimize.SNZFinetuningResults, platform: ~qibocal.calibration.platform.CalibrationPlatform, target: ~typing.Annotated[tuple[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], ~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], ~pydantic.functional_validators.BeforeValidator(func=~qibocal.calibration.calibration.<lambda>, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~qibocal.calibration.calibration.<lambda>, return_type=PydanticUndefined, when_used=always)])[source]¶
qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle module¶
- class qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle.SNZIdlingParameters(amplitude_min: float, amplitude_max: float, amplitude_step: float, t_idle_min: float, t_idle_max: float, t_idle_step: float, tp: float, theta_start: float, theta_end: float, theta_step: float, b_amplitude: float)[source]¶
Bases:
Parameters- property theta_range: ndarray¶
- property amplitude_range: ndarray¶
- property t_idle_range: ndarray¶
- class qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle.SNZIdlingResults(leakages: dict = <factory>, virtual_phases: dict = <factory>, fitted_parameters: dict = <factory>, angles: dict = <factory>, best_amplitude: dict = <factory>, best_leakage: dict = <factory>, best_angle: dict = <factory>, best_rel_amplitude: dict = <factory>, best_t_idle: dict = <factory>)[source]¶
Bases:
SNZFinetuningResults
- class qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle.SNZIdlingData(sampling_rate: float = 1, _sorted_pairs: list[typing.Annotated[tuple[typing.Annotated[typing.Union[int, str], FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], typing.Annotated[typing.Union[int, str], FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], BeforeValidator(func=<function <lambda> at 0x7ff3fd586200>, json_schema_input_type=PydanticUndefined), PlainSerializer(func=<function <lambda> at 0x7ff3e0e42a20>, return_type=PydanticUndefined, when_used='always')]] = <factory>, thetas: list = <factory>, amplitudes: list = <factory>, t_idles: list = <factory>, data: dict[tuple, numpy.ndarray[tuple[typing.Any, ...], numpy.dtype[~_ScalarT]]] = <factory>)[source]¶
Bases:
Data- _to_npz(path: Path, filename: str)¶
Helper function to use np.savez while converting keys into strings.
- property pairs¶
Access qubit pairs from data structure.
- property qubits: list[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]]¶
Access qubits from data structure.
- register_qubit(dtype, data_keys, data_dict)¶
Store output for single qubit.
- _sorted_pairs: list[~typing.Annotated[tuple[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], ~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], ~pydantic.functional_validators.BeforeValidator(func=~qibocal.calibration.calibration.<lambda>, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~qibocal.calibration.calibration.<lambda>, return_type=PydanticUndefined, when_used=always)]]¶
List of sorted pairs.
- qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle._aquisition(params: ~qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle.SNZIdlingParameters, platform: ~qibocal.calibration.platform.CalibrationPlatform, targets: list[~typing.Annotated[tuple[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], ~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], ~pydantic.functional_validators.BeforeValidator(func=~qibocal.calibration.calibration.<lambda>, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~qibocal.calibration.calibration.<lambda>, return_type=PydanticUndefined, when_used=always)]]) SNZIdlingData[source]¶
Acquisition for the optimization of SNZ amplitudes. The amplitude of the SNZ pulse and its idling time are swept while the virtual phase correction experiment is performed.
- qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle._fit(data: SNZIdlingData) SNZIdlingResults[source]¶
Repetition of correct virtual phase fit for all configurations.
- qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle._plot(data: ~qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle.SNZIdlingData, fit: ~qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle.SNZIdlingResults, target: ~typing.Annotated[tuple[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], ~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], ~pydantic.functional_validators.BeforeValidator(func=~qibocal.calibration.calibration.<lambda>, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~qibocal.calibration.calibration.<lambda>, return_type=PydanticUndefined, when_used=always)])[source]¶
Plot routine for OptimizeTwoQubitGate.
- qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle._update(results: ~qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle.SNZIdlingResults, platform: ~qibocal.calibration.platform.CalibrationPlatform, target: ~typing.Annotated[tuple[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], ~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], ~pydantic.functional_validators.BeforeValidator(func=~qibocal.calibration.calibration.<lambda>, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~qibocal.calibration.calibration.<lambda>, return_type=PydanticUndefined, when_used=always)])[source]¶
qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle_vs_t_tot module¶
- class qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle_vs_t_tot.SNZDurationParamteters(duration_min: float, duration_max: float, duration_step: float, t_idle_min: float, t_idle_max: float, t_idle_step: float, theta_start: float, theta_end: float, theta_step: float, b_amplitude: float)[source]¶
Bases:
Parameters- property theta_range: ndarray¶
- property duration_range: ndarray¶
- property t_idle_range: ndarray¶
- class qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle_vs_t_tot.SNZDurationResults(leakages: dict = <factory>, virtual_phases: dict = <factory>, fitted_parameters: dict = <factory>, angles: dict = <factory>, best_amplitude: dict = <factory>, best_leakage: dict = <factory>, best_angle: dict = <factory>, best_rel_amplitude: dict = <factory>, best_t_idle: dict = <factory>, best_duration: dict = <factory>)[source]¶
Bases:
SNZIdlingResults
- class qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle_vs_t_tot.SNZDurationData(sampling_rate: float = 1, _sorted_pairs: list[typing.Annotated[tuple[typing.Annotated[typing.Union[int, str], FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], typing.Annotated[typing.Union[int, str], FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], BeforeValidator(func=<function <lambda> at 0x7ff3fd586200>, json_schema_input_type=PydanticUndefined), PlainSerializer(func=<function <lambda> at 0x7ff3e0e42a20>, return_type=PydanticUndefined, when_used='always')]] = <factory>, thetas: list = <factory>, durations: list = <factory>, t_idles: list = <factory>, data: dict[tuple, numpy.ndarray[tuple[typing.Any, ...], numpy.dtype[~_ScalarT]]] = <factory>)[source]¶
Bases:
Data- _sorted_pairs: list[~typing.Annotated[tuple[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], ~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], ~pydantic.functional_validators.BeforeValidator(func=~qibocal.calibration.calibration.<lambda>, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~qibocal.calibration.calibration.<lambda>, return_type=PydanticUndefined, when_used=always)]]¶
- _to_npz(path: Path, filename: str)¶
Helper function to use np.savez while converting keys into strings.
- property pairs¶
Access qubit pairs from data structure.
- property qubits: list[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]]¶
Access qubits from data structure.
- register_qubit(dtype, data_keys, data_dict)¶
Store output for single qubit.
- property sorted_pairs¶
- qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle_vs_t_tot._aquisition(params: ~qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle_vs_t_tot.SNZDurationParamteters, platform: ~qibocal.calibration.platform.CalibrationPlatform, targets: list[~typing.Annotated[tuple[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], ~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], ~pydantic.functional_validators.BeforeValidator(func=~qibocal.calibration.calibration.<lambda>, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~qibocal.calibration.calibration.<lambda>, return_type=PydanticUndefined, when_used=always)]]) SNZDurationData[source]¶
- qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle_vs_t_tot._fit(data: SNZDurationData) SNZDurationResults[source]¶
Repetition of correct virtual phase fit for all configurations.
- qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle_vs_t_tot._plot(data: ~qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle_vs_t_tot.SNZDurationData, fit: ~qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle_vs_t_tot.SNZDurationResults, target: ~typing.Annotated[tuple[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], ~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], ~pydantic.functional_validators.BeforeValidator(func=~qibocal.calibration.calibration.<lambda>, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~qibocal.calibration.calibration.<lambda>, return_type=PydanticUndefined, when_used=always)])[source]¶
Plot routine for OptimizeTwoQubitGate.
- qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle_vs_t_tot._update(results: ~qibocal.protocols.two_qubit_interaction.snz_optimize_t_idle_vs_t_tot.SNZDurationResults, platform: ~qibocal.calibration.platform.CalibrationPlatform, target: ~typing.Annotated[tuple[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], ~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], ~pydantic.functional_validators.BeforeValidator(func=~qibocal.calibration.calibration.<lambda>, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~qibocal.calibration.calibration.<lambda>, return_type=PydanticUndefined, when_used=always)])[source]¶
qibocal.protocols.two_qubit_interaction.utils module¶
- qibocal.protocols.two_qubit_interaction.utils.order_pair(pair: ~typing.Annotated[tuple[~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], ~typing.Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], ~pydantic.functional_validators.BeforeValidator(func=~qibocal.calibration.calibration.<lambda>, json_schema_input_type=PydanticUndefined), ~pydantic.functional_serializers.PlainSerializer(func=~qibocal.calibration.calibration.<lambda>, return_type=PydanticUndefined, when_used=always)], platform: ~qibolab._core.platform.platform.Platform) tuple[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]][source]¶
Order a pair of qubits by drive frequency.
- qibocal.protocols.two_qubit_interaction.utils.sinusoid(x, gate_repetition, amplitude, offset, phase)[source]¶
Sinusoidal fit function.
- qibocal.protocols.two_qubit_interaction.utils.fit_flux_amplitude(matrix, amps, times)[source]¶
Estimate amplitude for CZ gate.
Given the pattern of a chevron plot (see for example Fig. 2 here https://arxiv.org/pdf/1907.04818.pdf). This function estimates the CZ amplitude by finding the amplitude which gives the standard deviation, indicating that there are oscillation along the z axis.
- Parameters:
matrix (np.ndarray) – signal matrix
amps (np.ndarray) – amplitudes swept
times (np.ndarray) – duration swept
- Returns:
estimated amplitude index (int): amplitude index delta (float): omega for estimated amplitude
- Return type:
amplitude (float)
- qibocal.protocols.two_qubit_interaction.utils.phase_diff(phase_1, phase_2)[source]¶
Return the phase difference of two sinusoids, normalized in the range [0, 2*pi].
qibocal.protocols.two_qubit_interaction.virtual_z_phases module¶
CZ virtual correction experiment for two qubit gates, tune landscape.
- qibocal.protocols.two_qubit_interaction.virtual_z_phases.correct_virtual_z_phases = Protocol(acquisition=<function _acquisition>, fit=<function _fit>, report=<function _plot>, update=<function _update>, two_qubit_gates=True)¶
Virtual phases correction protocol.
- qibocal.protocols.two_qubit_interaction.virtual_z_phases.create_sequence(platform: CalibrationPlatform, setup: Literal['I', 'X'], target_qubit: Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], control_qubit: Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], ordered_pair: list[Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])], Annotated[int | str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(union_mode='left_to_right')])]], native: Literal['CZ', 'iSWAP'], dt: float, flux_pulse_max_duration: float = None, gate_repetition: int = 1, flux_pulse: list | None = None) tuple[PulseSequence, Pulse, Pulse, list[Pulse]][source]¶
Create the pulse sequence for the calibration of two-qubit gate virtual phases.
This function constructs a pulse sequence for a given two-qubit native gate native (CZ or iSWAP) on the specified qubits. The sequence includes: - A preliminary RX90 pulse on the target_qubit. - An optional X pulse on the control_qubit based on the setup type. - A flux pulse implementing the two-qubit native gate. - A delay of duration dt before the final X90 pulse on the target qubit. - Measurement pulses. It is possible to specify the maximum duration for the flux pulses with the flux_pulse_max_duration parameter.
- The function returns:
The full experiment pulse sequence.
The applied flux pulse.
The final VirtualZPhase pulses to be used for phase sweeping.