DriveCrossTalk#
Module: iqm.pulse.gates.drive_crosstalk
- class iqm.pulse.gates.drive_crosstalk.DriveCrossTalk(parent, name, locus, calibration_data, builder)#
Bases:
GateImplementationCalibration container and pulse builder for drive crosstalk compensation.
This implementation carries the drive crosstalk calibration data so that it can be calibrated and fetched like any other gate, and it builds the compensation pulses for a resolved schedule. The
apply_drive_crosstalkcompiler pass fetches this implementation via the builder and calls it with a schedule, e.g.:impl = builder.get_implementation("drive_crosstalk", (), impl_name="drive_crosstalk") compensation_box = impl(schedule, crosstalk_loci) # TimeBox with the target aux-channel compensation pulses
The drive crosstalk is described by a complex matrix, where the element \(C_{tc}\) describes the crosstalk drive seen by the target
twhen the controlcis driven: its absolute value is the relative crosstalk amplitude, and its argument the crosstalk phase. To cancel it,apply_drive_crosstalkreplays the control’s drive on an auxiliary drive channel of the target, scaled by the amplitude and phase-shifted accordingly.The matrix is given in a sparse form via three calibration parameters (we do not support dict- or xarray-valued Parameters yet). Parameter
matrix_indexlists the relevant (non-zero) elements as a flat list of strings of the form<target>__<control>. Parameterscrosstalk_amplitudesandcrosstalk_phaseslist the corresponding amplitudes \(|C_{tc}|\) and phases \(\arg C_{tc}\) (in radians). The three arrays must have equal lengths.TODO: this is for now an experimental R&D implementation, and everything here is subject to change still.
Attributes
Required calibration data, may be nested
idUnique str identifier, needed for certain caching properties.
sub_implementationsSingle-component sub-implementations for factorizable gates with len(locus) > 1, otherwise empty.
Methods
One-qubit loci.
- Parameters:
parent (QuantumOp)
name (str)
locus (Locus)
calibration_data (OILCalibrationData)
builder (ScheduleBuilder)
- parameters: NestedParams = {'crosstalk_amplitudes': Parameter(name='crosstalk_amplitudes', label='Drive crosstalk relative amplitudes', unit='', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.NDARRAY: 2>, element_indices=None), 'crosstalk_phases': Parameter(name='crosstalk_phases', label='Drive crosstalk phases', unit='rad', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.NDARRAY: 2>, element_indices=None), 'matrix_index': Parameter(name='matrix_index', label='Drive crosstalk sparse matrix index', unit='', data_type=<DataType.STRING: 3>, collection_type=<CollectionType.LIST: 1>, element_indices=None)}#
Required calibration data, may be nested
Inheritance
