Table Of Contents

Previous topic

Born-Markov noise (qit.markov)

Next topic

Demos and examples (qit.examples)

This Page

Control sequences (qit.seq)

Piecewise constant control sequences for quantum systems. Each control sequence is a dictionary with the following keys:

A Drift generator (typically i/\hbar times a Hamiltonian and a time unit of your choice).
B List of control generators. c := len(B).
tau Vector of durations of the time slices. m := len(tau).
control Array, shape (m, c). control[i,j] is the value of control field j during time slice i.

The total generator for the time slice j is thus given by

G_j = A +\sum_k \text{control}_{jk} B_k,

and the corresponding propagator is

P_j = \exp(-\tau_j G_j).

NOTE the unusual sign convention.

Contents

nmr(a) Convert NMR-style rotations into a one-qubit control sequence.
corpse(theta[, phi]) Sequence for correcting off-resonance errors.
bb1(theta[, phi, location]) Sequence for correcting pulse length errors.
scrofulous(theta[, phi]) Sequence for correcting pulse length errors.
cpmg(t, n) Carr-Purcell-Meiboom-Gill sequence.
seq2prop(s) Propagator corresponding to a control sequence.
propagate(s, seq[, out_func, base_dt]) Propagate a state in time using a control sequence.
qit.seq.nmr(a)

Convert NMR-style rotations into a one-qubit control sequence.

Returns a one-qubit control sequence corresponding to the array a:

a = [[\theta_1, \phi_1], [\theta_2, \phi_2], ...]

Each \theta, \phi pair corresponds to a NMR rotation of the form \theta_\phi, or a rotation of the angle \theta about the unit vector [\cos(\phi), \sin(\phi), 0].

R_{\vec{a}}(\theta) = \exp(-i \vec{a} \cdot \vec{\sigma} \theta/2) = \exp(-i H t) \quad \Leftarrow \quad
H = \vec{a} \cdot \vec{\sigma}/2, \quad t = \theta.

qit.seq.bb1(theta, phi=0, location=0.5)

Sequence for correcting pulse length errors.

Returns the Broadband number 1 control sequence for correcting proportional errors in pulse length (or amplitude) [22].

The target rotation is \theta_\phi in the NMR notation.

qit.seq.corpse(theta, phi=0)

Sequence for correcting off-resonance errors.

Returns the CORPSE control sequence for correcting off-resonance errors, i.e. ones arising from a constant but unknown \sigma_z bias in the Hamiltonian [6]

The target rotation is \theta_\phi in the NMR notation.

CORPSE: Compensation for Off-Resonance with a Pulse SEquence

qit.seq.cpmg(t, n)

Carr-Purcell-Meiboom-Gill sequence.

Returns the Carr-Purcell-Meiboom-Gill sequence of n repeats with waiting time t. The purpose of the CPMG sequence is to facilitate a T_2 measurement under a nonuniform z drift, it is not meant to be a full memory protocol. The target operation for this sequence is identity.

qit.seq.scrofulous(theta, phi=0)

Sequence for correcting pulse length errors.

Returns the SCROFULOUS control sequence for correcting errors in pulse duration (or amplitude) [6].

The target rotation is \theta_\phi in the NMR notation.

SCROFULOUS: Short Composite ROtation For Undoing Length Over- and UnderShoot

qit.seq.seq2prop(s)

Propagator corresponding to a control sequence.

Returns the propagator matrix corresponding to the action of the control sequence s.

Governing equation: \dot(X)(t) = -(A +\sum_k u_k(t) B_k) X(t) = -G(t) X(t).

qit.seq.propagate(s, seq, out_func=<function <lambda> at 0x3cb3500>, base_dt=0.1)

Propagate a state in time using a control sequence.

If no output function is given, we use an identity map.