ProbePulse_CustomWaveforms#

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

Bases: CustomIQWaveforms

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

Contrary to the Measure_CustomWaveforms class, this implementation acts on proble lines directly (i.e. its locus is a single probe line). 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.

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.

Parameters:
root_parameters: dict[str, Parameter | Setting] = {'acquisition_delay': Parameter(name='', label='Acquisition delay', unit='s', data_type=<DataType.NUMBER: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None, _parent_name=None, _parent_label=None), 'amplitude_i': Parameter(name='', label='Readout channel I amplitude', unit='', data_type=<DataType.NUMBER: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None, _parent_name=None, _parent_label=None), 'amplitude_q': Parameter(name='', label='Readout channel Q amplitude', unit='', data_type=<DataType.NUMBER: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None, _parent_name=None, _parent_label=None), 'duration': Parameter(name='', label='Readout pulse duration', unit='s', data_type=<DataType.NUMBER: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None, _parent_name=None, _parent_label=None), 'integration_length': Parameter(name='', label='Integration length', unit='s', data_type=<DataType.NUMBER: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None, _parent_name=None, _parent_label=None), 'phase': Parameter(name='', label='Readout pulse phase', unit='rad', data_type=<DataType.NUMBER: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None, _parent_name=None, _parent_label=None)}#

Parameters independent of the of Waveforms. Inheriting classes may override this to include parameters common to all such implementations.

_build_instructions(waveform_params, root_params)#

Builds a probe pulse and acquisition methods using the calibration data.

Subclasses may override this method if needed.

Parameters:
Return type:

tuple[IQPulse, tuple[AcquisitionMethod, AcquisitionMethod]]

_call(key='')#

Returns a TimeBox containing the probe pulse measurement.

In scheduling, the returned TimeBox blocks only the probe line (self.locus[0]).

Parameters:

key (str) – The time trace results generated on this trigger will be used to assigned to f"{probe_line}__{key}", where probe_line is the one that handles self.locus[0]. If empty, the key “readout.time_trace” is used.

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.

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