From 5aebfa5e48513113ffbaeeed256a1358061df252 Mon Sep 17 00:00:00 2001 From: king-p3nguin Date: Sun, 5 Nov 2023 17:41:05 +0900 Subject: [PATCH 1/3] chore: add issue temp (bug report) --- .github/ISSUE_TEMPLATE/bug_report.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..188544e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,25 @@ +--- +name: Bug report +about: Report a bug +title: "[Bug]: " +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Environment (please complete the following information):** + - OS: [e.g. Windows10, macOS Monteley] + - Python version: [e.g. 3.8.1] + - Related module versions if applicable: [e.g. numpy=1.23.5] + +**Additional context** +Add any other context about the problem here. From f91daf58da6f35b4a3b38088c83776f6c53f2b27 Mon Sep 17 00:00:00 2001 From: king-p3nguin Date: Sun, 5 Nov 2023 17:41:42 +0900 Subject: [PATCH 2/3] docs: fix typo & grammar --- docs/source/tutorial.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst index 7755c45..f42c14e 100644 --- a/docs/source/tutorial.rst +++ b/docs/source/tutorial.rst @@ -23,8 +23,8 @@ If you have not installed `graphix` yet, you can install it using `pip` as well: Generating MBQC Pattern ----------------------- -We first generate a MBQC pattern using ``graphix`` library. -First, let us import relevant modules and define function we will use: +We first generate an MBQC pattern using ``graphix`` library. +First, let us import relevant modules and define the function we will use: .. code-block:: python @@ -84,7 +84,7 @@ Now let us convert the pattern into a circuit using the `graphix-perceval` libra Running pattern on Perceval simulator ------------------------------------- -By running the Perceval's computing backends, We can obtain the probability distribution of the measurement outcomes +By running Perceval's computing backends, we can obtain the probability distribution of the measurement outcomes .. code-block:: python From bd86bec88cdaf3fbc7164311fae7cc9dd91cca79 Mon Sep 17 00:00:00 2001 From: king-p3nguin Date: Mon, 6 Nov 2023 04:35:57 +0900 Subject: [PATCH 3/3] docs: new example --- docs/source/_static/img/ghz_circuit.svg | 294 +++++++++++++----- docs/source/_static/img/ghz_pattern.png | Bin 15851 -> 14871 bytes .../_static/img/ghz_pattern_updated.png | Bin 0 -> 17605 bytes docs/source/tutorial.rst | 47 ++- 4 files changed, 254 insertions(+), 87 deletions(-) create mode 100644 docs/source/_static/img/ghz_pattern_updated.png diff --git a/docs/source/_static/img/ghz_circuit.svg b/docs/source/_static/img/ghz_circuit.svg index f055d95..b3276f6 100644 --- a/docs/source/_static/img/ghz_circuit.svg +++ b/docs/source/_static/img/ghz_circuit.svg @@ -1,6 +1,6 @@ + width="1150.0" height="781.25" viewBox="-35.0 0 920.0 625.0"> @@ -9,97 +9,231 @@ + + + + + + - + + GHZ + + + +GHZ - - - - - - - - -LOCALCLIFFORDID:6 - - -LOCALCLIFFORDID:6 - - - - - - - - - - - - - - - - + + + + + + + + + + + +FUSE2-5 + + + +FUSE3-4 + + + + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -0 -1 -2 -3 -4 -5 -0 -1 -2 -3 -4 -5 + + +LOCALCLIFFORDID:4 + + +LOCALCLIFFORDID:19 + + +LOCALCLIFFORDID:4 + + +LOCALCLIFFORDID:19 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ξ=pi/4 +δ=pi/4 + + + +ξ=0.1875*pi +δ=pi/2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 \ No newline at end of file diff --git a/docs/source/_static/img/ghz_pattern.png b/docs/source/_static/img/ghz_pattern.png index 4715a969aa0ba57646bf635569d2c1c7a80c2af8..c272ad3d355763e46477d258e2e6723ff85ea76d 100644 GIT binary patch literal 14871 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 diff --git a/docs/source/_static/img/ghz_pattern_updated.png b/docs/source/_static/img/ghz_pattern_updated.png new file mode 100644 index 0000000000000000000000000000000000000000..0c1d78c900c30ce483115cf88cc3ed1174f01833 GIT binary patch literal 17605 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 G;{O5_>^=Jc literal 0 HcmV?d00001 diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst index f42c14e..2b79c46 100644 --- a/docs/source/tutorial.rst +++ b/docs/source/tutorial.rst @@ -40,12 +40,13 @@ First, let us import relevant modules and define the function we will use: circuit.h(2) circuit.cnot(0, 1) circuit.cnot(0, 2) + circuit.ry(1, np.pi/3) Then we define a circuit: .. code-block:: python - # generate the GHZ state generation pattern + # generate a slightly modified GHZ state generation pattern circuit = Circuit(3) simple_circ(circuit) pattern = circuit.transpile() @@ -62,7 +63,34 @@ Then we define a circuit: .. figure:: ./_static/img/ghz_pattern.png :scale: 85 % - :alt: 2-qubit pattern visualization + :alt: 3-qubit pattern visualization + +This circuit should generate the following state: + +.. math:: + + \frac{\sqrt{6}}{4} |000\rangle+\frac{\sqrt{2}}{4} |010\rangle- \frac{\sqrt{2}}{4} |101\rangle+\frac{\sqrt{6}}{4} |111\rangle + +Next, we update the pattern with Pauli measurements: + +.. code-block:: python + + pattern.standardize() + pattern.shift_signals() + pattern.perform_pauli_measurements() + + # plot the pattern + nodes, edges = pattern.get_graph() + g = nx.Graph() + g.add_nodes_from(nodes) + g.add_edges_from(edges) + np.random.seed(100) + nx.draw(g) + plt.show() + +.. figure:: ./_static/img/ghz_pattern_updated.png + :scale: 85 % + :alt: 3-qubit updated pattern visualization Pattern-to-circuit conversion ----------------------------- @@ -79,7 +107,7 @@ Now let us convert the pattern into a circuit using the `graphix-perceval` libra .. figure:: ./_static/img/ghz_circuit.svg :scale: 85 % - :alt: 2-qubit pattern visualization + :alt: 3-qubit pattern visualization Running pattern on Perceval simulator ------------------------------------- @@ -99,8 +127,10 @@ By running Perceval's computing backends, we can obtain the probability distribu state probability - |000> 0.5 - |111> 0.5 + |000> 0.375 + |011> 0.125 + |100> 0.125 + |111> 0.375
@@ -120,13 +150,16 @@ or sampling distribution with a given number of samples: state counts - |000> 499 - |111> 501 + |000> 354 + |011> 127 + |100> 128 + |111> 391
.. note:: Note that the current implementation only supports ``SLOS`` and ``Naive`` as local Perceval processors. + ``SLOS`` has a better time complexity, while ``Naive`` has a better space complexity. See `Perceval documentation `_ for more details.