qctrlopencontrols.new_quadratic_sequence(duration, inner_offset_count, outer_offset_count, pre_post_rotation=False, name=None)

Creates the quadratic sequence.


  • duration (float) – The total duration of the sequence τ\tau
  • inner_offset_count (int) – Number of inner ZπZ_{\pi} pulses n1n_1
  • outer_offset_count (int) – Number of outer XπX_{\pi} pulses n2n_2
  • pre_post_rotation (bool , optional) – If True, a Xπ/2X_{\pi/2}False.
  • name (string , optional) – Name of the sequence. Defaults to None.


The quadratic sequence.

Return type





The quadratic sequence 1 is parameterized by duration τ\tau, number of inner offsets n1n_1, and number of outer offsets n2n_2. The outer sequence consists of n2n_2 pulses of type XπX_{\pi}, which partition the time-domain into n2+1n_2+1 sub-intervals on which inner sequences consisting of n1n_1 pulses of type ZπZ_{\pi} are nested. The total number of offsets is n=n1+n2(n1+1)n = n_1 + n_2(n_1 + 1)

The pulse times for outer sequence (Xπ1,,Xπn2)(X_{\pi}^1, \cdots, X_{\pi}^{n_2}) are defined according to the Uhrig sequence for t[0,τ]t \in [0, \tau]. The jj-th XπX_{\pi}

txj=τsin2[jπ2(n2+1)]  , t_x^j = \tau \sin^2 \left[ \frac{j \pi}{2(n_2 + 1)} \right] \;,

where j=1,,n2j = 1, \cdots, n_2. On each sub-interval defined by the outer sequence, an inner sequence (Zπ1,,Zπn1)(Z_{\pi}^1, \cdots, Z_{\pi}^{n_1}) is implemented. The pulse times for the inner sequences are also defined according to the Uhrig sequence. The kk-th pulse of the jj

tz(k,j)=(txjtxj1)sin2[kπ2(n1+1)]+txj1  , t_z(k, j) = (t_x^j - t_x^{j - 1}) \sin^2 \left[ \frac{k \pi} {2 (n_1 + 1)} \right] + t_{x}^{j - 1} \;,

where k=1,,n1k = 1, \cdots, n_1 and j=1,,n2+1j = 1, \cdots, n_2 + 1


[1] J. R. West, B. H. Fong, and D. A. Lidar, Physical Review Letters 104, 130501 (2010).

Was this useful?