operations#
Module containing qblox specific operations.
Package Contents#
Classes#
Reset a qubit to the \(|0\rangle\) state. |
|
Operation that resets the feedback trigger addresses from the hardware. |
|
Wrapper on top of NumericalPulse to provide a simple interface for creating a pulse |
- class ConditionalReset(qubit_name: str, name: str = 'conditional_reset', **kwargs)[source]#
Bases:
quantify_scheduler.schedules.schedule.Schedule
Reset a qubit to the \(|0\rangle\) state.
The
ConditionalReset
gate is a conditional gate that first measures the state of the qubit using anThresholdedAcquisition
operation and then performs a \(\pi\) rotation on the condition that the measured state is \(|1\rangle\). If the measured state is in \(|0\rangle\), the hardware will wait the same amount of time the \(\pi\) rotation would’ve taken to ensure that total execution time ofConditionalReset
is the same regardless of the measured state.Note
The total time of the the ConditionalReset is the sum of
integration time (<qubit>.measure.integration_time)
acquisition delay (<qubit>.measure.acq_delay)
trigger delay (364ns)
pi-pulse duration (<qubit>.rxy.duration)
idle time (4ns)
Note
Due to current hardware limitations, overlapping conditional resets might not work correctly if multiple triggers are sent within a 364ns window. See Conditional Playback for more information.
Note
ConditionalReset
is currently implemented as a subschedule, but can be added to an existing schedule as if it were a gate. See examples below.- Parameters:
Examples
Examples
from quantify_scheduler.backends.qblox.operations.gate_library import ConditionalReset from quantify_scheduler.schedules.schedule import Schedule schedule = Schedule("example schedule") schedule.add(ConditionalReset("q0"))
- class LatchReset(portclock: tuple[str, str], t0: float = 0, duration: float = 4e-09)[source]#
Bases:
quantify_scheduler.operations.operation.Operation
Operation that resets the feedback trigger addresses from the hardware.
Currently only implemented for Qblox backend, refer to
ResetFeedbackTriggersStrategy
for more details.
- class SimpleNumericalPulse(samples: numpy.ndarray | list, port: str, clock: str = BasebandClockResource.IDENTITY, reference_magnitude: quantify_scheduler.operations.pulse_library.ReferenceMagnitude | None = None, t0: float = 0)[source]#
Bases:
quantify_scheduler.operations.pulse_library.NumericalPulse
Wrapper on top of NumericalPulse to provide a simple interface for creating a pulse where the samples correspond 1:1 to the produced waveform, without needing to specify the time samples.
- Parameters:
samples – An array of (possibly complex) values specifying the shape of the pulse.
port – The port that the pulse should be played on.
clock – Clock used to (de)modulate the pulse. By default the baseband clock.
reference_magnitude – Scaling value and unit for the unitless samples. Uses settings in hardware config if not provided.
t0 – Time in seconds when to start the pulses relative to the start time of the Operation in the Schedule.
Example
from quantify_scheduler.backends.qblox.operations.pulse_library import SimpleNumericalPulse from quantify_scheduler import Schedule waveform = [0.1,0.2,0.2,0.3,0.5,0.4] schedule = Schedule("") schedule.add(SimpleNumericalPulse(waveform, port="q0:out"))
{'name': '13b04dd5-b58a-4eb8-adad-9e1616ec6de2', 'operation_id': '3579326363450173868', 'timing_constraints': [{'rel_time': 0, 'ref_schedulable': None, 'ref_pt_new': None, 'ref_pt': None}], 'label': '13b04dd5-b58a-4eb8-adad-9e1616ec6de2'}
- samples#
- t_samples#