DynamicDecouplingSequence¶

class
qctrlopencontrols.
DynamicDecouplingSequence
(duration: float, offsets: numpy.ndarray, rabi_rotations: numpy.ndarray, azimuthal_angles: numpy.ndarray, detuning_rotations: numpy.ndarray, name: Optional[str] = None)[source]¶ Creates a dynamic decoupling sequence.
 Parameters
duration (float) – The total time in seconds for the sequence \(\tau\).
offsets (np.ndarray) – The times offsets \(\{t_j\}\) in seconds for the center of pulses.
rabi_rotations (np.ndarray) – The rabi rotation \(\omega_j\) at each time offset \(t_j\).
azimuthal_angles (np.ndarray) – The azimuthal angle \(\phi_j\) at each time offset \(t_j\).
detuning_rotations (np.ndarray) – The detuning rotation \(\delta_j\) at each time offset \(t_j\).
name (str, optional) – Name of the sequence. Defaults to None.
Notes
Dynamical decoupling sequence (DDS) is canonically defined as a series of \(n\)instantaneous unitary operations, often \(\pi\)pulses, executed at time offsets \(\{t_j\}_{j=1}^n\) over the time interval with a total duration \(\tau\). The \(j\)th operation applied at time \(t_j\) can be parameterized as
\[U_j = \exp\left[\frac{i}{2}(\omega_j \cos \phi_j \sigma_x + \omega_j\sin \phi_j\sigma_y + \delta_j\sigma_z)\right] \;,\]Note that in practice all DDSs typically have a \(X_{\pi/2}\) operation at the start \(t = 0\) and end \(t = \tau\) of the sequence. This is because it is assumed that the qubit is initially in the state \(0\rangle\) and a superposition needs to be created and removed to make the qubit sensitive to dephasing.
Methods
Returns a dictionary for plotting using the qctrlvisualizer package.
Prepares and saves the dynamical decoupling sequence in a file.