Slepian#

class iqm.pulse.playlist.waveforms.Slepian(n_samples, full_width, lambda_1, lambda_2, frequency_initial_normalized, frequency_to_minimize_normalized, coupling_strength_normalized, center_offset=0, squid_asymmetry=0)#

Bases: Waveform

Slepian waveform, which minimizes non-adiabatic errors during a gate.

It is assumed that the user has done the minimization in a prior step, such that the optimal \(\lambda_n\) for a specific length \(\tau_\text{pulse}\) (in the accelerated frame) is known. This class then reconstructs the waveform with the following steps:

  1. Calculate \(\theta(\tau)\) (Slepian in the accelerated frame and in \(\theta\) space)

  2. Calculate \(t(\tau)\) (mapping time in the accelerated frame to time in the lab frame)

  3. Interpolate \(\theta(t)\) (Slepian in the lab frame and in \(\theta\) space)

  4. Calculate \(f(t)\) (Slepian in the lab frame and in frequency space)

  5. Calculate \(V(t)\) (Slepian in the lab frame and in voltage space)

Since the waveform is normalized, any voltage pre-factor should go into the pulse amplitude.

The user is advised to look up [1] for further details, since the derivation is mathematically heavy.

Parameters:
  • full_width (float) – Duration of the support of the waveform.

  • lambda_1 (float) – First coefficient of Slepian waveform.

  • lambda_2 (float) – Second coefficient of Slepian waveform.

  • frequency_initial_normalized (float) – Initial frequency of the pulsed component (usually coupler), normalized by the maximum frequency of the pulsed component.

  • frequency_to_minimize_normalized (float) – Frequency of the static component (usually qubit) which to minimize the leakage from/to, normalized by the maximum frequency of the pulsed component.

  • coupling_strength_normalized (float) – Coupling strength between pulsed component and static component, normalized by the maximum frequency of the pulsed component.

  • center_offset (float) – The waveform is centered at this offset from the midpoint of the sampling window.

  • squid_asymmetry (float) – Squid asymmetry.

  • n_samples (int) –

Module: iqm.pulse.playlist.waveforms

Attributes

center_offset

squid_asymmetry

full_width

lambda_1

lambda_2

frequency_initial_normalized

frequency_to_minimize_normalized

coupling_strength_normalized

n_samples

Requested number of samples for the waveform.

Methods

non_timelike_attributes

Mapping from waveform attributes to the units of their calibration data, unless that unit is second.

static non_timelike_attributes()#

Mapping from waveform attributes to the units of their calibration data, unless that unit is second.

Used to construct the parameters for the calibration data required by the waveform. By default all the waveform attributes are “timelike” (the unit for their calibration data is s). However, some waveform attributes can be dimensionless, e.g. the relative amplitudes in a sum of consisting of multiple terms, or frequency-like (calibration data has the unit ‘Hz’). If a Waveform subclass has non-timelike attributes, it needs to redefine this method.

When the Waveform is constructed, all timelike calibration data is converted to units of the sampling window duration, and all frequency-like calibration data into units of inverse sampling window duration.

Return type:

dict[str, str]

_sample(sample_coords)#

Actually samples the waveform.

Parameters:

sample_coords (ndarray) – coordinates of the samples to be returned

Returns:

array of samples (same shape as sample_coords, dtype == float)

Return type:

ndarray

_sample_normalized_slepian(coords)#

Calculate the samples of the actual Slepian waveform.

Parameters:

coords (ndarray) – normalized sample coordinates, in \([0, 1]\)

Returns:

samples of the Slepian waveform

Return type:

ndarray

_t_tau(tau, num_samples=129)#

Convert time in the accelerated frame to the lab frame (real time).

Since the conversion is defined via an integral, finding an analytical solution was not possible. Therefore, we integrate the expression numerically with scipy.integrate.romb().

Parameters:
  • tau (float | ndarray) – Time in the accelerated frame.

  • num_samples (int) – Number of samples for the numerical integration. Must be of the form 2 ** k + 1.

Returns:

tau converted to the lab frame

Return type:

ndarray

_theta_tau(tau)#

Parametrization of the Slepian waveform in the accelerated frame.

The Slepian waveform is parametrized using Fourier base functions, where we only take the cosine terms into account ([1] has shown that this is a reasonable assumption). Here, \(\lambda_n\) is the amplitude of the \(n\)-th term of the Fourier base function. It is usually sufficient to take only up to second order terms into account, i.e. only \(\lambda_1\) and \(\lambda_2\) are non-zero.

Parameters:

tau (ndarray) – Time in the accelerated frame, normalized to [0, 1] with tau_pulse.

Returns:

Slepian waveform in the theta space and accelerated frame.

Return type:

ndarray