diff --git a/src/qibocal/protocols/characterization/two_qubit_interaction/chevron.py b/src/qibocal/protocols/characterization/two_qubit_interaction/chevron.py index dd17d998e..31cbb5150 100644 --- a/src/qibocal/protocols/characterization/two_qubit_interaction/chevron.py +++ b/src/qibocal/protocols/characterization/two_qubit_interaction/chevron.py @@ -126,9 +126,7 @@ def _aquisition( # Patch to get the coupler until the routines use QubitPair if platform.couplers: sequence.add( - cz.coupler_pulses( - platform.pairs[tuple(sorted(ordered_pair))].coupler.name - ) + cz.coupler_pulses(platform.pairs[tuple(ordered_pair)].coupler.name) ) if params.parking: diff --git a/src/qibocal/update.py b/src/qibocal/update.py index d7004b0e4..b7c685cf0 100644 --- a/src/qibocal/update.py +++ b/src/qibocal/update.py @@ -113,8 +113,6 @@ def virtual_phases(phases: dict[QubitId, float], platform: Platform, pair: Qubit def CZ_duration(duration: int, platform: Platform, pair: QubitPairId): """Update CZ duration for specific pair.""" - if pair not in platform.pairs: - pair = (pair[1], pair[0]) for pulse in platform.pairs[pair].native_gates.CZ.pulses: if pulse.qubit.name == pair[1]: pulse.duration = int(duration) @@ -122,8 +120,6 @@ def CZ_duration(duration: int, platform: Platform, pair: QubitPairId): def CZ_amplitude(amp: float, platform: Platform, pair: QubitPairId): """Update CZ amplitude for specific pair.""" - if pair not in platform.pairs: - pair = (pair[1], pair[0]) for pulse in platform.pairs[pair].native_gates.CZ.pulses: if pulse.qubit.name == pair[1]: pulse.amplitude = float(amp) diff --git a/src/qibocal/utils.py b/src/qibocal/utils.py index 85bfa7329..45d90a9c4 100644 --- a/src/qibocal/utils.py +++ b/src/qibocal/utils.py @@ -15,7 +15,7 @@ def allocate_qubits_pairs( platform: Optional[Platform], qubit_pairs_ids: list[tuple[QubitId, QubitId]] ) -> dict[tuple[QubitId, QubitId], QubitPair]: """Construct the map from the chosen id pairs to the corresponding physical qubit pairs available on the platform.""" - return {tuple(qq): platform.pairs[tuple(sorted(qq))] for qq in qubit_pairs_ids} + return {tuple(qq): platform.pairs[tuple(qq)] for qq in qubit_pairs_ids} def allocate_single_qubits_lists( diff --git a/tests/runcards/protocols.yml b/tests/runcards/protocols.yml index 4c99e25e8..874eb5dc5 100644 --- a/tests/runcards/protocols.yml +++ b/tests/runcards/protocols.yml @@ -531,7 +531,7 @@ actions: - id: chevron id priority: 0 operation: chevron - qubits: [[0, 2],[1,2],[3,2], [2,3]] + qubits: [[0, 2],[1,2]] parameters: amplitude_min: 0.1 amplitude_max: 0.6 diff --git a/tests/test_update.py b/tests/test_update.py index a3b7f181c..0038f6ae4 100644 --- a/tests/test_update.py +++ b/tests/test_update.py @@ -100,14 +100,15 @@ def test_virtual_phases_update(pair): @pytest.mark.parametrize("pair", PAIRS) def test_CZ_params_update(pair): - update.CZ_amplitude(RANDOM_FLOAT, PLATFORM, pair) - update.CZ_duration(RANDOM_INT, PLATFORM, pair) + if hasattr(PLATFORM.pairs[pair].native_gates, "CZ"): + if PLATFORM.pairs[pair].native_gates.CZ is not None: + update.CZ_amplitude(RANDOM_FLOAT, PLATFORM, pair) + update.CZ_duration(RANDOM_INT, PLATFORM, pair) - if PLATFORM.pairs[pair].native_gates.CZ is not None: - for pulse in PLATFORM.pairs[pair].native_gates.CZ.pulses: - if pulse.qubit.name == pair[1]: - assert pulse.duration == RANDOM_INT - assert pulse.amplitude == RANDOM_FLOAT + for pulse in PLATFORM.pairs[pair].native_gates.CZ.pulses: + if pulse.qubit.name == pair[1]: + assert pulse.duration == RANDOM_INT + assert pulse.amplitude == RANDOM_FLOAT @pytest.mark.parametrize("qubit", QUBITS)