Loading [MathJax]/jax/output/HTML-CSS/jax.js

qml.pauli.PauliWord

class PauliWord(mapping)[source]

Bases: dict

Immutable dictionary used to represent a Pauli Word, associating wires with their respective operators. Can be constructed from a standard dictionary.

Note

An empty PauliWord will be treated as the multiplicative identity (i.e identity on all wires). Its matrix is the identity matrix (trivially the 1×1 one matrix when no wire_order is passed to PauliWord({}).to_mat()).

Examples

Initializing a Pauli word:

>>> w = PauliWord({"a": 'X', 2: 'Y', 3: 'Z'})
>>> w
X(a) @ Y(2) @ Z(3)

When multiplying Pauli words together, we obtain a PauliSentence with the resulting PauliWord as a key and the corresponding coefficient as its value.

>>> w1 = PauliWord({0:"X", 1:"Y"})
>>> w2 = PauliWord({1:"X", 2:"Z"})
>>> w1 @ w2
-1j * Z(1) @ Z(2) @ X(0)

We can multiply scalars to Pauli words or add/subtract them, resulting in a PauliSentence instance.

>>> 0.5 * w1 - 1.5 * w2 + 2
0.5 * X(0) @ Y(1)
+ -1.5 * X(1) @ Z(2)
+ 2 * I

pauli_rep

Trivial pauli_rep

wires

Track wires in a PauliWord.

pauli_rep

Trivial pauli_rep

wires

Track wires in a PauliWord.

commutator(other)

Compute commutator between a PauliWord P and other operator O

commutes_with(other)

Fast check if two PauliWords commute with each other

map_wires(wire_map)

Return a new PauliWord with the wires mapped.

operation([wire_order])

Returns a native PennyLane Operation representing the PauliWord.

to_mat([wire_order, format, coeff])

Returns the matrix representation.

update(_PauliWord__m, **kwargs)

Restrict updating PW after instantiation.

commutator(other)[source]

Compute commutator between a PauliWord P and other operator O

[P,O]=POOP

When the other operator is a PauliWord or PauliSentence, this method is faster than computing P @ O - O @ P. It is what is being used in commutator() when setting pauli=True.

Parameters

other (Union[Operator, PauliWord, PauliSentence]) – Second operator

Returns

The commutator result in form of a PauliSentence instances.

Return type

~PauliSentence

Examples

You can compute commutators between PauliWord instances.

>>> pw = PauliWord({0:"X"})
>>> pw.commutator(PauliWord({0:"Y"}))
2j * Z(0)

You can also compute the commutator with other operator types if they have a Pauli representation.

>>> pw.commutator(qml.Y(0))
2j * Z(0)
commutes_with(other)[source]

Fast check if two PauliWords commute with each other

map_wires(wire_map)[source]

Return a new PauliWord with the wires mapped.

operation(wire_order=())[source]

Returns a native PennyLane Operation representing the PauliWord.

to_mat(wire_order=None, format='dense', coeff=1.0)[source]

Returns the matrix representation.

Keyword Arguments
  • wire_order (iterable or None) – The order of qubits in the tensor product.

  • format (str) – The format of the matrix. It is “dense” by default. Use “csr” for sparse.

  • coeff (float) – Coefficient multiplying the resulting matrix.

Returns

Matrix representation of the Pauli word.

Return type

(Union[NumpyArray, ScipySparseArray])

Raises

ValueError – Can’t get the matrix of an empty PauliWord.

update(_PauliWord__m, **kwargs)[source]

Restrict updating PW after instantiation.