diff --git a/docs/tutorials/QEC_Framework_IEEE_2022.ipynb b/docs/tutorials/QEC_Framework_IEEE_2022.ipynb index 0b89fb11..634bcbcf 100644 --- a/docs/tutorials/QEC_Framework_IEEE_2022.ipynb +++ b/docs/tutorials/QEC_Framework_IEEE_2022.ipynb @@ -49,7 +49,7 @@ " \n", "### Layer Design\n", "\n", - "```{verbatim}\n", + "```\n", "\n", " ┌ Layer 3: Maximum flexibility, convenience, options, many checks, ... \n", "Python ┤ \n", @@ -91,7 +91,7 @@ "### Structure\n", "\n", "\n", - "```{verbatim}\n", + "```\n", "├── qiskit_qec\n", " ├── analysis\n", " ├── circuits\n", @@ -360,10 +360,9 @@ "\n", "\\begin{align}\n", "\\rho_{U|\\phi\\rangle} &= U|\\phi\\rangle (U|\\phi\\rangle)^\\dagger \\\\\n", - " &=U|\\phi\\rangle\\langle\\phi|U^\\dagger \\\\\n", - " &=U\\rho_{|\\phi\\rangle}U^\\dagger\n", + "&=U|\\phi\\rangle\\langle\\phi|U^\\dagger \\\\\n", + "&=U\\rho_{|\\phi\\rangle}U^\\dagger\n", "\\end{align}\n", - "\n", " \n", "Multiple qubits are modeled via tensor products and so $n$-qubit system has a Hilbert space\n", "\n", @@ -932,8 +931,8 @@ "- find a $g'\\in\\mathcal{U}$ such that $[g,g']=-I$ and set $\\mathcal{U}\\leftarrow\\mathcal{U}\\backslash\\{g'\\}$\n", "- for each $v\\in\\mathcal{U}$ make $v$ commute with the processes hyperbolic pairs:\n", "\\begin{align}\n", - " v&\\leftarrow vg \\quad\\textrm{if}\\quad [v,q]=-I \\\\\n", - " v&\\leftarrow vg' \\quad\\textrm{if}\\quad [v,q']=-I \\\\\n", + "v&\\leftarrow vg \\quad\\textrm{if}\\quad [v,q]=-I \\\\\n", + "v&\\leftarrow vg' \\quad\\textrm{if}\\quad [v,q']=-I \\\\\n", "\\end{align}\n", "\n", "The result will yield \n", @@ -1104,8 +1103,6 @@ "\n", "![image7.png](attachment:a6a7e099-4400-402e-abbf-1494e7756fb8.png)\n", "\n", - "\n", - "\n", "### Gauge Groups\n", "\n", "**Definition** Let $\\mathcal{G}\\leq\\mathcal{P}_n$ be any subgroup (not necessarily abelian) such that $Z(\\mathcal{G})$ is either $\\langle iI,S\\rangle$ or $\\langle -I,S\\rangle$ or $\\langle S\\rangle$ such that $-I\\not\\in S$. The subgroup $\\mathcal{G}$ is referred to as a **gauge group** and $S$ is considered the associated stabilizer group. \n", @@ -1151,7 +1148,7 @@ "source": [ "
\n", " Note: Within the QEC Framework there is only a GaugeGroup class and no Stabilzer class. This is because internally it views a stabilzier group as simply an abelian gauge group and finds the code by a group character defintion.\n", - "
\n" + "" ] }, { @@ -1163,7 +1160,7 @@ "\n", "One simple but important computational problem is to find a set of representatives for logical operators and gauge operators of a subsystem stabilizer code. This problem can be solved efficiently. We will use the method based on the Gram-Schmidt process described previously which uses symplectic geometry as propose by Wilde [Arxiv 0903.5256]. For Stabilizer codes there is also the approach by Gottesman [PhD Dissertation, Sect 4]. \n", "\n", - "From the defintion above we see that to find the logical operators we need only find generating sets for $C(\\mathcal{G})\\setminus \\mathcal{G}$ to get the logical operators and $C(S)\\setminus \\mathcal{G}$ for t he dressed logical operators.\n" + "From the defintion above we see that to find the logical operators we need only find generating sets for $C(\\mathcal{G})\\setminus \\mathcal{G}$ to get the logical operators and $C(S)\\setminus \\mathcal{G}$ for t he dressed logical operators." ] }, { @@ -1254,9 +1251,9 @@ "\\mathcal{G} &= \\langle \\alpha, Z'_1,Z'_2,...,Z'_{n-k-r}, \\underbrace{X'_{n-k-r+1},Z'_{n-k-r+1},...,X'_{n-k},Z'_{n-k}}_{\\text{$r$ hyperbolic pairs}} \\rangle \\\\\n", "Z(\\mathcal{G}) &= \\langle \\alpha, S\\rangle \\\\\n", "S &= \\langle Z'_1,...,Z'_{n-k-r} \\rangle \\\\\n", - "C_{\\mathcal{P}_n}(S) &= \\langle iI, Z'_1,Z'_2,...,Z'_{n-k-r}, \\underbrace{X'_{n-k-r+1},Z'_{n-k-r+1},...,X'_{n},Z'_{n}}_{\\text{$k+r$ hyperbolic pairs}} \\rangle\n", - " = N_{\\mathcal{P}_n}(S) \\\\\n", - "C_{\\mathcal{P}_n}(\\mathcal{G}) &= \\langle iI, Z'_1,Z'_2,...,Z'_{n-k-r}, \\underbrace{X'_{n-k+1},Z'_{n-k+1},...,X'_{n},Z'_{n}}_{\\text{$k$ hyperbolic pairs}} \\rangle \\\\\n", + "C_{\\mathcal{P}_n}(S) &= \\langle iI, Z'_1,Z'_2,...,Z'_{n-k-r}, \\underbrace{X'_{n-k-r+1},Z'_{n-k-r+1},...,X'_{n},Z'_{n}}_{\\text{$k+r$ hyperbolic pairs}} \\rangle \n", + "= N_{\\mathcal{P}_n}(S) \\\\\n", + "C_{\\mathcal{P}_n}(\\mathcal{G}) &= \\langle iI, Z'_1,Z'_2,...,Z'_{n-k-r}, \\underbrace{X'_{n-k+1},Z'_{n-k+1},...,X'_{n},Z'_{n}}_{\\text{$k$ hyperbolic pairs}} \\rangle\n", "\\end{align}\n", "\n", "Note that \n", @@ -1364,7 +1361,7 @@ "In the special case where $k=0$,\n", "\n", "\\begin{equation}\n", - " d = \\min_{P\\in \\mathcal{G}\\setminus \\{I\\}} |P|.\n", + "d = \\min_{P\\in \\mathcal{G}\\setminus \\{I\\}} |P|.\n", "\\end{equation}\n", "\n", "A stabilizer subsystem code encoding $k$ qubits into $n$ qubits with $r$ gauge qubits and distance $d$ is called an $[[n,k,r,d]]$ subsystem stabilizer code." @@ -1563,9 +1560,12 @@ "The complex infinite Clifford group over $n$-qubits is defined by\n", "\n", "\\begin{align}\n", - " C_n^{\\infty}=\\mathcal{N}_{U(2^n)} (\\mathcal{P}_n) &= \\{ T\\in U(2^n): T\\mathcal{P}_nT^{-1}=\\mathcal{P}_n\\} \\\\\n", - " &= \\{ T\\in U(2^n): T\\mathcal{P}_nT^{\\dagger}=\\mathcal{P}_n\\} \\\\\n", - " &= \\begin{cases} \\langle e^{i\\theta}I, H, S \\rangle & \\textrm{if $n=1$} \\\\ \\langle e^{i\\theta}I, H_j, S_j, \\textrm{CNOT}_{ij} \\rangle & \\textrm{if $n>1$} \\end{cases}\n", + "C_n^{\\infty}=\\mathcal{N}_{U(2^n)} (\\mathcal{P}_n) &= \\{ T\\in U(2^n): T\\mathcal{P}_nT^{-1}=\\mathcal{P}_n\\} \\\\\n", + "&= \\{ T\\in U(2^n): T\\mathcal{P}_nT^{\\dagger}=\\mathcal{P}_n\\} \\\\\n", + "&= \\begin{cases} \n", + "\\langle e^{i\\theta}I, H, S \\rangle & \\textrm{if $n=1$} \\\\\n", + "\\langle e^{i\\theta}I, H_j, S_j, \\textrm{CNOT}_{ij} \\rangle & \\textrm{if $n>1$}\n", + "\\end{cases}\n", "\\end{align}\n", "\n", "where $H$ is the Hadamard operator and $S$ is the phase operator with the following matrix representations relative to the standard basis:\n", @@ -1579,7 +1579,10 @@ "Note that $(HS)^3 = \\eta I$ where $\\eta$ an eighth root of unity. The finite complex Clifford group $C_n\\leq C_n^\\infty$ is defined by\n", "\n", "\\begin{align}\n", - "C_n = \\begin{cases} \\langle H, S \\rangle & \\textrm{if $n=1$} \\\\ \\langle H_j, S_j, \\textrm{CNOT}_{ij} \\rangle & \\textrm{if $n>1$}\\end{cases}\n", + "C_n = \\begin{cases} \n", + "\\langle H, S \\rangle & \\textrm{if $n=1$} \\\\ \n", + "\\langle H_j, S_j, \\textrm{CNOT}_{ij} \\rangle & \\textrm{if $n>1$}\n", + "\\end{cases}\n", "\\end{align}\n", "\n", "Elements of $C_1$ acting on Pauli operators in $\\mathcal{P}_1$ via $\\dagger$-conjugation are acting as a permutations of the set $\\{I,X,Z,Y\\}$ with a possible change in complex coefficient. In fact it can be show that $C_1/\\langle \\eta I, \\mathcal{P}_1\\rangle \\eqsim S_3$. These 6 elements are\n", @@ -1712,7 +1715,7 @@ "Different codebases are packaged as code libraries and managed by a `CodeLibarian` class.\n", "\n", "\n", - "```{verbatim}\n", + "```\n", "├── qiskit_qec\n", " └── codes\n", " └── codebase\n", diff --git a/src/qiskit_qec/circuits/repetition_code.py b/src/qiskit_qec/circuits/repetition_code.py index fbbcb2eb..40bb3f52 100644 --- a/src/qiskit_qec/circuits/repetition_code.py +++ b/src/qiskit_qec/circuits/repetition_code.py @@ -1072,6 +1072,7 @@ def string2nodes(self, string, **kwargs) -> List[DecodingGraphNode]: kwargs: all_logicals (bool): Whether to include logical nodes irrespective of value. (False as default). + Returns: dict: List of nodes corresponding to to the non-trivial elements in the string. diff --git a/src/qiskit_qec/circuits/surface_code.py b/src/qiskit_qec/circuits/surface_code.py index 92b71fd6..50162caa 100644 --- a/src/qiskit_qec/circuits/surface_code.py +++ b/src/qiskit_qec/circuits/surface_code.py @@ -370,7 +370,7 @@ def string2nodes(self, string, **kwargs): kwargs: logical (str): Logical value whose results are used ('0' as default). all_logicals (bool): Whether to include logical nodes - irrespective of value. (False as default). + irrespective of value. (False as default). Returns: dict: List of nodes corresponding to to the non-trivial diff --git a/tox.ini b/tox.ini index 3a8d37d1..05732e58 100644 --- a/tox.ini +++ b/tox.ini @@ -37,4 +37,4 @@ deps = jax jaxlib commands = - sphinx-build -b html docs/ docs/_build/html \ No newline at end of file + sphinx-build -b html -W -T --keep-going {posargs} docs/ docs/_build/html