Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove pulse creation helpers #793

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 1 addition & 102 deletions src/qibolab/platform/platform.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from qibolab.couplers import Coupler
from qibolab.execution_parameters import ExecutionParameters
from qibolab.instruments.abstract import Controller, Instrument, InstrumentId
from qibolab.pulses import Delay, Drag, PulseSequence, PulseType
from qibolab.pulses import Delay, PulseSequence, PulseType
from qibolab.qubits import Qubit, QubitId, QubitPair, QubitPairId
from qibolab.serialize_ import replace
from qibolab.sweeper import Sweeper
Expand Down Expand Up @@ -384,104 +384,3 @@ def get_coupler(self, coupler):
return self.couplers[coupler]
except KeyError:
return list(self.couplers.values())[coupler]

def create_RX90_pulse(self, qubit, relative_phase=0):
qubit = self.get_qubit(qubit)
return replace(
qubit.native_gates.RX90,
relative_phase=relative_phase,
channel=qubit.drive.name,
)

def create_RX_pulse(self, qubit, relative_phase=0):
qubit = self.get_qubit(qubit)
return replace(
qubit.native_gates.RX,
relative_phase=relative_phase,
channel=qubit.drive.name,
)

def create_RX12_pulse(self, qubit, relative_phase=0):
qubit = self.get_qubit(qubit)
return replace(
qubit.native_gates.RX12,
relative_phase=relative_phase,
channel=qubit.drive.name,
)

def create_CZ_pulse_sequence(self, qubits):
pair = tuple(self.get_qubit(q).name for q in qubits)
if pair not in self.pairs or len(self.pairs[pair].native_gates.CZ) == 0:
raise_error(
ValueError,
f"Calibration for CZ gate between qubits {qubits[0]} and {qubits[1]} not found.",
)
return self.pairs[pair].native_gates.CZ

def create_iSWAP_pulse_sequence(self, qubits):
pair = tuple(self.get_qubit(q).name for q in qubits)
if pair not in self.pairs or len(self.pairs[pair].native_gates.iSWAP) == 0:
raise_error(
ValueError,
f"Calibration for iSWAP gate between qubits {qubits[0]} and {qubits[1]} not found.",
)
return self.pairs[pair].native_gates.iSWAP

def create_CNOT_pulse_sequence(self, qubits):
pair = tuple(self.get_qubit(q).name for q in qubits)
if pair not in self.pairs or len(self.pairs[pair].native_gates.CNOT) == 0:
raise_error(
ValueError,
f"Calibration for CNOT gate between qubits {qubits[0]} and {qubits[1]} not found.",
)
return self.pairs[pair].native_gates.CNOT

def create_MZ_pulse(self, qubit):
qubit = self.get_qubit(qubit)
return replace(qubit.native_gates.MZ, channel=qubit.readout.name)

def create_qubit_drive_pulse(self, qubit, duration, relative_phase=0):
qubit = self.get_qubit(qubit)
return replace(
qubit.native_gates.RX,
duration=duration,
relative_phase=relative_phase,
channel=qubit.drive.name,
)

def create_qubit_readout_pulse(self, qubit):
return self.create_MZ_pulse(qubit)

def create_coupler_pulse(self, coupler, duration=None, amplitude=None):
coupler = self.get_coupler(coupler)
pulse = coupler.native_gates.CP
if duration is not None:
pulse = replace(pulse, duration=duration)
if amplitude is not None:
pulse = replace(pulse, amplitude=amplitude)
return replace(pulse, channel=coupler.flux.name)

# TODO Remove RX90_drag_pulse and RX_drag_pulse, replace them with create_qubit_drive_pulse
# TODO Add RY90 and RY pulses

def create_RX90_drag_pulse(self, qubit, beta, relative_phase=0):
"""Create native RX90 pulse with Drag shape."""
qubit = self.get_qubit(qubit)
pulse = qubit.native_gates.RX90
return replace(
pulse,
relative_phase=relative_phase,
envelope=Drag(rel_sigma=pulse.envelope.rel_sigma, beta=beta),
channel=qubit.drive.name,
)

def create_RX_drag_pulse(self, qubit, beta, relative_phase=0):
"""Create native RX pulse with Drag shape."""
qubit = self.get_qubit(qubit)
pulse = qubit.native_gates.RX
return replace(
pulse,
relative_phase=relative_phase,
envelope=Drag(rel_sigma=pulse.envelope.rel_sigma, beta=beta),
channel=qubit.drive.name,
)
Loading