ProbePulse_CustomWaveforms#

Module: iqm.pulse.gates.measure

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

Bases: Measure_CustomWaveforms

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

With given Waveform waveform definitions Something and SomethingElse, you may define a measurement implementation that uses them as follows: class MyGate(ProbePulse_CustomWaveforms, i_wave=Something, q_wave=SomethingElse). The measurement IQPulse instruction will not be automatically modulated by any frequency, so any modulations should be included in the I and Q waveforms themselves.

Due to device limitations this implementation also has to integrate the readout signal (using arbitrary weights), even though it does not make much sense.

Contrary to the Measure_CustomWaveforms class, this implementation acts on probe lines directly (i.e. its locus is a single probe line) as it is intended to be used in contexts where well-defined qubits may not have been characterized yet (such as readout frequency calibration with a chirp pulse).

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.

id

Unique str identifier, needed for certain caching properties.

sub_implementations

Single-component sub-implementations for factorizable gates with len(locus) > 1, otherwise empty.

Methods

locus_mapping_function

One-component loci on probe lines.

time_trace

Returns a multiplexed simultaneous measurement with an additional time trace acquisition.

Parameters:
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), '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), 'integration_length': Parameter(name='', label='Integration length', unit='s', 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.

locus_mapping_function()#

One-component loci on probe lines.

Parameters:

sp (StationProperties)

Return type:

dict[tuple[str, …], tuple[str, …]]

time_trace(key='', **kwargs)#

Returns a multiplexed simultaneous measurement with an additional time trace acquisition.

The returned MeasureBoxes are the same as the one returned by __call__() except the time trace acquisition is appended to the acquisitions of each probe line’s ReadoutTrigger instruction.

Parameters:
  • key (str) – Readout results generated on this trigger will be used to assigned to f"{qubit}__{key}", where qubit goes over the component names in self.locus, whereas the recorded time traces will be assigned to f"{probe_line}__{key}" where probe_line goes through all the probe lines associated with self.locus. If empty, the key "readout.result" will be used for integrated results and the key "readout.time_trace" for the recorded time traces.

  • acquisition_delay – optionally override the time trace acquisition delay with this value (given in seconds). Does not affect the acquisition delays of the integrated measurements.

  • acquisition_duration – optionally override the time trace acquisition duration with this value (given in seconds). Does not affect the integration lengths of the integrated measurements.

  • feedback_key – The signals generated by the integration are routed using this label, prefixed by the component. See __call__().

Returns:

TimeBox containing the ReadoutTrigger instruction.

Return type:

TimeBox

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.

Inheritance

Inheritance diagram of iqm.pulse.gates.measure.ProbePulse_CustomWaveforms