toqito.channel_metrics.channel_fidelity ======================================= .. py:module:: toqito.channel_metrics.channel_fidelity .. autoapi-nested-parse:: Computes the channel fidelity between two quantum channels. Module Contents --------------- .. py:function:: channel_fidelity(choi_1, choi_2, eps = 1e-07) Compute the channel fidelity between two quantum channels [@Katariya_2021_Geometric]. Let \(\Phi : \text{L}(\mathcal{Y}) \rightarrow \text{L}(\mathcal{X})\) and \(\Psi: \text{L}(\mathcal{Y}) \rightarrow \text{L}(\mathcal{X})\) be quantum channels. Then the root channel fidelity defined as \[ \sqrt{F}(\Phi, \Psi) := \text{inf}_{\rho} \sqrt{F}(\Phi(\rho), \Psi(\rho)) \] where \(\rho \in \text{D}(\mathcal{Z} \otimes \mathcal{X})\) can be calculated by means of the following semidefinite program (Proposition 50) in [@Katariya_2021_Geometric], \[ \begin{align*} \text{maximize:} \quad & \lambda \\ \text{subject to:} \quad & \lambda \mathbb{I}_{\mathcal{Z}} \leq \text{Re}\left( \text{Tr}_{\mathcal{Y}} \left( Q \right) \right),\\ & \begin{pmatrix} J(\Phi) & Q^* \\ Q & J(\Psi) \end{pmatrix} \geq 0 \end{align*} \] where \(Q \in \text{L}(\mathcal{Z} \otimes \mathcal{X})\). .. rubric:: Examples For two identical channels, we should expect that the channel fidelity should yield a value of \(1\). ```python exec="1" source="above" import numpy as np from toqito.channels import dephasing from toqito.channel_metrics import channel_fidelity # The Choi matrices of dimension-4 for the dephasing channel choi_1 = dephasing(4) choi_2 = dephasing(4) print(channel_fidelity(choi_1, choi_2)) ``` We can also compute the channel fidelity between two different channels. For example, we can compute the channel fidelity between the dephasing and depolarizing channels. ```python exec="1" source="above" import numpy as np from toqito.channels import dephasing, depolarizing from toqito.channel_metrics import channel_fidelity # The Choi matrices of dimension-4 for the dephasing and depolarizing channels choi_1 = dephasing(4) choi_2 = depolarizing(4) print(channel_fidelity(choi_1, choi_2)) ``` :raises ValueError: If matrices are not of equal dimension. :raises ValueError: If matrices are not square. :param choi_1: The Choi matrix of the first quantum channel. :param choi_2: The Choi matrix of the second quantum channel. :param eps: The solver tolerance for convergence to feasability. :returns: The channel fidelity between the channels specified by the quantum channels corresponding to the Choi matrices `choi_1` and `choi_2`.