ProbePulse_CustomWaveforms#
Module: iqm.pulse.gates.measure
- class iqm.pulse.gates.measure.ProbePulse_CustomWaveforms(parent, name, locus, calibration_data, builder)#
Bases:
CustomIQWaveformsBase class for implementing a probe line measurement pulse with custom waveforms in the I and Q channels.
With given
Waveformwaveform definitionsSomethingandSomethingElse, you may define a measurement implementation that uses them as follows:class MyGate(ProbePulse_CustomWaveforms, i_wave=Something, q_wave=SomethingElse). The measurementIQPulseinstruction 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_CustomWaveformsclass, this implementation acts on proble lines directly (i.e. itslocusis a single probe line).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_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
Duration of the Schedule of the gate implementation (in seconds).
Get the name of the locus mapping stored in
ScheduleBuilder.ChipTopologyfor this implementation.- Parameters:
parent (QuantumOp)
name (str)
locus (Locus)
calibration_data (OILCalibrationData)
builder (ScheduleBuilder)
- root_parameters = {'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.
- 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.ChipTopologyfor this implementation.By default, it is
"<operation_name>.<implementation_name>". Inheriting classes may override this for different behaviour.
- dependent_waves = 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.
Inheritance
