Skip to content

two_qubit_clifford_group

tergite_autocalibration.lib.nodes.coupler.tqg_randomized_benchmarking.utils.two_qubit_clifford_group

Classes:

Name Description
Clifford

Base class for Clifford gates.

SingleQubitClifford
TwoQubitClifford

Functions:

Name Description
get_single_qubit_clifford_hash_table

Get's the single qubit clifford hash table. Requires this to be generated

get_two_qubit_clifford_hash_table

Get's the two qubit clifford hash table. Requires this to be generated

Attributes:

Name Type Description
hash_dir

This file contains Clifford decompositions for the two qubit Clifford group.

hash_dir module-attribute

hash_dir = join(abspath(dirname(__file__)), 'clifford_hash_tables')

This file contains Clifford decompositions for the two qubit Clifford group.

The Clifford decomposition closely follows two papers: Corcoles et al. Process verification ... Phys. Rev. A. 2013 http://journals.aps.org/pra/pdf/10.1103/PhysRevA.87.030301 for the different classes of two-qubit Cliffords.

and Barends et al. Superconducting quantum circuits at the ... Nature 2014 https://www.nature.com/articles/nature13171?lang=en for writing the cliffords in terms of CZ gates.

2-qubit clifford decompositions

The two qubit clifford group (C2) consists of 11520 two-qubit cliffords These gates can be subdivided into four classes. 1. The Single-qubit like class | 576 elements (24^2) 2. The CNOT-like class | 5184 elements (24^2 * 3^2) 3. The iSWAP-like class | 5184 elements (24^2 * 3^2) 4. The SWAP-like class | 576 elements (24^2) --------------------------------|------------- + Two-qubit Clifford group C2 | 11520 elements

  1. The Single-qubit like class -- C1 -- -- C1 --

  2. The CNOT-like class --C1--•--S1-- --C1--•--S1------ | -> | --C1--⊕--S1-- --C1--•--S1^Y90--

  3. The iSWAP-like class --C1----S1-- --C1--•---Y90--•--S1^Y90-- | -> | | --C1----S1-- --C1--•--mY90--•--S1^X90--

  4. The SWAP-like class --C1--x-- --C1--•-mY90--•--Y90--•------- | -> | | | --C1--x-- --C1--•--Y90--•-mY90--•--Y90--

element of the single qubit Clifford group

N.B. we use the decomposition defined in Epstein et al. here

S1: element of the S1 group, a subgroup of the single qubit Clifford group

S1[0] = I S1[1] = rY90, rX90 S1[2] = rXm90, rYm90

Important clifford indices:

1
2
3
4
5
6
7
    I    : Cl 0
    X90  : Cl 16
    Y90  : Cl 21
    X180 : Cl 3
    Y180 : Cl 6
    Z180 : Cl 9
    CZ   : 4368

Clifford

Clifford(idx: int)

Base class for Clifford gates.

SingleQubitClifford

SingleQubitClifford(idx: int, qubit_idx: int = 0)

Bases: Clifford

Attributes:

Name Type Description
gate_decomposition

Returns the gate decomposition of the single qubit Clifford group

gate_decomposition property

gate_decomposition

Returns the gate decomposition of the single qubit Clifford group according to the decomposition by Epstein et al.

TwoQubitClifford

TwoQubitClifford(idx: int)

Bases: Clifford

Methods:

Name Description
CNOT_like_PTM

Returns the pauli transfer matrix for gates of the cnot like class

CNOT_like_gates

Returns the gates for Cliffords of the cnot like class

SWAP_like_PTM

Returns the pauli transfer matrix for gates of the SWAP like class

SWAP_like_gates

Returns the gates for Cliffords of the SWAP like class

iSWAP_like_PTM

Returns the pauli transfer matrix for gates of the iSWAP like class

iSWAP_like_gates

Returns the gates for Cliffords of the iSWAP like class

single_qubit_like_PTM

Returns the pauli transfer matrix for gates of the single qubit like class

single_qubit_like_gates

Returns the gates for Cliffords of the single qubit like class

Attributes:

Name Type Description
gate_decomposition

Returns the gate decomposition of the two qubit Clifford group.

gate_decomposition property

gate_decomposition

Returns the gate decomposition of the two qubit Clifford group.

Single qubit Cliffords are decomposed according to Epstein et al.

CNOT_like_PTM classmethod

CNOT_like_PTM(idx: int)

Returns the pauli transfer matrix for gates of the cnot like class (q0) --C1--•--S1-- --C1--•--S1------ | -> | (q1) --C1--⊕--S1-- --C1--•--S1^Y90--

CNOT_like_gates classmethod

CNOT_like_gates(idx: int)

Returns the gates for Cliffords of the cnot like class (q0) --C1--•--S1-- --C1--•--S1------ | -> | (q1) --C1--⊕--S1-- --C1--•--S1^Y90--

SWAP_like_PTM classmethod

SWAP_like_PTM(idx: int) -> ndarray

Returns the pauli transfer matrix for gates of the SWAP like class

(q0) --C1--x-- --C1--•-mY90--•--Y90--•------- | -> | | | (q1) --C1--x-- --C1--•--Y90--•-mY90--•--Y90--

SWAP_like_gates classmethod

SWAP_like_gates(idx: int)

Returns the gates for Cliffords of the SWAP like class

(q0) --C1--x-- --C1--•-mY90--•--Y90--•------- | -> | | | (q1) --C1--x-- --C1--•--Y90--•-mY90--•--Y90--

iSWAP_like_PTM classmethod

iSWAP_like_PTM(idx: int)

Returns the pauli transfer matrix for gates of the iSWAP like class (q0) --C1----S1-- --C1--•---Y90--•--S1^Y90-- | -> | | (q1) --C1----S1-- --C1--•--mY90--•--S1^X90--

iSWAP_like_gates classmethod

iSWAP_like_gates(idx: int)

Returns the gates for Cliffords of the iSWAP like class (q0) --C1----S1-- --C1--•---Y90--•--S1^Y90-- | -> | | (q1) --C1----S1-- --C1--•--mY90--•--S1^X90--

single_qubit_like_PTM classmethod

single_qubit_like_PTM(idx: int)

Returns the pauli transfer matrix for gates of the single qubit like class (q0) -- C1 -- (q1) -- C1 --

single_qubit_like_gates classmethod

single_qubit_like_gates(idx: int)

Returns the gates for Cliffords of the single qubit like class (q0) -- C1 -- (q1) -- C1 --

get_single_qubit_clifford_hash_table

get_single_qubit_clifford_hash_table()

Get's the single qubit clifford hash table. Requires this to be generated first. To generate, execute "generate_clifford_hash_tables.py".

get_two_qubit_clifford_hash_table

get_two_qubit_clifford_hash_table()

Get's the two qubit clifford hash table. Requires this to be generated first. To generate, execute "generate_clifford_hash_tables.py".