qml.qinfo.transforms.purity¶
- purity(tape, wires, **kwargs)[source]¶
Compute the purity of a
QuantumTape
returningstate()
.\[\gamma = \text{Tr}(\rho^2)\]where \(\rho\) is the density matrix. The purity of a normalized quantum state satisfies \(\frac{1}{d} \leq \gamma \leq 1\), where \(d\) is the dimension of the Hilbert space. A pure state has a purity of 1.
It is possible to compute the purity of a sub-system from a given state. To find the purity of the overall state, include all wires in the
wires
argument.Warning
The
qml.qinfo.purity transform
is deprecated and will be removed in v0.40. Instead, include thepennylane.purity()
measurement process in the return line of your QNode.- Parameters
tape (QNode or QuantumTape or Callable) – A quantum circuit object returning a
state()
.wires (Sequence(int)) – List of wires in the considered subsystem.
- Returns
The transformed circuit as described in
qml.transform
. Executing this circuit will provide the purity in the form of a tensor.- Return type
qnode (QNode) or quantum function (Callable) or tuple[List[QuantumTape], function]
Example
dev = qml.device("default.mixed", wires=2) @qml.qnode(dev) def noisy_circuit(p): qml.Hadamard(wires=0) qml.CNOT(wires=[0, 1]) qml.BitFlip(p, wires=0) qml.BitFlip(p, wires=1) return qml.state() @qml.qnode(dev) def circuit(x): qml.IsingXX(x, wires=[0, 1]) return qml.state()
>>> purity(noisy_circuit, wires=[0, 1])(0.2) 0.5648000000000398 >>> purity(circuit, wires=[0])(np.pi / 2) 0.5 >>> purity(circuit, wires=[0, 1])(np.pi / 2) 1.0
See also