Skip to content

Commit

Permalink
feat!: Drop pulse creation methods from the platform API
Browse files Browse the repository at this point in the history
  • Loading branch information
alecandido committed Jul 16, 2024
1 parent 673425d commit 4af3634
Showing 1 changed file with 0 additions and 101 deletions.
101 changes: 0 additions & 101 deletions src/qibolab/platform/platform.py
Original file line number Diff line number Diff line change
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,
)

0 comments on commit 4af3634

Please sign in to comment.