spin_z(orbitals, mapping='jordan_wigner', wires=None)[source]

Computes the total spin projection operator \(\hat{S}_z\) in the Pauli basis.

The total spin projection operator \(\hat{S}_z\) is given by

\[\hat{S}_z = \sum_{\alpha, \beta} \langle \alpha \vert \hat{s}_z \vert \beta \rangle ~ \hat{c}_\alpha^\dagger \hat{c}_\beta, ~~ \langle \alpha \vert \hat{s}_z \vert \beta \rangle = s_{z_\alpha} \delta_{\alpha,\beta},\]

where \(s_{z_\alpha} = \pm 1/2\) is the spin-projection of the single-particle state \(\vert \alpha \rangle\). The operators \(\hat{c}^\dagger\) and \(\hat{c}\) are the particle creation and annihilation operators, respectively.

  • orbitals (str) – Number of spin orbitals. If an active space is defined, this is the number of active spin-orbitals.

  • mapping (str) – Specifies the transformation to map the fermionic operator to the Pauli basis. Input values can be 'jordan_wigner' or 'bravyi_kitaev'.

  • wires (Wires, list, tuple, dict) – Custom wire mapping used to convert the qubit operator to an observable measurable in a PennyLane ansatz. For types Wires/list/tuple, each item in the iterable represents a wire label corresponding to the qubit number equal to its index. For type dict, only int-keyed dict (for qubit-to-wire conversion) is accepted. If None, will use identity map (e.g. 0->0, 1->1, …).


the total spin projection observable \(\hat{S}_z\)

Return type



>>> orbitals = 4
>>> Sz = spin_z(orbitals, mapping="jordan_wigner")
>>> print(Sz)
(-0.25) [Z0]
+ (0.25) [Z1]
+ (-0.25) [Z2]
+ (0.25) [Z3]