OctaSquareTile

class OctaSquareTile(origin: array, qubit_count=None, qubit_data=None, operators=None, optype='cXZZX')[source]

Bases: Tile

Octa-Square Tile

The tile has the following structure:

                            q0        q1
                            v0        v1
      q2     q3               o------o
      v0     v1         q3   /        \   q4
       o-----o          v7  o          o  v2
       |     |              |          |
       |  0  |          q6  |    1     |  q7
       o-----o          v6  o          o  v3
      v3     v4              \        /
      q5     q6          q9   o-----o  q10
                         v5            v4
     q5        q6
     v0        v1
       o-----o               q9      q10
 q8   /       \   q9         v0      v1
 v7  o         o  v2          o-----o
     |    2    |              |     |
q11  |         |  q12         |  3  |
 v6  o         o  v3          o-----o
      \       /              q12     q13
       o-----o               v3      v2
    q14        q15
    v5         v4

          o------o
         /        \
  o-----o          o
  |     |          |
  |  0  |    1     |
  o-----o          o
 /       \        /
o  (0,0)  o-----o
|    .    |     |
|    2    |  3  |
o         o-----o
 \       /
  o-----o

Octa Square Tile

The tile has the following structure:

                            q0        q1
                            v0        v1
      q2     q3               o------o
      v0     v1         q3   /        \   q4
       o-----o          v7  o          o  v2
       |     |              |          |
       |  0  |          q6  |    1     |  q7
       o-----o          v6  o          o  v3
      v3     v4              \        /
      q5     q6          q9   o-----o  q10
                         v5            v4
     q5        q6
     v0        v1
       o-----o               q9      q10
 q8   /       \   q9         v0      v1
 v7  o         o  v2          o-----o
     |    2    |              |     |
q11  |         |  q12         |  3  |
 v6  o         o  v3          o-----o
      \       /              q12     q13
       o-----o               v3      v2
    q14        q15
    v5         v4

          o------o
         /        \
  o-----o          o
  |     |          |
  |  0  |    1     |
  o-----o          o
 /       \        /
o  (0,0)  o-----o
|    .    |     |
|    2    |  3  |
o         o-----o
 \       /
  o-----o

Face colors for faces [0,1,2,3] are [“yellowgreen”,”tomato”, “tomato”, “yellowgreen”]

Preformatted operators are stored in HexagonTile.op_dict. Keys for op_dict are of the form [p|c|d]PPPP… where p = pattern and c = copy, d=double and P is a Pauli opertor X, Z or Y.

“cX” -> face #0 operator is Pauli(“XXXXXX”), face #1 operator is Pauli(“ZZZZZZ”), … “dXZ” -> face #0 operators are Pauli(“XXXXXX”) and Pauli(“ZZZZZZ”), face #1 operators are Pauli(“ZZZZZZ”) and …

Available precomputed operator layouts are:

cXZZX, cZXXZ

The operator variable may be used to define the operators specifically. The operator must be a list of PauliList objects where each PauliList describes the opertors to be built for the faces as indexed above 0,1,2,3, … If the PauliList contains k Paulis then k operators will be created for the given face.

Parameters:
  • origin (np.array) – Coordinates of origin of tile (shell)

  • qubit_count – Qubit counter. Defaults to None.

  • qubit_data – Qubit data. Defaults to None.

  • operators – Operators for tile faces. Defaults to None.

  • optype (optional) – Which of the listed opertor mapppings to used. Defaults to “pXZXZ”.

A appropriately scalled lattice basis for tiling with the OctaSquareTile can be accessed from [OctaSquareTile.u_vec, OctaSquareTile.v_vec]

Raises:

QiskitError – Unsupported operator type

Returns:

Returns a Octa-Square tile (shell) with provided origin

Return type:

Shell

Methods

classmethod draw()

Display the tile

Return type:

None

Attributes

c8 = 0.9238795325112867
face_colors = ['yellowgreen', 'tomato', 'tomato', 'yellowgreen']
faces_wf_components = [[0], [1], [2], [3]]
num_faces = 4
num_qubits = 16
s8 = 0.3826834323650897
size = array([3.15432203, 3.15432203])
u_vec = array([2.61312593, 0.        ])
v_vec = array([0.        , 2.61312593])
wf_coordinates = [[[-0.3826834323650897, 1.6892463972414662], [0.3826834323650897, 1.6892463972414662], [0.3826834323650897, 0.9238795325112867], [-0.3826834323650897, 0.9238795325112867]], [[0.9238795325112867, 2.230442497387663], [1.6892463972414662, 2.230442497387663], [2.230442497387663, 1.6892463972414662], [2.230442497387663, 0.9238795325112867], [1.6892463972414662, 0.3826834323650897], [0.9238795325112867, 0.3826834323650897], [0.3826834323650897, 0.9238795325112867], [0.3826834323650897, 1.6892463972414662]], [[-0.3826834323650897, 0.9238795325112867], [0.3826834323650897, 0.9238795325112867], [0.9238795325112867, 0.3826834323650897], [0.9238795325112867, -0.3826834323650897], [0.3826834323650897, -0.9238795325112867], [-0.3826834323650897, -0.9238795325112867], [-0.9238795325112867, -0.3826834323650897], [-0.9238795325112867, 0.3826834323650897]], [[0.9238795325112867, 0.3826834323650897], [1.6892463972414662, 0.3826834323650897], [1.6892463972414662, -0.3826834323650897], [0.9238795325112867, -0.3826834323650897]]]
wf_loop_indicator = [True, True, True, True]
wf_operator_dict = {'cXZZX': [PauliList(['XXXX']), PauliList(['ZZZZZZZZ']), PauliList(['ZZZZZZZZ']), PauliList(['XXXX'])], 'cZXXZ': [PauliList(['ZZZZ']), PauliList(['XXXXXXXX']), PauliList(['XXXXXXXX']), PauliList(['ZZZZ'])]}
wf_q_indices = [[2, 3, 6, 5], [0, 1, 4, 7, 10, 9, 6, 3], [5, 6, 9, 12, 15, 14, 11, 8], [9, 10, 13, 12]]