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 definitionsSomething
andSomethingElse
, 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. itslocus
is a single probe line). The measurementIQPulse
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
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_i
Waveform for the I channel.
wave_q
Waveform for the Q channel.
Methods
Duration of the Schedule of the gate implementation (in seconds).
Get the name of the locus mapping stored in
ScheduleBuilder.ChipTopology
for this implementation.- 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.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.
- _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}"
, whereprobe_line
is the one that handlesself.locus[0]
. If empty, the key “readout.time_trace” is used.- Returns:
TimeBox containing the ReadoutTrigger instruction.
- Return type:
- 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
.
- 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:
- 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.