ProbePulse_CustomWaveforms_noIntegration#

class iqm.pulse.gates.measure.ProbePulse_CustomWaveforms_noIntegration(parent, name, locus, calibration_data, builder)#

Bases: CustomIQWaveforms

Base class for implementing a probe line probe pulse with custom waveforms in the I and Q channels without any integration.

Similar to the ProbePulse_CustomWaveforms except that signal integration is removed.

Module: iqm.pulse.gates.measure

Attributes

dependent_waves

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).

root_parameters

Parameters independent of the of Waveforms.

wave_i

Waveform for the I channel.

wave_q

Waveform for the Q channel.

Methods

duration_in_seconds

Duration of the Schedule of the gate implementation (in seconds).

get_locus_mapping_name

Get the name of the locus mapping stored in ScheduleBuilder.ChipTopology for this implementation.

probe_timebox

Returns a "naked" probe timebox that supports convenient multiplexing through MultiplexedProbeTimeBox.__add__.

Parameters:
root_parameters: dict[str, Parameter | Setting] = {'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': Parameter(name='', label='Readout channel Q amplitude', unit='', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), '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), '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.

_multiplexed_timeboxes: dict[tuple[str, str, bool], MultiplexedProbeTimeBox]#

Cache for probe_timebox().

_build_instructions(waveform_params, root_params, if_freq)#

Builds a probe pulse and an acquisition method using the calibration data.

Subclasses may override this method if needed.

Parameters:
Return type:

IQPulse

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 as True.

probe_timebox(key='', feedback_key='', do_acquisition=False)#

Returns a “naked” probe timebox that supports convenient multiplexing through MultiplexedProbeTimeBox.__add__.

This method can be used if the user wants to control the multiplexing explicitly. With two MultiplexedProbeTimeBox``es ``A and B the result A + B has all the ReadoutTrigger instructions on each probe channel of A and B multiplexed together and played simultaneously.

Parameters:
  • key (str) – The readout results generated on this trigger will be assigned to f"{qubit}__{key}", where qubit goes over the component names in self.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:

MultiplexedProbeTimeBox containing the ReadoutTrigger instruction.

Return type:

MultiplexedProbeTimeBox

_call(key='', feedback_key='')#

Returns a TimeBox containing the multiplexed simultaneous measurement.

If len(self.locus) == 1, the TimeBox contains the measurement for just that component, otherwise the measurements of components that belong to the same probeline are multiplexed together.

The returned TimeBox instances behave like any other TimeBox in scheduling and circuit generation. With measurement TimeBoxes A and B the result A + B first plays the ReadoutTrigger instructions of A and only then those of B in each probe channel. If the multiplexing features of MultiplexedProbeTimeBox are needed, the method probe_timebox() can be used.

In scheduling, the returned TimeBox blocks the locus components and the probe lines they are associated with.

Parameters:
  • key (str) – Readout results generated on this trigger will be assigned to the acquisition labels f"{qubit}__{key}", where qubit goes over the component names in self.locus. If empty, the key "readout.result" will be used to maintain backwards compatibility.

  • feedback_key (str) – If the readout mode is “threshold”, the results generated by this measure operation are routed using the label f"{qubit}__{feedback_key}" for fast feedback purposes. The signals are picked up by ConditionalInstruction`s that have the same label. The default value `””`` means the signal is not routed anywhere. TODO: currently the HW does not support multiple feedback keys per drive channel, so the actual key used will be FEEDBACK_KEY whenever any non-empty key is inputted. When the HW is improved, the actual key the user inputs should be passed.

Returns:

TimeBox containing the ReadoutTrigger instruction.

Return type:

TimeBox

duration_in_seconds()#

Duration of the Schedule of the gate implementation (in seconds).

Can be left unimplemented if the duration e.g. depends on the gate arguments. Subclasses can reimplement this method in case it makes sense in their context.

Return type:

float

classmethod get_locus_mapping_name(operation_name, implementation_name)#

Get the name of the locus mapping stored in ScheduleBuilder.ChipTopology for this implementation.

By default, it is "<operation_name>.<implementation_name>". Inheriting classes may override this for different behaviour.

Parameters:
  • operation_name (str) – name of the quantum operation.

  • implementation_name (str) – name of the implementation

Returns:

name of the locus mapping

Return type:

str