Shelved_Measure_CustomWaveforms#
- class iqm.pulse.gates.measure.Shelved_Measure_CustomWaveforms(parent, name, locus, calibration_data, builder)#
Bases:
Measure_CustomWaveforms,CompositeGateBase class for shelved readout.
Shelved readout applies a
prx_12(pi)gate before and after a standard dispersive readout on each qubit measured. The firstprx_12(pi)swaps the amplitudes of the |1> and |2> states, and the second one swaps them back after the measurement has (roughly) collapsed the state. If the discriminator of the readout is calibrated such that the |0> state is on one side and the |1> and |2> states are on the other, the end result is equivalent to the standard readout operation but with the advantage that the population in the |2> state is less susceptible to \(T_1\) decay during the readout than the population in the |1> state.Module:
iqm.pulse.gates.measureAttributes
These member operations can be calibrated separately from their common calibration by adding
OCalibrationDatanodes for them under theOILCalibrationDatanode of the composite gate.If set
True, the Q channel waveform is considered to depend on the I channel's waveform so that they share the waveform parameters, (e.g. a DRAG PRX implementation).Names of the member operations used by the composite gate.
Parameters independent of the of Waveforms.
wave_iWaveform for the I channel.
wave_qWaveform for the Q channel.
idUnique str identifier, needed for certain caching properties.
sub_implementationsSingle-component sub-implementations for factorizable gates with len(locus) > 1, otherwise empty.
Methods
Returns a "naked" probe timebox that supports convenient multiplexing through
ShelvedMeasureTimeBox.__add__.- Parameters:
parent (QuantumOp)
name (str)
locus (Locus)
calibration_data (OILCalibrationData)
builder (ScheduleBuilder)
- customizable_gates: tuple[str, ...] | None = ('prx_12',)#
These member operations can be calibrated separately from their common calibration by adding
OCalibrationDatanodes for them under theOILCalibrationDatanode of the composite gate. Must be a subset ofregistered_gates. By default all member operations are customizable.
- dependent_waves: bool = True#
If set
True, the Q channel waveform is considered to depend on the I channel’s waveform so that they share the waveform parameters, (e.g. a DRAG PRX implementation). If not provided, will be initialised asTrue.
- root_parameters: dict[str, Parameter | Setting] = {'acquisition_delay': Parameter(name='', label='Acquisition delay', unit='s', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), 'acquisition_type': Setting(parameter=Parameter(name='', label='Acquisition type', unit='', data_type=<DataType.STRING: 3>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), value='threshold', read_only=False, path=''), 'amplitude_i': Parameter(name='', label='Readout channel I amplitude', unit='', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), 'amplitude_q': Setting(parameter=Parameter(name='', label='Readout channel Q amplitude', unit='', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), value=0.0, read_only=False, path=''), 'do_prx_12': Setting(parameter=Parameter(name='do_prx_12', label='Whether to do the prx_12 flips in the measure operation', unit='', data_type=<DataType.BOOLEAN: 4>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), value=True, read_only=False, path=''), 'duration': Parameter(name='', label='Readout pulse duration', unit='s', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), 'frequency': Parameter(name='', label='Readout pulse frequency', unit='Hz', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), 'integration_length': Parameter(name='', label='Integration length', unit='s', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), 'integration_threshold': Parameter(name='', label='Integration threshold', unit='', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), 'integration_weights_I': Setting(parameter=Parameter(name='', label='Integration weights for channel I', unit='', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.NDARRAY: 2>, element_indices=None), value=array([], dtype=float64), read_only=False, path=''), 'integration_weights_Q': Setting(parameter=Parameter(name='', label='Integration weights for channel Q', unit='', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.NDARRAY: 2>, element_indices=None), value=array([], dtype=float64), read_only=False, path=''), 'phase': Parameter(name='', label='Readout pulse phase', unit='rad', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), 'second_prx_12_offset': Setting(parameter=Parameter(name='second_prx_12_offset', label='Offset of the second PRX_12 pulse from the end the ReadoutTrigger', unit='s', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), value=0.0, read_only=False, path='')}#
Parameters independent of the of Waveforms. Inheriting classes may override this to include parameters common to all such implementations.
- registered_gates: tuple[str, ...] = ('prx_12',)#
Names of the member operations used by the composite gate. There must be corresponding keys in
builder.op_table.
- probe_timebox(key='', feedback_key='', do_acquisition=True, **kwargs)#
Returns a “naked” probe timebox that supports convenient multiplexing through
ShelvedMeasureTimeBox.__add__.This method can be used if the user wants to control the multiplexing explicitly. Supports adding together boxes of type
ShelvedMeasureTimeBoxand/orMultiplexedProbeTimeBox. SeeShelvedMeasureTimeBox.__add__()for more information on the logic.- Parameters:
key (str) – The readout results generated on this trigger will be assigned to
f"{qubit}__{key}", wherequbitgoes over the component names inself.locus. If empty, the key “readout.result” will be used to maintain backwards compatibility.feedback_key (str) – The signals generated by this measure operation are routed using this key for fast feedback purposes. See
__call__().do_acquisition (bool) – if False, no acquisitions are added.
- Returns:
ShelvedMeasureTimeBox containing the ReadoutTrigger instruction.
- Return type:
- _get_probe_timebox_for_time_trace(key='', feedback_key='')#
Utility method that can be overridden in subclasses if they have a return type .probe_pulse.
The
ShelvedMeasureTimeBoxresulting fromprobe_timebox()is first scheduled to obtain an atomicMultiplexedProbeTimeBoxwhich is wrapped into a TimeBox.