Fast_Measure_CustomWaveforms#
- class iqm.pulse.gates.measure.Fast_Measure_CustomWaveforms(parent, name, locus, calibration_data, builder)#
Bases:
Measure_CustomWaveformsMeasure implementation that blocks locus qubits for a shorter duration than the probes.
The locus qubits are blocked only for the physical probe pulse duration plus (calibratable) extra dead time that can be used to take into account e.g. ring down delay of waiting the readout resonator to empty itself. The probe channels are still blocked as in
Measure_CustomWaveforms, i.e. for the duration ofacquisition_delay + integration_length + integration_dead_time.Module:
iqm.pulse.gates.measureAttributes
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).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
Otherwise the same as
Measure_CustomWaveforms.probe_timebox, but returns two TimeBoxes, the actual MultiplexedProbeTimeBox and the rest of the probe-blocking wait time in its own TimeBox.- Parameters:
parent (QuantumOp)
name (str)
locus (Locus)
calibration_data (OILCalibrationData)
builder (ScheduleBuilder)
- 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=''), '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=''), 'locus_deadtime': Setting(parameter=Parameter(name='locus_deadtime', label='Locus dead time after the probe pulse', unit='s', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), value=0.0, 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)}#
Parameters independent of the of Waveforms. Inheriting classes may override this to include parameters common to all such implementations.
- 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.
- probe_timebox(key='', feedback_key='', do_acquisition=True, **kwargs)#
Otherwise the same as
Measure_CustomWaveforms.probe_timebox, but returns two TimeBoxes, the actual MultiplexedProbeTimeBox and the rest of the probe-blocking wait time in its own TimeBox. This allows the “tetris logic” in scheduling to block the locus qubits for a shorter duration.- Parameters:
- Return type:
- _call(key='', feedback_key='')#
The same as
Measure_CustomWaveforms._call, i.e. wrap the “naked” multiplexable probe_timeboxes into a composite TimeBox.
- _get_probe_timebox_for_time_trace(key='', feedback_key='')#
Get the probe TimeBox for TimeTrace. This is just a single MultiplexedProbeTimeBox which has the full probe duration (including integration). The faster logic wrt. qubit blocking is not important in the context of TimeTraces.