# DynamicDecouplingSequence

`class qctrlopencontrols.DynamicDecouplingSequence(duration, offsets, rabi_rotations, azimuthal_angles, detuning_rotations, name=None)`

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

export | Returns a dictionary for plotting using the Q-CTRL Visualizer package. |

export_to_file | Prepares and saves the dynamical decoupling sequence in a file. |