From 5b48b765ac6a4d5b87bf892433ac48ebd57b8f06 Mon Sep 17 00:00:00 2001 From: Dan Mills <52407433+daniel-mills-cqc@users.noreply.github.com> Date: Mon, 2 Oct 2023 16:43:27 +0100 Subject: [PATCH] Qermit 0.5.0 (#93) * Uniform task labels (#36) * Make _label case uniform A VERY small PR making the case used for _label uniform. * Capitalise Ex * Pytket v1 upgrade (#41) * Upgrade to pytket v1.0.1 This primarily includes: - remove Rebase passes - change module names * Remove unused imports * Add capitilisation * Update docs with change to pytket version * Correct version requirements * Correct verson requirements Co-authored-by: Daniel Mills Co-authored-by: Daniel Mills * Remove Partial SPAM correcter (#42) * remove all traces * update docs * Update build_and_test.yml * Remove copy.copy (#43) * update use of copy.copy in code remove in many cases * copy.deepcopy -> deepcopy * reintroduce necessary copy * fix typo * Add ObservableTracker.clear method (#44) * Shot splitter mitres (#40) * Add shot splitting mitres * Better python practice with shot splitting * Correct comment format * Change function name * Add a compiled shot splitting metres * Correct typing on split_index * Use OutcomeArray to gather results * Correct comment spelling * Add splitting mitres to docs * Rebuild docs Co-authored-by: Daniel Mills Co-authored-by: Daniel Mills Co-authored-by: Daniel Mills * Remove appendix from LICENSE file (#46) * Update graph visualisation (#37) * update to vertical visualisation * Update mitresgraph.png * Delete mitresgraph.png * update manual images * update mitex manual images * update docs image * rebuild docs and manual Co-authored-by: sjdilkes * Add basic "_cache" attribute for storing all generated edge data from run() (#47) * add bad cache * smarten how cache works * qermit.mittask -> qermit.taskgraph * add .cache to mitres and mitex * remove redundant print * add "run_basic" method (#48) * Correct qubit mutation (#50) * Add qubit relabelling task * Correct typing * Add documentation * Add tests * Code reformatting * Correct manual * Rebuild docs * Add missing tasks to docs Co-authored-by: Daniel Mills * Minor edits, rebuild docs and manual (#49) * add bad cache * smarten how cache works * qermit.mittask -> qermit.taskgraph * add .cache to mitres and mitex * add "run_basic" method * fix obvious issues * qermit -> Qermit * Update index.rst * Update index.rst * q -> Q * rebuild manual and docs * remove print * rebuild docs and manual * add "real" string back * update docs * update docs * Update pytket version to 1~(#55) * update pytket * update * Remove pytket from test requirements, and cast mean * Update zne.py * Remove use of RebaseToCliffordSingles * BLACK FORMAT Co-authored-by: Daniel Mills Co-authored-by: sjdilkes * Add `characterisation` attribute to TaskGraph and pass as kwarg to TaskGraph.run (#61) * Update _version.py * Update zne_test.py * Add characterisation attribute to taskgraph allow to be passed at run * ignore numpy * set mittask characterisation attribute when running * Update frame_randomisation_test.py * update pytket version * Update frame_randomisation_test.py * revert pytket changes * update versioning * Update SPAM correction to use characterisation instead of BackendInfo * Update full_spam_test.py * use characteriastoin in CCL * update manual * Add Spectral Filtering Method (#63) * Initial commit with outline of protocol * Remove unnecessary wires * Add result extraction * Output qpo * Add test * Add characterisation cache * Add documentation * Add spectral filtering tests * Generalise tests to more complicated qpo * Add type annotation * Remove caches * Add documentation * Split FFT from formatting component * Add tests for graph generation and new FFT and formating task * Add tests, docs and type annotation for small coefficient filter * Document FFT and related tasks * Document SignalFilter * Clean up some documentation * Minor corrctions to typing * Simplify NDArray typing * Change to List type annotation * Add additioinal documentation * Address Silas PR comments * Code Formatting * Formatting and type checking * Add compiled docs * Compile manual * Add spectral fiiltering to docs index * Remove use of np array * Correct typing Co-authored-by: Daniel Mills Co-authored-by: Daniel Mills * Update python version (#66) * Update copyright (#69) * Update pytket version to 1.11(#67) * Change copyright * Add noise scaling via 2 qubit gate folding (#72) * Add 2 qubit gate folding * Run black * Import isclose * Add test call to main call --------- Co-authored-by: dan-mills-cqc * update docs * Add failing tests (#76) * Add failing SPAM test * Add test backends * Add pytket-quantinuum to test requirements * Remove myqos imports * Add test init * Add failing ZNE test * Add types and docs to mock backend * Fix pytket-quantinuum test version --------- Co-authored-by: dan-mills-cqc Co-authored-by: dan-mills-cqc * ZNE Include all Qubit Map (#78) * add failing test * Add complete workflow failing test * Pass list of node maps * Correct documentation --------- Co-authored-by: dan-mills-cqc * Add removed wires in get_full_transition_tomography_circuits (#75) * Add coverage for removing wires, also format * Remove added DecomposeBoxes * format * Move MockQuantinuumBackend to qermit subdirectory, update FullyConneted architeture constructed * remove pytest fails * Update test_requirements.txt * Update mock_quantinuum_backend.py * Format code and add format check to CI (#77) * Format code and add format check to CI * Revert some formatting * Add coverage to requirements * Add flake8 to test requirements * Install test requirements before running tests * Update README with formatting change * Correct formatting --------- Co-authored-by: dan-mills-cqc Co-authored-by: dan-mills-cqc * Update versions * Fix mock backend tests (#82) * Extend mock mackend gateset * Reduce optimisation level * Remove unrequired changes * Add n_cl_reg to mock quantinuum backend * Change node names to match updates quaninuum backends --------- Co-authored-by: dan-mills-cqc Co-authored-by: dan-mills-cqc * Make cache visible (#86) * Make cache visible * Add test for visible cache --------- Co-authored-by: dan-mills-cqc * Use equivalence check between characterisation (#84) I believe it's okay if they are not exactly the same list of nodes? * correct duplication of experiment mitex (#85) Co-authored-by: dan-mills-cqc * Docs/update docs theme (#90) * add build and .venv to .gitignore * update theme configuration in conf.py * update theme requirements * replace CQC logo with Quantinuum logo * remove refernce to old logo in index.rst * add built files to .gitignore * update copyright * update docs theme in user manual * add source code links to API docs * update old links in index * remove redundant .gitignore line * Add doc build to tests (#89) Co-authored-by: dan-mills-cqc * Make Folding and Fit methods staticmethod (#87) * Remove self * Add @staticmethod decorator * Repair high compute tests --------- Co-authored-by: dan-mills-cqc Co-authored-by: dan-mills-cqc * Postselection and leakage example (#88) * Add postselection and leakage example * Add documentation * add rst files * Code formatting * add reset and reorder compilation * Add test comparing to pytket method * remove post_select from manager move to using one work postselect * remove post_select from mitres * Remove post_select from tests * Silas corrections * Correct formatting --------- Co-authored-by: dan-mills-cqc * Separate NoisyAerBackend (#91) * Sperate noisyaerbackend from mock quantinuum * Correct mypy * Add docstrings on gate sets * Update test requirements * Remove commented out gate set * Correct code formatting * Move noise model definition * Correct gateset --------- Co-authored-by: dan-mills-cqc * Reformat code with `black` (#92) * Reformat black * Add copyright notices * Fix mypy issues * appease CI * Update versions * Correct type annotatioin (#94) * Correct type annotatioin * Remove prints * Additional typing corrections * install testing requirements * Correct workflow formatting * Correct all type errors * Minor code style changes --------- Co-authored-by: dan-mills-cqc --------- Co-authored-by: Daniel Mills Co-authored-by: Daniel Mills Co-authored-by: Silas Dilkes <36165522+sjdilkes@users.noreply.github.com> Co-authored-by: Daniel Mills Co-authored-by: Seyon Sivarajah Co-authored-by: sjdilkes Co-authored-by: cqc-melf <70640934+cqc-melf@users.noreply.github.com> Co-authored-by: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> --- .github/workflows/build_and_test.yml | 50 +++++++- .gitignore | 3 + _version.py | 2 +- docs_src/CQCLogo.png | Bin 345527 -> 0 bytes docs_src/_static/Quantinuum_logo_black.png | Bin 0 -> 18245 bytes docs_src/_static/Quantinuum_logo_white.png | Bin 0 -> 16704 bytes docs_src/_static/custom.css | 37 ++++++ docs_src/conf.py | 27 ++-- docs_src/index.rst | 12 +- docs_src/leakage_detection.rst | 5 + docs_src/postselection.rst | 9 ++ docs_src/requirements.txt | 4 +- manual/_static/Quantinuum_logo_black.png | Bin 0 -> 18245 bytes manual/_static/Quantinuum_logo_white.png | Bin 0 -> 16704 bytes manual/_static/custom.css | 37 ++++++ manual/conf.py | 19 ++- qermit/__init__.py | 7 +- qermit/clifford_noise_characterisation/ccl.py | 41 +++--- .../cdr_post.py | 1 - .../frame_randomisation.py | 3 + qermit/leakage_detection/__init__.py | 1 + qermit/leakage_detection/leakage_detection.py | 101 +++++++++++++++ .../mock_backend/mock_quantinuum_backend.py | 85 +++---------- qermit/mock_backend/noisy_aer_backend.py | 84 +++++++++++++ qermit/postselection/__init__.py | 2 + qermit/postselection/postselect_manager.py | 119 ++++++++++++++++++ qermit/postselection/postselect_mitres.py | 101 +++++++++++++++ .../pec_learning_based.py | 33 ++--- qermit/spam/full_spam_correction.py | 7 +- qermit/spam/full_transition_tomography.py | 31 +++-- qermit/spectral_filtering/signal_filter.py | 3 +- .../spectral_filtering/spectral_filtering.py | 5 - qermit/taskgraph/graphviz.py | 1 - qermit/taskgraph/mitex.py | 12 +- qermit/taskgraph/mitres.py | 14 ++- qermit/taskgraph/mittask.py | 4 +- qermit/taskgraph/task_graph.py | 2 +- qermit/taskgraph/utils.py | 20 +-- qermit/zero_noise_extrapolation/zne.py | 89 +++++++------ tests/leakage_gadget_test.py | 78 ++++++++++++ tests/mitex_test.py | 37 ++++++ tests/pec_test.py | 2 +- tests/postselection_test.py | 58 +++++++++ tests/spectral_filtering_test.py | 14 +++ tests/test_requirements.txt | 3 +- tests/zne_test.py | 103 ++++++++++++++- 46 files changed, 1033 insertions(+), 233 deletions(-) delete mode 100644 docs_src/CQCLogo.png create mode 100644 docs_src/_static/Quantinuum_logo_black.png create mode 100644 docs_src/_static/Quantinuum_logo_white.png create mode 100644 docs_src/_static/custom.css create mode 100644 docs_src/leakage_detection.rst create mode 100644 docs_src/postselection.rst create mode 100644 manual/_static/Quantinuum_logo_black.png create mode 100644 manual/_static/Quantinuum_logo_white.png create mode 100644 manual/_static/custom.css create mode 100644 qermit/leakage_detection/__init__.py create mode 100644 qermit/leakage_detection/leakage_detection.py create mode 100644 qermit/mock_backend/noisy_aer_backend.py create mode 100644 qermit/postselection/__init__.py create mode 100644 qermit/postselection/postselect_manager.py create mode 100644 qermit/postselection/postselect_mitres.py create mode 100644 tests/leakage_gadget_test.py create mode 100644 tests/postselection_test.py diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 356312f4..b3a71336 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -31,12 +31,7 @@ jobs: cd tests pip install -r test_requirements.txt pytest --cov-report term-missing:skip-covered --cov=qermit --durations=10 - - name: Run mypy - if: github.event_name == 'pull_request' - run: mypy -p qermit - - name: Format check - if: github.event_name == 'pull_request' - run: flake8 qermit/ tests/ --ignore=E501,W503 + linux: name: Build and test (Linux) runs-on: ubuntu-latest @@ -82,3 +77,46 @@ jobs: cd tests pip install -r test_requirements.txt pytest --cov-report term-missing:skip-covered --cov=qermit --durations=10 + + build-docs: + name: Test documentation build + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Install Qermit + run: pip install . + - name: Build Docs + run: | + cd docs_src + pip install -r requirements.txt + ./build_docs.sh + cd ../manual + ./build_manual.sh + - name: Save documentation + uses: actions/upload-artifact@v2 + with: + name: docs_html + path: docs/ + - name: Upload artifact + uses: actions/upload-pages-artifact@v1 + with: + path: 'docs/' + + formatting-checks: + name: Check typing and formatting + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Build qermit + run: | + pip install -e . -v + cd tests + pip install -r test_requirements.txt + - name: Run mypy + if: github.event_name == 'pull_request' + run: mypy -p qermit + - name: Format check + if: github.event_name == 'pull_request' + run: flake8 qermit/ tests/ --ignore=E501,W503 diff --git a/.gitignore b/.gitignore index 5bf79dfe..8869b613 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,6 @@ .idea/ .dmypy.json .DS_Store +.venv +build +docs/ diff --git a/_version.py b/_version.py index 6a9beea8..3d187266 100644 --- a/_version.py +++ b/_version.py @@ -1 +1 @@ -__version__ = "0.4.0" +__version__ = "0.5.0" diff --git a/docs_src/CQCLogo.png b/docs_src/CQCLogo.png deleted file mode 100644 index 822c7b2948ba6dedb74e26f788e4b96f1eedcfb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 345527 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≶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]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 literal 0 HcmV?d00001 diff --git a/docs_src/_static/custom.css b/docs_src/_static/custom.css new file mode 100644 index 00000000..618fe1b1 --- /dev/null +++ b/docs_src/_static/custom.css @@ -0,0 +1,37 @@ +.wy-side-nav-search, +.wy-nav-top { + background: #5A46BE; +} + +.wy-grid-for-nav, +.wy-body-for-nav, +.wy-nav-side, +.wy-side-scroll, +.wy-menu, +.wy-menu-vertical { + background-color: #FFFFFF; +} + +.wy-menu-vertical a:hover { + background-color: #d9d9d9; +} + +.btn-link:visited, +.btn-link, +a:visited, +.a.reference.external, +.a.reference.internal, +.wy-menu-vertical a, +.wy-menu-vertical li, +.wy-menu-vertical ul, +.span.pre, +.sig-param, +.std.std-ref, + +html[data-theme=light] { + --pst-color-inline-code: rgb(199, 37, 78) !important; +} + +.sig-name { + font-size: 1.25rem; +} \ No newline at end of file diff --git a/docs_src/conf.py b/docs_src/conf.py index 7253af09..42dc5027 100644 --- a/docs_src/conf.py +++ b/docs_src/conf.py @@ -18,13 +18,13 @@ # -- Project information ----------------------------------------------------- project = "Qermit" -copyright = "2021, Cambridge Quantum Computing Ltd" -author = "Cambridge Quantum Computing Ltd" +copyright = "2023 Quantinuum" +author = "Quantinuum" # The short X.Y version -version = "0.4.0" +version = "0.5.0" # The full version, including alpha/beta/rc tags -release = "0.4.0" +release = "0.5.0" # -- General configuration --------------------------------------------------- @@ -41,6 +41,7 @@ "sphinx.ext.autosummary", "sphinx.ext.intersphinx", "sphinx.ext.mathjax", + "sphinx.ext.viewcode", ] # Add any paths that contain templates here, relative to this directory. @@ -66,16 +67,26 @@ # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = "sphinx" - # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -html_theme = "sphinx_rtd_theme" +html_theme = "sphinx_book_theme" + +html_theme_options = { + "repository_url": "https://github.com/CQCL/qermit", + "use_repository_button": True, + "use_issues_button": True, + "logo": { + "image_light": "_static/Quantinuum_logo_black.png", + "image_dark": "_static/Quantinuum_logo_white.png", + }, +} + +html_static_path = ["_static"] +html_css_files = ["custom.css"] # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, diff --git a/docs_src/index.rst b/docs_src/index.rst index d4ad7930..7cceefbd 100644 --- a/docs_src/index.rst +++ b/docs_src/index.rst @@ -1,14 +1,10 @@ Qermit ====== -.. image:: CQCLogo.png - :width: 120px - :align: right - -``qermit`` is a python module for running error-mitigation protocols on quantum computers using ``pytket``, -CQC's python module for interfacing with `CQC `_ tket, a set of quantum programming tools. +``qermit`` is a python module for running error-mitigation protocols on quantum computers using the ``pytket`` +python module for interfacing with tket, a set of quantum programming tools developed by `Quantinuum `_. ``qermit`` functions using the ``pytket`` :py:class:`Backend` class, meaning ``qermit`` supports any of the -`numerous providers `_ ``pytket`` does. +`numerous providers `_ ``pytket`` does. ``qermit`` also provides easy composability of error-mitigation methods, meaning it is practically straightforward to run an experiment with multiple forms of error-mitigation where appropriate. @@ -137,6 +133,8 @@ are several ways to contact us: measurement_reduction.rst spam.rst frame_randomisation.rst + postselection.rst + leakage_detection.rst clifford_noise_characterisation.rst zero_noise_extrapolation.rst probabilistic_error_cancellation.rst diff --git a/docs_src/leakage_detection.rst b/docs_src/leakage_detection.rst new file mode 100644 index 00000000..53c9b5c3 --- /dev/null +++ b/docs_src/leakage_detection.rst @@ -0,0 +1,5 @@ +qermit.leakage_detection +======================== + +.. automethod:: qermit.leakage_detection.leakage_detection.get_leakage_detection_mitres + diff --git a/docs_src/postselection.rst b/docs_src/postselection.rst new file mode 100644 index 00000000..11099a5e --- /dev/null +++ b/docs_src/postselection.rst @@ -0,0 +1,9 @@ +qermit.postselection +==================== + +.. automethod:: qermit.postselection.postselect_mitres.gen_postselect_mitres + +.. autoclass:: qermit.postselection.postselect_manager.PostselectMgr + :members: + :special-members: + diff --git a/docs_src/requirements.txt b/docs_src/requirements.txt index ac634e4d..601e8d8f 100644 --- a/docs_src/requirements.txt +++ b/docs_src/requirements.txt @@ -1,4 +1,4 @@ -sphinx +sphinx > 4.2.0, <6.2.0 sphinx_autodoc_annotation -sphinx_rtd_theme +sphinx_book_theme ~= 1.0.1 jupyter_sphinx diff --git a/manual/_static/Quantinuum_logo_black.png b/manual/_static/Quantinuum_logo_black.png new file mode 100644 index 0000000000000000000000000000000000000000..5569581b8e420f14eee561cbf1bf78ca0c96882f GIT binary patch literal 18245 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 literal 0 HcmV?d00001 diff --git a/manual/_static/custom.css b/manual/_static/custom.css new file mode 100644 index 00000000..618fe1b1 --- /dev/null +++ b/manual/_static/custom.css @@ -0,0 +1,37 @@ +.wy-side-nav-search, +.wy-nav-top { + background: #5A46BE; +} + +.wy-grid-for-nav, +.wy-body-for-nav, +.wy-nav-side, +.wy-side-scroll, +.wy-menu, +.wy-menu-vertical { + background-color: #FFFFFF; +} + +.wy-menu-vertical a:hover { + background-color: #d9d9d9; +} + +.btn-link:visited, +.btn-link, +a:visited, +.a.reference.external, +.a.reference.internal, +.wy-menu-vertical a, +.wy-menu-vertical li, +.wy-menu-vertical ul, +.span.pre, +.sig-param, +.std.std-ref, + +html[data-theme=light] { + --pst-color-inline-code: rgb(199, 37, 78) !important; +} + +.sig-name { + font-size: 1.25rem; +} \ No newline at end of file diff --git a/manual/conf.py b/manual/conf.py index 4c483e74..dde62ca6 100644 --- a/manual/conf.py +++ b/manual/conf.py @@ -4,8 +4,8 @@ # See https://www.sphinx-doc.org/en/master/usage/configuration.html project = "qermit-manual" -copyright = "2020-2021 Cambridge Quantum Computing Ltd" -author = "Cambridge Quantum Computing Ltd" +copyright = "2023 Quantinuum" +author = "Quantinuum" extensions = [ "sphinx.ext.autodoc", @@ -14,4 +14,17 @@ "jupyter_sphinx", ] -html_theme = "sphinx_rtd_theme" +html_theme = "sphinx_book_theme" + +html_theme_options = { + "repository_url": "https://github.com/CQCL/qermit", + "use_repository_button": True, + "use_issues_button": True, + "logo": { + "image_light": "_static/Quantinuum_logo_black.png", + "image_dark": "_static/Quantinuum_logo_white.png", + }, +} + +html_static_path = ["_static"] +html_css_files = ["custom.css"] diff --git a/qermit/__init__.py b/qermit/__init__.py index bca60026..e1197545 100644 --- a/qermit/__init__.py +++ b/qermit/__init__.py @@ -20,12 +20,7 @@ modify the expectation value of some observable (MitEx). """ from qermit.taskgraph.task_graph import TaskGraph # noqa:F401 -from qermit.taskgraph.mittask import ( # noqa:F401 - MitTask, - AnsatzCircuit, - CircuitShots, - ObservableExperiment, -) +from qermit.taskgraph.mittask import MitTask, AnsatzCircuit, CircuitShots, ObservableExperiment # noqa:F401 from qermit.taskgraph.mitres import MitRes # noqa:F401 from qermit.taskgraph.mitex import MitEx # noqa:F401 from qermit.taskgraph.utils import SymbolsDict, MeasurementCircuit, ObservableTracker # noqa:F401 diff --git a/qermit/clifford_noise_characterisation/ccl.py b/qermit/clifford_noise_characterisation/ccl.py index 86ce92cc..9405cdea 100644 --- a/qermit/clifford_noise_characterisation/ccl.py +++ b/qermit/clifford_noise_characterisation/ccl.py @@ -40,6 +40,8 @@ from enum import Enum import warnings from pytket.passes import auto_rebase_pass +from typing import cast +from pytket.unit_id import UnitID ufr_gateset = {OpType.CX, OpType.Rz, OpType.H} @@ -174,10 +176,13 @@ def gen_state_circuits( for i in range(len(all_coms)): com = all_coms[i] if com.op.type == OpType.Rz: - new_circuit.add_barrier(com.qubits) - angle = sample_weighted_clifford_angle(com.op.params[0]) - new_circuit.add_gate(com.op.type, [angle], com.qubits) - new_circuit.add_barrier(com.qubits) + new_circuit.add_barrier(cast(List[UnitID], com.qubits)) + original_angle = com.op.params[0] + if not isinstance(original_angle, float): + raise Exception("Circuit cannot include parameters which are not floats.") + angle = sample_weighted_clifford_angle(original_angle) + new_circuit.add_gate(com.op.type, [angle], cast(List[UnitID], com.qubits)) + new_circuit.add_barrier(cast(List[UnitID], com.qubits)) # Measure gate has special case, but can assume 1 qubit to 1 bit elif com.op.type is OpType.Measure: new_circuit.Measure(com.qubits[0], com.bits[0]) @@ -186,7 +191,7 @@ def gen_state_circuits( new_circuit.add_barrier(com.args) # CX or H gate, add as is else: - new_circuit.add_gate(com.op.type, com.qubits) + new_circuit.add_gate(com.op.type, cast(List[UnitID], com.qubits)) # all circuits accepted and run, some results later discarded if not accepted by Metropolis-Hastings rule state_circuits.append(new_circuit) @@ -219,32 +224,35 @@ def gen_state_circuits( for i in range(len(all_coms)): com = all_coms[i] if com.op.type == OpType.Rz: - new_circuit.add_barrier(com.qubits) + new_circuit.add_barrier(cast(List[UnitID], com.qubits)) # 3 sets of gates int must be in # in clifford_pair_elements means gate has been denominated as Clifford, # but is in some sampled pair so add original angle if i in clifford_pair_elements: - new_circuit.add_gate(com.op.type, com.op.params, com.qubits) - new_circuit.add_barrier(com.qubits) + new_circuit.add_gate(com.op.type, com.op.params, cast(List[UnitID], com.qubits)) + new_circuit.add_barrier(cast(List[UnitID], com.qubits)) # in non_clifford_pair_elements mean gate was denominated to be left non-Clifford, # but its value has been sampled in a pair to now be Clifford # random angle is sampled and returned elif i in non_clifford_pair_elements: - angle = sample_weighted_clifford_angle(com.op.params[0]) - new_circuit.add_gate(com.op.type, [angle], com.qubits) - new_circuit.add_barrier(com.qubits) + original_angle = com.op.params[0] + if not isinstance(original_angle, float): + raise Exception("Circuit cannot include parameters which are not floats.") + angle = sample_weighted_clifford_angle(original_angle) + new_circuit.add_gate(com.op.type, [angle], cast(List[UnitID], com.qubits)) + new_circuit.add_barrier(cast(List[UnitID], com.qubits)) # in cliffords mean it is denominated as Clifford, and hasn't been sampled for a pair # as clifford_pair_elements has already been checked # in this case, cliffords is a dict between Rz index and substitution S power # get power from dict, multiply by 0.5 to get angle, add to circuit elif i in cliffords: - new_circuit.add_gate(com.op.type, [0.5 * cliffords[i]], com.qubits) - new_circuit.add_barrier(com.qubits) + new_circuit.add_gate(com.op.type, [0.5 * cliffords[i]], cast(List[UnitID], com.qubits)) + new_circuit.add_barrier(cast(List[UnitID], com.qubits)) # final case means gate was chosen to retain non-Clifford, and has not been # sampled in any pair, so add original angle. else: - new_circuit.add_gate(com.op.type, com.op.params, com.qubits) - new_circuit.add_barrier(com.qubits) + new_circuit.add_gate(com.op.type, com.op.params, cast(List[UnitID], com.qubits)) + new_circuit.add_barrier(cast(List[UnitID], com.qubits)) # Measure gate has special case, but can assume 1 qubit to 1 bit elif com.op.type is OpType.Measure: new_circuit.Measure(com.qubits[0], com.bits[0]) @@ -253,7 +261,7 @@ def gen_state_circuits( new_circuit.add_barrier(com.args) # CX or H gate, add as is else: - new_circuit.add_gate(com.op.type, com.qubits) + new_circuit.add_gate(com.op.type, cast(List[UnitID], com.qubits)) # all circuits accepted and run, some results later discarded if not accepted by Metropolis-Hastings rule state_circuits.append(new_circuit) @@ -329,7 +337,6 @@ def task( all_close = True attempt = 0 while all_close and attempt < max_state_circuits_attempts: - state_circuits = gen_state_circuits( c_copy, n_non_cliffords, diff --git a/qermit/clifford_noise_characterisation/cdr_post.py b/qermit/clifford_noise_characterisation/cdr_post.py index 15ce35fb..8aa8eca6 100644 --- a/qermit/clifford_noise_characterisation/cdr_post.py +++ b/qermit/clifford_noise_characterisation/cdr_post.py @@ -112,7 +112,6 @@ def cdr_quality_check_task( """ for calibration, original in zip(state_circuit_exp, noisy_expectation): - # The noisy expectation value of the original circuit. original_coefficient = original.to_list()[0]["coefficient"][0] diff --git a/qermit/frame_randomisation/frame_randomisation.py b/qermit/frame_randomisation/frame_randomisation.py index 943825c7..1c2155ed 100644 --- a/qermit/frame_randomisation/frame_randomisation.py +++ b/qermit/frame_randomisation/frame_randomisation.py @@ -36,6 +36,8 @@ class FrameRandomisation(Enum): + + @staticmethod def PauliFrameRandomisation( circuit: Circuit, shots: int, samples: int ) -> List[CircuitShots]: @@ -56,6 +58,7 @@ def PauliFrameRandomisation( pfr_circuits = pfr.sample_circuits(circuit, samples) return [CircuitShots(Circuit=c, Shots=pfr_shots) for c in pfr_circuits] + @staticmethod def UniversalFrameRandomisation( circuit: Circuit, shots: int, samples: int ) -> List[CircuitShots]: diff --git a/qermit/leakage_detection/__init__.py b/qermit/leakage_detection/__init__.py new file mode 100644 index 00000000..2fa3a4cd --- /dev/null +++ b/qermit/leakage_detection/__init__.py @@ -0,0 +1 @@ +from .leakage_detection import get_leakage_detection_mitres # noqa:F401 diff --git a/qermit/leakage_detection/leakage_detection.py b/qermit/leakage_detection/leakage_detection.py new file mode 100644 index 00000000..2d9c5fcf --- /dev/null +++ b/qermit/leakage_detection/leakage_detection.py @@ -0,0 +1,101 @@ +from qermit.postselection import PostselectMgr +from qermit.postselection.postselect_mitres import gen_postselect_task +from qermit import CircuitShots, MitRes, MitTask, TaskGraph +from copy import deepcopy +from typing import List, Tuple, cast +from pytket.extensions.quantinuum.backends.leakage_gadget import get_detection_circuit # type: ignore +from pytket.backends import Backend +from pytket.backends.backendinfo import BackendInfo + + +def gen_add_leakage_gadget_circuit_task(backend: Backend) -> MitTask: + """Generates task adding leakage gadget circuits to given circuts. + + :param backend: Backend on which the circuit will be run. + :type backend: Backend + :return: Task adding leakage gadget circuits to given circuts. + :rtype: MitTask + """ + + if backend.backend_info is None: + raise Exception("This backend has no nodes.") + + n_device_qubits = cast(BackendInfo, backend.backend_info).n_nodes + + def task( + obj, circuit_shots_list: List[CircuitShots] + ) -> Tuple[List[CircuitShots], List[PostselectMgr]]: + """Task adding leakage gadget circuits to given circuts. This reuses + methods from pytket-quantinuum. A list of the corresponding + postselection managers is also created. + + :param circuit_shots_list: List of circuits to which leakage gadget + circuit should be added. + :type circuit_shots_list: List[CircuitShots] + :return: Circuits with gadget added, and list of corresponding + post selection managers. + :rtype: Tuple[List[CircuitShots], List[PostselectMgr]] + """ + + # Add leakage detection gadget to each inputted circuit. + detection_circuit_shots_list = [ + CircuitShots( + Circuit=get_detection_circuit( + circuit=circuit_shots.Circuit, + n_device_qubits=n_device_qubits, + ), + Shots=circuit_shots.Shots, + ) + for circuit_shots in circuit_shots_list + ] + + # For each circuit create a postselection manager. These may be + # different for each circuit, if for example the circuits are of + # different sizes. + postselect_mgr_list = [ + PostselectMgr( + compute_cbits=orig_circuit.Circuit.bits, + postselect_cbits=list( + set(detection_circuit.Circuit.bits).difference( + set(orig_circuit.Circuit.bits) + ) + ), + ) + for orig_circuit, detection_circuit in zip( + circuit_shots_list, detection_circuit_shots_list + ) + ] + + return ( + detection_circuit_shots_list, + postselect_mgr_list, + ) + + return MitTask( + _label="AddLeakageGadget", + _n_in_wires=1, + _n_out_wires=2, + _method=task, + ) + + +def get_leakage_detection_mitres(backend: Backend, **kwargs) -> MitRes: + """Generate MitRes making use of leakage detection and postselection. + + :param backend: Backend on which the circuits are run. + :type backend: Backend + :return: MitRes making use of leakage detection and postselection. + :rtype: MitRes + """ + + _mitres = deepcopy( + kwargs.get("mitres", MitRes(backend, _label="LeakageDetectionMitRes")) + ) + _taskgraph = TaskGraph().from_TaskGraph(_mitres) + _taskgraph.add_wire() + # Prepend task adding leakage detection circuits. + _taskgraph.prepend(gen_add_leakage_gadget_circuit_task(backend)) + # Append task removing shots where leakage is detected + _taskgraph.append(gen_postselect_task()) + + return MitRes(backend).from_TaskGraph(_taskgraph) diff --git a/qermit/mock_backend/mock_quantinuum_backend.py b/qermit/mock_backend/mock_quantinuum_backend.py index 440c6e51..06afa7c1 100644 --- a/qermit/mock_backend/mock_quantinuum_backend.py +++ b/qermit/mock_backend/mock_quantinuum_backend.py @@ -19,76 +19,21 @@ from pytket.extensions.quantinuum import QuantinuumBackend # type: ignore from pytket.extensions.quantinuum.backends.quantinuum import _GATE_SET # type: ignore from pytket.predicates import CompilationUnit # type: ignore -from pytket.extensions.qiskit import AerBackend # type: ignore -import qiskit.providers.aer.noise as noise # type: ignore from pytket import OpType from pytket import Circuit from pytket.backends.resulthandle import ResultHandle from typing import List, Union from pytket.backends.backendresult import BackendResult - - -class NoisyAerBackend(AerBackend): - noisy_gate_set = {OpType.CX, OpType.H, OpType.Rz, OpType.Rz, OpType.Measure} - - def __init__(self, n_qubits: int, prob_1: float, prob_2: float, prob_ro: float): - """AerBacked with simple depolarising and SPAM noise model. - - :param n_qubits: The number of qubits available on the backend. - :type n_qubits: int - :param prob_1: The depolarising noise error rates on single qubit gates. - :type prob_1: float - :param prob_2: The depolarising noise error rates on two qubit gates. - :type prob_2: float - :param prob_ro: Error rates of symmetric uncorrelated SPAM errors. - :type prob_ro: float - """ - - noise_model = self.depolarizing_noise_model(n_qubits, prob_1, prob_2, prob_ro) - super().__init__(noise_model=noise_model) - - def depolarizing_noise_model( - self, - n_qubits: int, - prob_1: float, - prob_2: float, - prob_ro: float, - ) -> noise.NoiseModel: - """Generates noise model, may be passed to `noise_model` parameter of - AerBacked. - - :param n_qubits: Number of qubits noise model applies to. - :type n_qubits: int - :param prob_1: The depolarising noise error rates on single qubit gates. - :type prob_1: float - :param prob_2: The depolarising noise error rates on two qubit gates. - :type prob_2: float - :param prob_ro: Error rates of symmetric uncorrelated SPAM errors. - :type prob_ro: float - :return: Noise model - :rtype: noise.NoiseModel - """ - - noise_model = noise.NoiseModel() - - error_2 = noise.depolarizing_error(prob_2, 2) - for edge in [[i, j] for i in range(n_qubits) for j in range(i)]: - noise_model.add_quantum_error(error_2, ["cx"], [edge[0], edge[1]]) - noise_model.add_quantum_error(error_2, ["cx"], [edge[1], edge[0]]) - - error_1 = noise.depolarizing_error(prob_1, 1) - for node in range(n_qubits): - noise_model.add_quantum_error(error_1, ["h", "rx", "rz"], [node]) - - probabilities = [[1 - prob_ro, prob_ro], [prob_ro, 1 - prob_ro]] - error_ro = noise.ReadoutError(probabilities) - for i in range(n_qubits): - noise_model.add_readout_error(error_ro, [i]) - - return noise_model +from .noisy_aer_backend import NoisyAerBackend class MockQuantinuumBackend(QuantinuumBackend): + """Backend mocking some of the features of QuantinuumBackend. + In particular the gateset and connectivity of the backend is replicated + so that compilation behaviour is reproduced. Some noise (unrelated to + that on the device) is also applied. + """ + gate_set = _GATE_SET gate_set.add(OpType.ZZPhase) @@ -96,12 +41,11 @@ class MockQuantinuumBackend(QuantinuumBackend): name="MockQuantinuumBackend", device_name="mock-quantinuum", version="n/a", - architecture=FullyConnected(10, "node"), + architecture=FullyConnected(10, "q"), gate_set=gate_set, + n_cl_reg=100, ) - noisy_gate_set = {OpType.CX, OpType.H, OpType.Rz, OpType.Rz, OpType.Measure} - def __init__(self): super(MockQuantinuumBackend, self).__init__(device_name="H1-1SC") self.noisy_backend = NoisyAerBackend( @@ -125,7 +69,8 @@ def process_circuit( :param valid_check: Explicitly check that all circuits satisfy all required predicates to run on the backend, defaults to True :type valid_check: bool, optional - :return: Handles to results for each input circuit, as an interable in the same order as the circuits. + :return: Handles to results for each input circuit, as an interable + in the same order as the circuits. :rtype: ResultHandle """ @@ -134,10 +79,12 @@ def process_circuit( noisy_circuit = circuit.copy() cu = CompilationUnit(noisy_circuit) - auto_rebase_pass(gateset=self.noisy_gate_set).apply(cu) - self.noisy_backend.default_compilation_pass(optimisation_level=0).apply(cu) - assert GateSetPredicate(self.noisy_gate_set).verify(cu.circuit) + self.noisy_backend.default_compilation_pass(optimisation_level=0).apply(cu) + auto_rebase_pass(gateset=self.noisy_backend.noisy_gate_set).apply(cu) + assert GateSetPredicate( + self.noisy_backend.noisy_gate_set.union({OpType.Reset, OpType.Barrier}) + ).verify(cu.circuit) handle = self.noisy_backend.process_circuit(cu.circuit, n_shot) self.handle_cu_dict[handle] = cu diff --git a/qermit/mock_backend/noisy_aer_backend.py b/qermit/mock_backend/noisy_aer_backend.py new file mode 100644 index 00000000..b8b78056 --- /dev/null +++ b/qermit/mock_backend/noisy_aer_backend.py @@ -0,0 +1,84 @@ +# Copyright 2019-2023 Quantinuum +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from pytket.extensions.qiskit import AerBackend # type: ignore +from pytket import OpType +import qiskit.providers.aer.noise as noise # type: ignore + + +class NoisyAerBackend(AerBackend): + """AerBacked with simple depolarising and SPAM noise model. Depolarising + noise is added to the gateset {OpType.CX, OpType.H, OpType.Rz, + OpType.Rz, OpType.Measure} and circuits should be rebased into + that gateset before running. + """ + + noisy_gate_set = {OpType.CX, OpType.H, OpType.Rz, OpType.Rz, OpType.Measure} + + def __init__(self, n_qubits: int, prob_1: float, prob_2: float, prob_ro: float): + """AerBacked with simple depolarising and SPAM noise model. + + :param n_qubits: The number of qubits available on the backend. + :type n_qubits: int + :param prob_1: The depolarising noise error rates on single qubit gates. + :type prob_1: float + :param prob_2: The depolarising noise error rates on two qubit gates. + :type prob_2: float + :param prob_ro: Error rates of symmetric uncorrelated SPAM errors. + :type prob_ro: float + """ + + super().__init__( + noise_model=self.depolarizing_noise_model(n_qubits, prob_1, prob_2, prob_ro) + ) + + def depolarizing_noise_model( + self, + n_qubits: int, + prob_1: float, + prob_2: float, + prob_ro: float, + ) -> noise.NoiseModel: + """Generates noise model, may be passed to `noise_model` parameter of + AerBacked. + + :param n_qubits: Number of qubits noise model applies to. + :type n_qubits: int + :param prob_1: The depolarising noise error rates on single qubit gates. + :type prob_1: float + :param prob_2: The depolarising noise error rates on two qubit gates. + :type prob_2: float + :param prob_ro: Error rates of symmetric uncorrelated SPAM errors. + :type prob_ro: float + :return: Noise model + :rtype: noise.NoiseModel + """ + + noise_model = noise.NoiseModel() + + error_2 = noise.depolarizing_error(prob_2, 2) + for edge in [[i, j] for i in range(n_qubits) for j in range(i)]: + noise_model.add_quantum_error(error_2, ["cx"], [edge[0], edge[1]]) + noise_model.add_quantum_error(error_2, ["cx"], [edge[1], edge[0]]) + + error_1 = noise.depolarizing_error(prob_1, 1) + for node in range(n_qubits): + noise_model.add_quantum_error(error_1, ["h", "rx", "rz"], [node]) + + probabilities = [[1 - prob_ro, prob_ro], [prob_ro, 1 - prob_ro]] + error_ro = noise.ReadoutError(probabilities) + for i in range(n_qubits): + noise_model.add_readout_error(error_ro, [i]) + + return noise_model diff --git a/qermit/postselection/__init__.py b/qermit/postselection/__init__.py new file mode 100644 index 00000000..322f7e66 --- /dev/null +++ b/qermit/postselection/__init__.py @@ -0,0 +1,2 @@ +from .postselect_manager import PostselectMgr # noqa:F401 +from .postselect_mitres import gen_postselect_mitres # noqa:F401 diff --git a/qermit/postselection/postselect_manager.py b/qermit/postselection/postselect_manager.py new file mode 100644 index 00000000..851bb931 --- /dev/null +++ b/qermit/postselection/postselect_manager.py @@ -0,0 +1,119 @@ +from collections import Counter +from pytket.backends.backendresult import BackendResult +from pytket.utils.outcomearray import OutcomeArray +from pytket.circuit import Bit +from typing import List, Tuple, Dict + + +class PostselectMgr: + """Class for tracking and applying post selection to results. + Includes other methods to analyse the results after post selection. + """ + + def __init__( + self, + compute_cbits: List[Bit], + postselect_cbits: List[Bit], + ): + """Initialisation method. + + :param compute_cbits: Bits in the circuit which are not affected + by post selection. + :type compute_cbits: List[Bit] + :param postselect_cbits: Bits on which the post selection is based. + :type postselect_cbits: List[Bit] + :raises Exception: Raised if a bit is in both compute_cbits + and postselect_cbits. + """ + + intersect = set(compute_cbits).intersection(set(postselect_cbits)) + if intersect: + raise Exception( + f"{intersect} are post select and compute qubits. " + + "They cannot be both." + ) + + self.compute_cbits: List[Bit] = compute_cbits + self.postselect_cbits: List[Bit] = postselect_cbits + + self.cbits: List[Bit] = compute_cbits + postselect_cbits + + def get_postselected_shot(self, shot: Tuple[int, ...]) -> Tuple[int, ...]: + "Removes postselection bits from shot." + return tuple( + [ + bit + for bit, reg in zip(shot, self.cbits) + if reg not in self.postselect_cbits + ] + ) + + def is_postselect_shot(self, shot: Tuple[int, ...]) -> bool: + "Determines if shot survives postselection" + + # TODO: It may be nice to generalise this so that other functions + # besides bit==0 can be used as a means of postselection. + return all( + bit == 0 + for bit, reg in zip(shot, self.cbits) + if reg in self.postselect_cbits + ) + + def dict_to_result(self, result_dict: Dict[Tuple[int, ...], int]) -> BackendResult: + """Convert dictionary to BackendResult. + + :param result_dict: Dictionary to convert. + :type result_dict: Dict[Tuple[int, ...], int] + :return: Corresponding BackendResult. + :rtype: BackendResult + """ + + # Special case where the dictionary is empty. Presently having + # an empty counter results in an error. + if not result_dict: + return BackendResult() + + return BackendResult( + counts=Counter( + { + OutcomeArray.from_readouts([key]): val + for key, val in result_dict.items() + } + ), + c_bits=self.compute_cbits, + ) + + def postselect_result(self, result: BackendResult) -> BackendResult: + """Transforms BackendResult to keep only shots which should be + post selected. + + :param result: Result to be modified. + :type result: BackendResult + :return: Postselected shots. + :rtype: BackendResult + """ + + return self.dict_to_result( + { + self.get_postselected_shot(shot): count + for shot, count in result.get_counts(cbits=self.cbits).items() + if self.is_postselect_shot(shot) + } + ) + + def merge_result(self, result: BackendResult) -> BackendResult: + """Transforms BackendResult so that postselection bits are + removed, but no shots are removed by postselection. + + :param result: Result to be transformed. + :type result: BackendResult + :return: Result with postselection bits removed. + :rtype: BackendResult + """ + + merge_dict: Dict[Tuple[int, ...], int] = {} + for shot, count in result.get_counts(cbits=self.cbits).items(): + postselected_shot = self.get_postselected_shot(shot) + merge_dict[postselected_shot] = merge_dict.get(postselected_shot, 0) + count + + return self.dict_to_result(merge_dict) diff --git a/qermit/postselection/postselect_mitres.py b/qermit/postselection/postselect_mitres.py new file mode 100644 index 00000000..1ab33eed --- /dev/null +++ b/qermit/postselection/postselect_mitres.py @@ -0,0 +1,101 @@ +from .postselect_manager import PostselectMgr +from qermit import CircuitShots, MitRes, MitTask, TaskGraph +from copy import deepcopy +from typing import List, Tuple +from pytket.backends.backendresult import BackendResult +from pytket.backends import Backend + + +def gen_postselect_task() -> MitTask: + """Generates task applying postselection to given results. + + :return: Task applying postselection to given results. + :rtype: MitTask + """ + + def task( + obj, + result_list: List[BackendResult], + postselect_mgr_list: List[PostselectMgr], + ) -> Tuple[List[BackendResult]]: + """Task applying postselection to given results. + + :param result_list: List od results to which postselection should + be applied. + :type result_list: List[BackendResult] + :param postselect_mgr_list: List of postselection managers to apply + to results. + :type postselect_mgr_list: List[PostselectMgr] + :return: List of results after postselection has been applied. + :rtype: Tuple[List[BackendResult]] + """ + + return ( + [ + postselect_mgr.postselect_result(result) + for result, postselect_mgr in zip(result_list, postselect_mgr_list) + ], + ) + + return MitTask( + _label="PostselectResults", + _n_in_wires=2, + _n_out_wires=1, + _method=task, + ) + + +def gen_postselect_mgr_gen_task(postselect_mgr: PostselectMgr) -> MitTask: + """Generates task applying the same post selection manager to all + circuits. + + :param postselect_mgr: Postselection manager to apply. + :type postselect_mgr: PostselectMgr + :return: Task applying the same post selection manager to all circuits. + :rtype: MitTask + """ + + def task( + obj, circ_shots_list: List[CircuitShots] + ) -> Tuple[List[CircuitShots], List[PostselectMgr]]: + """Task applying the same post selection manager to all circuits. + + :param circ_shots_list: List of circuits to which post selection is + applied. + :type circ_shots_list: List[CircuitShots] + :return: List od circuits and corresponding postselection managers. + :rtype: Tuple[List[CircuitShots], List[PostselectMgr]] + """ + + return (circ_shots_list, [postselect_mgr for _ in circ_shots_list]) + + return MitTask( + _label="ConstantNode", + _n_in_wires=1, + _n_out_wires=2, + _method=task, + ) + + +def gen_postselect_mitres( + backend: Backend, postselect_mgr: PostselectMgr, **kwargs +) -> MitRes: + """Generates MitRes running given circuit and applying postselection. + + :param backend: Backend on this circuits are run. + :type backend: Backend + :param postselect_mgr: Postselection manager. + :type postselect_mgr: PostselectMgr + :return: MitRes running given circuit and applying postselection. + :rtype: MitRes + """ + + _mitres = deepcopy( + kwargs.get("mitres", MitRes(backend, _label="PostselectionMitRes")) + ) + _taskgraph = TaskGraph().from_TaskGraph(_mitres) + _taskgraph.add_wire() + _taskgraph.prepend(gen_postselect_mgr_gen_task(postselect_mgr)) + _taskgraph.append(gen_postselect_task()) + + return MitRes(backend).from_TaskGraph(_taskgraph) diff --git a/qermit/probabilistic_error_cancellation/pec_learning_based.py b/qermit/probabilistic_error_cancellation/pec_learning_based.py index 268603dd..1dac4827 100644 --- a/qermit/probabilistic_error_cancellation/pec_learning_based.py +++ b/qermit/probabilistic_error_cancellation/pec_learning_based.py @@ -41,6 +41,7 @@ from pytket.pauli import QubitPauliString # type: ignore from pytket.predicates import CliffordCircuitPredicate # type: ignore +from pytket.unit_id import Qubit import re from typing import List, Tuple, Dict, cast, Union, Any @@ -66,7 +67,7 @@ def str_to_pauli_op(pauli_str: str) -> Op: "Y": Op.create(OpType.Y), "I": Op.create(OpType.noop), } - return switcher.get(pauli_str) + return switcher[pauli_str] def random_commuting_clifford( @@ -142,7 +143,7 @@ def random_commuting_clifford( new_qps_qbs.append(n_q_map[x]) qps_paulis.append(qps_dict[x]) - new_qps = QubitPauliString(new_qps_qbs, qps_paulis) + new_qps = QubitPauliString(cast(List[Qubit], new_qps_qbs), qps_paulis) place_with_map(rand_cliff_circ, n_q_map) @@ -177,7 +178,7 @@ def random_commuting_clifford( return rand_cliff_circ -def substitute_pauli(circ: Circuit, frame_name: str, pauli_pair: List[str]) -> Circuit: +def substitute_pauli(circ: Circuit, frame_name: str, pauli_pair: List[Op]) -> Circuit: """ Replace 2 qubit Pauli gate pair which surrounds Frame gate with a 2 qubit pauli gate and its inverse. @@ -185,8 +186,8 @@ def substitute_pauli(circ: Circuit, frame_name: str, pauli_pair: List[str]) -> C :type circ: Circuit :param frame_name: The opgroup of the Frame gate that the pauli gates will act either side of :type frame_name: str - :param pauli_pair: Two strings describing the 2 qubit Pauli gate - :type pauli_pair: List[str] + :param pauli_pair: Two Ops describing the 2 qubit Pauli gate + :type pauli_pair: List[Op] :return: A circuit, with the Pauli gates inserted either side of the given frame gate. :rtype: Circuit """ @@ -211,7 +212,7 @@ def substitute_pauli(circ: Circuit, frame_name: str, pauli_pair: List[str]) -> C def substitute_pauli_but_one( - circ: Circuit, to_replace_opgroup: str, pauli_pair: List[str] + circ: Circuit, to_replace_opgroup: str, pauli_pair: List[Op] ) -> Circuit: """Sets all Pauli gates to the identity, apart from those around the inputted Frame gate, described by its opgroup. @@ -221,8 +222,8 @@ def substitute_pauli_but_one( :param to_replace_opgroup: The opgroup of the frame gate who's corresponding Pauli gates should be replaced with the inputted gate. :type to_replace_opgroup: str - :param pauli_pair: Two strings describing the Pauli gate to be substituted in - :type pauli_pair: List[str] + :param pauli_pair: Two Ops describing the Pauli gate to be substituted in + :type pauli_pair: List[Op] :raises RuntimeError: Raised if the inputted circuit does not have a gate in the opgroup inputted. :return: The final circuit with the Pauli gates substituted in. :rtype: Circuit @@ -443,7 +444,6 @@ def task( all_obs_exp_index.add(obs_exp["experiment"]) for obs_exp_index in all_obs_exp_index: - # For each experiment index, create a list of the list structure information # of results corresponding to that experiment index. fixed_obs_exp_details = [ @@ -461,7 +461,6 @@ def task( fixed_obs_exp_results = [] for qps_index in all_qps_index: - # For each QubitPauliString index, create a list of the list structure information # of results corresponding to that QubitPauliString index. fixed_qps_details = [ @@ -473,7 +472,6 @@ def task( fixed_qps_results = [] for cliff_details in fixed_qps_details: - # For each Clifford circuit corresponding to a fixed experiment and # QuasiPauliString, gather the noisy results list structure information. fixed_cliff_details = [ @@ -485,7 +483,6 @@ def task( fixed_cliff_results = [] for noisy_details in fixed_cliff_details: - # For each noisy circuit corresponding to a fixed experiment, # QubitPauliString and Clifford circuit, gather the noisy ideal result pair. fixed_cliff_results.append( @@ -526,7 +523,7 @@ def learn_quasi_probs_task_gen(num_cliff_circ: int) -> MitTask: def task( obj, - results: List[List[List[Tuple[QubitPauliOperator]]]], + results: List[List[List[List[Tuple[QubitPauliOperator, QubitPauliOperator]]]]], ) -> Tuple[List[List[QuasiProbabilities]]]: """This implementation of learning base probabilistic error cancellation is based on the significant error approach of https://arxiv.org/abs/2005.07601 @@ -535,7 +532,7 @@ def task( expectation results for a fixed ObservableExperiment, QubitPauliString, clifford circuit, and Pauli noise. Each list level fixes consecutively an ObservableExperiment, QubitPauliString, and clifford circuit. - :type results: List[ List[List[Tuple[QubitPauliOperator]]] ] + :type results: List[List[List[List[Tuple[QubitPauliOperator, QubitPauliOperator]]]]] :return: List of quasi probabilities. The outer list corresponds to circuits, the second level list corresponds to Pauli strings, and the inner most list corresponds to quasi probabilities. @@ -543,12 +540,11 @@ def task( """ prob_list = [] - # qps_results is List[List[Tuple[QubitPauliOperator, QubitPauliOperator]]] + # qps_results is List[List[List[Tuple[QubitPauliOperator, QubitPauliOperator]]]] # each tuple is a noisy, noiseless pair of results for perturbed fixed Clifford circuit # each inner list is results for fixed clifford circuit # each outerlist is for a single Qubit Pauli String in experiment for qps_results in results: - qps_quasi_prob_list = [] # qps is List[List[Tuple[QubitPauliOperator, QubitPauliOperator]]] # containing all results for all fixed Clifford circuits @@ -797,13 +793,11 @@ def wrap_frame_gates(circ: Circuit) -> Circuit: framed_circ_command_list = [] for command in circ_command_list: - # Add command to new list if not a Frame gate. if "Computing" in command["opgroup"]: framed_circ_command_list.append(command.copy()) elif "Frame" in command["opgroup"]: - match_return = re.match(r"Frame (.*)", command["opgroup"]) if match_return is None: raise ValueError( @@ -926,10 +920,8 @@ def list_pauli_gates(circ: Circuit) -> List[Dict]: # the error acts on at most one Frame gate, it is enough to specify the error # and the Frame gate on which it acts. for opgroup in frame_opgroup_list: - for q1_pauli in ["X", "Y", "Z", "I"]: for q2_pauli in ["X", "Y", "Z", "I"]: - if (q1_pauli == "I") and (q2_pauli == "I"): continue @@ -973,7 +965,6 @@ def task( # For each circuit, create an equivalent circuit but on which one of the # possible errors occur. for experiment_num, experiment in enumerate(wire): - pauli_errors = list_pauli_gates(experiment.AnsatzCircuit.Circuit) for error_num, error in enumerate(pauli_errors): diff --git a/qermit/spam/full_spam_correction.py b/qermit/spam/full_spam_correction.py index a3e02718..ef35ac65 100644 --- a/qermit/spam/full_spam_correction.py +++ b/qermit/spam/full_spam_correction.py @@ -28,10 +28,11 @@ StateInfo, CorrectionMethod, ) +from pytket.unit_id import Node def gen_full_tomography_spam_circuits_task( - backend: Backend, shots: int, qubit_subsets: List[List[Qubit]] + backend: Backend, shots: int, qubit_subsets: List[List[Node]] ) -> MitTask: """Generate MitTask for calibration circuits according to the specified correlation and given backend. @@ -56,7 +57,7 @@ def task( # check correlations distance if ( obj.characterisation["FullCorrelatedSpamCorrection"].CorrelatedNodes - is qubit_subsets + == qubit_subsets ): return (wire, [], []) @@ -78,7 +79,7 @@ def task( def gen_full_tomography_spam_characterisation_task( - qubit_subsets: List[List[Qubit]], + qubit_subsets: List[List[Node]], ) -> MitTask: """ Uses results from device for characterisation circuits to characterise transition matrices diff --git a/qermit/spam/full_transition_tomography.py b/qermit/spam/full_transition_tomography.py index c5be2f84..27f071ac 100644 --- a/qermit/spam/full_transition_tomography.py +++ b/qermit/spam/full_transition_tomography.py @@ -26,6 +26,7 @@ from pytket.backends.backendresult import BackendResult from pytket.utils.outcomearray import OutcomeArray from enum import Enum +from pytket.unit_id import UnitID FullCorrelatedNoiseCharacterisation = namedtuple( "FullCorrelatedNoiseCharacterisation", @@ -86,8 +87,11 @@ def get_full_transition_tomography_circuits( should be processed without compilation. :rtype: List[Circuit] """ + def to_tuple(correlation_list: List[Node]) -> Tuple[Node, ...]: + return tuple(correlation_list) + subsets_matrix_map = OrderedDict.fromkeys( - sorted(map(tuple, correlations), key=len, reverse=True) + sorted(map(to_tuple, correlations), key=len, reverse=True) ) # ordered from largest to smallest via OrderedDict & sorted subset_dimensions = [len(subset) for subset in subsets_matrix_map] @@ -108,13 +112,14 @@ def get_full_transition_tomography_circuits( # set up CircBox of X gate for preparing basis states xcirc = Circuit(1).X(0) - xcirc = backend.get_compiled_circuit(xcirc) + xcirc = backend.get_compiled_circuit(xcirc, optimisation_level=0) FlattenRegisters().apply(xcirc) xbox = CircBox(xcirc) # need to be default register to add as box suitably n_qubits_pre_compile = process_circuit.n_qubits - process_circuit = backend.get_compiled_circuit(process_circuit) + # This needs to be optimisation level 0 to avoid using simplify initial + process_circuit = backend.get_compiled_circuit(process_circuit, optimisation_level=0) while process_circuit.n_qubits < n_qubits_pre_compile: process_circuit.add_qubit(Qubit("temp_q", process_circuit.n_qubits)) @@ -122,7 +127,8 @@ def get_full_transition_tomography_circuits( rename_map_pc = {} for index, qb in enumerate(process_circuit.qubits): rename_map_pc[qb] = Qubit(index) - process_circuit.rename_units(rename_map_pc) + process_circuit.rename_units(cast(Dict[UnitID, UnitID], rename_map_pc)) + pbox = CircBox(process_circuit) # set up base circuit for appending xbox to @@ -148,14 +154,14 @@ def get_full_transition_tomography_circuits( new_state_dicts[qubits] = major_state[:dim] # find only qubits that are expected to be in 1 state, add xbox to given qubits for flipped_qb in itertools.compress(qubits, major_state[:dim]): - state_circuit.add_circbox(xbox, [flipped_qb]) + state_circuit.add_circbox(xbox, [cast(UnitID, flipped_qb)]) # Decompose boxes, add barriers to preserve circuit, add measures - state_circuit.add_barrier(all_qubits) + state_circuit.add_barrier(cast(List[UnitID], all_qubits)) # add process circuit to measure - state_circuit.add_circbox(pbox, state_circuit.qubits) + state_circuit.add_circbox(pbox, cast(List[UnitID], state_circuit.qubits)) DecomposeBoxes().apply(state_circuit) - state_circuit.add_barrier(all_qubits) + state_circuit.add_barrier(cast(List[UnitID], all_qubits)) for q in measures: state_circuit.Measure(q, measures[q]) # add to returned types @@ -168,7 +174,7 @@ def get_full_transition_tomography_circuits( def calculate_correlation_matrices( results_list: List[BackendResult], states_info: List[StateInfo], - correlations: List[List[Qubit]], + correlations: List[List[Node]], ) -> FullCorrelatedNoiseCharacterisation: """Calculate the calibration matrices corresponding to some pure noise from the results of running calibration circuits. @@ -180,14 +186,17 @@ def calculate_correlation_matrices( representation and the qubit_to_bit_map for the corresponding state circuit. :type states_info: List[StateInfo] :param correlations: List of dict corresponding to each prepared basis state - :type correlations: List[List[Qubit]] + :type correlations: List[List[Node]] :return: Characterisation for pure noise given by process circuit :rtype: FullCorrelatedNoiseCharacterisation """ + def to_tuple(correlation_list: List[Node]) -> Tuple[Node, ...]: + return tuple(correlation_list) + subsets_matrix_map = OrderedDict.fromkeys( - sorted(map(tuple, correlations), key=len, reverse=True) + sorted(map(to_tuple, correlations), key=len, reverse=True) ) # ordered from largest to smallest via OrderedDict & sorted subset_dimensions = [len(subset) for subset in subsets_matrix_map] diff --git a/qermit/spectral_filtering/signal_filter.py b/qermit/spectral_filtering/signal_filter.py index eabe9202..8ddd7a97 100644 --- a/qermit/spectral_filtering/signal_filter.py +++ b/qermit/spectral_filtering/signal_filter.py @@ -1,4 +1,4 @@ -from abc import ABC +from abc import ABC, abstractmethod import numpy as np from copy import deepcopy from numpy.typing import NDArray @@ -7,6 +7,7 @@ class SignalFilter(ABC): """Base class for signal filtering.""" + @abstractmethod def filter(self, fft_result_val_grid: NDArray[np.float64]) -> NDArray[np.float64]: """Method transforming array of floats into filtered array of floats.""" diff --git a/qermit/spectral_filtering/spectral_filtering.py b/qermit/spectral_filtering/spectral_filtering.py index c2367c8c..cf1a5229 100644 --- a/qermit/spectral_filtering/spectral_filtering.py +++ b/qermit/spectral_filtering/spectral_filtering.py @@ -61,7 +61,6 @@ def task( interpolated_result_list = [] for result, points, obs_exp in zip(result_list, points_list, obs_exp_list): - # Extract point to be interpolated to. This is the symbol values # given in the initial experiment definition. interpolation_point = list( @@ -158,7 +157,6 @@ def task( fft_result_grid_list = [] for result_grid_dict in result_grid_dict_list: - # Perform the FFT on grids corresponding to each QubitPauliString. fft_result_grid_dict = dict() for qps, exp_val_grid in result_grid_dict.items(): @@ -197,7 +195,6 @@ def task( result_dict_list = [] for qpo_result_grid in result_grid_list: - # Take the QubitPauliOperator that is being measured from the 0 # coordinate element of the grid. zero_qpo_result_grid = qpo_result_grid[ @@ -419,7 +416,6 @@ def task( # ObservableExperiment in obs_exp_list obs_exp_grid_list = [] for obs_exp, sym_val_grid_list in zip(obs_exp_list, obs_exp_sym_val_grid_list): - # Initialise empty grid of ObservableExperiment obs_exp_grid = np.empty( sym_val_grid_list[0].shape, dtype=ObservableExperiment @@ -431,7 +427,6 @@ def task( [i for i in range(size)] for size in sym_val_grid_list[0].shape ] for grid_point in product(*grid_point_val_list): - # Generate dictionary mapping every symbol to it's value at # the given point in the grid. sym_map = { diff --git a/qermit/taskgraph/graphviz.py b/qermit/taskgraph/graphviz.py index 06231509..e950aed8 100644 --- a/qermit/taskgraph/graphviz.py +++ b/qermit/taskgraph/graphviz.py @@ -73,7 +73,6 @@ def _format_html_label(**kwargs): def _html_ports(ports: Iterable[str]) -> str: - return _HTML_PORTS_ROW_TEMPLATE.format( port_cells="".join( _HTML_PORT_TEMPLATE.format( diff --git a/qermit/taskgraph/mitex.py b/qermit/taskgraph/mitex.py index f86156c5..d24e0480 100644 --- a/qermit/taskgraph/mitex.py +++ b/qermit/taskgraph/mitex.py @@ -389,12 +389,15 @@ def __str__(self): def __call__( # type: ignore[override] self, experiment_wires: List[List[ObservableExperiment]], + cache: bool = False, characterisation: dict = {}, ) -> Tuple[List[QubitPauliOperator]]: return cast( Tuple[List[QubitPauliOperator]], super().run( - cast(List[Wire], experiment_wires), characterisation=characterisation + cast(List[Wire], experiment_wires), + cache=cache, + characterisation=characterisation, ), ) @@ -472,7 +475,10 @@ def add_wire(self): raise TypeError("MitEx.add_wire forbidden.") def run( # type: ignore[override] - self, mitex_wires: List[ObservableExperiment], characterisation: dict = {} + self, + mitex_wires: List[ObservableExperiment], + cache: bool = False, + characterisation: dict = {}, ) -> List[QubitPauliOperator]: """ Overloaded run method. @@ -495,7 +501,7 @@ def run( # type: ignore[override] :return: Observable experiment results as QubitPauliOperator, where values are expectations. :rtype: List[QubitPauliOperator] """ - return self([mitex_wires], characterisation)[0] + return self([mitex_wires], cache, characterisation)[0] def run_basic( self, mitex_wires: List[Tuple[CircuitShots, QubitPauliOperator]] diff --git a/qermit/taskgraph/mitres.py b/qermit/taskgraph/mitres.py index bd51fad3..be2c7108 100644 --- a/qermit/taskgraph/mitres.py +++ b/qermit/taskgraph/mitres.py @@ -29,6 +29,7 @@ from pytket.utils.outcomearray import OutcomeArray from pytket import Bit import numpy as np # type: ignore +from pytket import Circuit def backend_compile_circuit_shots_task_gen( @@ -88,7 +89,7 @@ def task(obj, circuit_wires: List[CircuitShots]) -> Tuple[List[ResultHandle]]: circs, shots = map(list, zip(*circuit_wires)) results = backend.process_circuits( - circs, n_shots=cast(Sequence[int], shots) + cast(List[Circuit], circs), n_shots=cast(Sequence[int], shots) ) return (results,) @@ -110,7 +111,6 @@ def backend_res_task_gen(backend: Backend) -> MitTask: """ def task(obj, handles: List[ResultHandle]) -> Tuple[List[BackendResult]]: - results = backend.get_results(handles) return (results,) @@ -216,11 +216,13 @@ def check_append_wires(self, task: Union[MitTask, "TaskGraph"]) -> bool: def __str__(self) -> str: return f"" - def __call__(self, circuits_wire: List[List[CircuitShots]], characterisation: dict = {}) -> Tuple[List[BackendResult]]: # type: ignore[override] + def __call__(self, circuits_wire: List[List[CircuitShots]], cache: bool = False, characterisation: dict = {}) -> Tuple[List[BackendResult]]: # type: ignore[override] return cast( Tuple[List[BackendResult]], super().run( - cast(List[Wire], circuits_wire), characterisation=characterisation + cast(List[Wire], circuits_wire), + cache=cache, + characterisation=characterisation, ), ) @@ -297,7 +299,7 @@ def add_wire(self): """ raise TypeError("MitRes.add_wire forbidden.") - def run(self, circuit_shots: List[CircuitShots], characterisation: dict = {}) -> List[BackendResult]: # type: ignore[override] + def run(self, circuit_shots: List[CircuitShots], cache: bool = False, characterisation: dict = {}) -> List[BackendResult]: # type: ignore[override] """ Overloaded run method from TaskGraph class to add type checking. A single experiment is defined by a Tuple containing a circuit to be run @@ -312,7 +314,7 @@ def run(self, circuit_shots: List[CircuitShots], characterisation: dict = {}) -> :return: A BackendResult object for each combination of circuit and shots. :rtype: List[BackendResult] """ - return self([circuit_shots], characterisation)[0] + return self([circuit_shots], cache, characterisation)[0] def split_shots_task_gen(max_shots: int) -> MitTask: diff --git a/qermit/taskgraph/mittask.py b/qermit/taskgraph/mittask.py index 0276e26a..ce5218ea 100644 --- a/qermit/taskgraph/mittask.py +++ b/qermit/taskgraph/mittask.py @@ -13,7 +13,7 @@ # limitations under the License. -from typing import List, Union, Callable, Dict +from typing import List, Union, Callable, Dict, Optional from collections import namedtuple from types import MethodType from enum import Enum @@ -82,7 +82,7 @@ def __init__( _label: str, _n_in_wires: int, _n_out_wires: int, - _method: Callable, + _method: Optional[Callable] = None, ): self._label = _label self._n_in_wires = _n_in_wires diff --git a/qermit/taskgraph/task_graph.py b/qermit/taskgraph/task_graph.py index ca85065c..cba7b941 100644 --- a/qermit/taskgraph/task_graph.py +++ b/qermit/taskgraph/task_graph.py @@ -357,7 +357,7 @@ def run( from the input vertex of the _task_graph. :type input_wires: List[Wire] :param cache: If True each Tasks output data is stored in an OrderedDict with the - Task.label_ attribute as its key. + Task._label attribute as its key. :type cache: bool diff --git a/qermit/taskgraph/utils.py b/qermit/taskgraph/utils.py index 5174ad91..8d16ba38 100644 --- a/qermit/taskgraph/utils.py +++ b/qermit/taskgraph/utils.py @@ -22,7 +22,7 @@ from pytket.backends.backendresult import BackendResult from copy import copy from sympy import Symbol # type: ignore -from typing import Iterable, Dict, Union, Tuple, List +from typing import Iterable, Dict, Union, Tuple, List, Optional from collections import OrderedDict from numpy import ndarray # type: ignore @@ -36,7 +36,7 @@ class SymbolsDict(object): symbols. """ - def __init__(self): + def __init__(self) -> None: """ Default constructor, creates an empty OrderedDict() object for future symbols to be added to. """ @@ -177,7 +177,7 @@ class MeasurementCircuit(object): for some Ansatz Circuit. """ - def __init__(self, symbolic_circuit: Circuit, symbols: SymbolsDict = None): + def __init__(self, symbolic_circuit: Circuit, symbols: Optional[SymbolsDict] = None): """ Stores information required to instantiate any MeasurementCircuit with parameterised symbols. @@ -187,7 +187,7 @@ def __init__(self, symbolic_circuit: Circuit, symbols: SymbolsDict = None): :type symbols: SymbolsDict """ self._symbolic_circuit: Circuit = symbolic_circuit - if symbols is None: + if not symbols: self._symbols: SymbolsDict = SymbolsDict.symbols_from_circuit( symbolic_circuit ) @@ -224,7 +224,7 @@ def get_parametric_circuit(self) -> Circuit: :rtype: Circuit """ _circuit = self._symbolic_circuit.copy() - _circuit.symbol_substitution(self._symbols._symbolic_map) + _circuit.symbol_substitution(self._symbols._symbolic_map) # type: ignore return _circuit @@ -255,7 +255,7 @@ def __init__(self, qubit_pauli_operator: QubitPauliOperator = QubitPauliOperator for k in self._qubit_pauli_operator._dict.keys(): self._qps_to_indices[k] = list() self._measurement_circuits: List[MeasurementCircuit] = list() - self._partitions: List[QubitPauliString] = list() + self._partitions: List[List[QubitPauliString]] = list() def from_ObservableTracker(to_copy: "ObservableTracker") -> "ObservableTracker": """ @@ -284,15 +284,15 @@ def __str__(self): def __repr__(self): return str(self) - def clear(self): + def clear(self) -> None: """ Erases all held information that is not the qubit pauli operator. """ - self._qps_to_indices = dict() + self._qps_to_indices.clear() for k in self._qubit_pauli_operator._dict.keys(): self._qps_to_indices[k] = list() - self._measurement_circuits: List[MeasurementCircuit] = list() - self._partitions: List[QubitPauliString] = list() + self._measurement_circuits.clear() + self._partitions.clear() def modify_coefficients( self, new_coefficients: List[Tuple[QubitPauliString, float]] diff --git a/qermit/zero_noise_extrapolation/zne.py b/qermit/zero_noise_extrapolation/zne.py index 457570cc..a63044ac 100644 --- a/qermit/zero_noise_extrapolation/zne.py +++ b/qermit/zero_noise_extrapolation/zne.py @@ -21,19 +21,21 @@ ObservableExperiment, TaskGraph, ) -from copy import copy +from pytket.unit_id import UnitID +from copy import copy, deepcopy from pytket.pauli import QubitPauliString # type: ignore from enum import Enum import numpy as np # type: ignore from scipy.optimize import curve_fit # type: ignore -from typing import List, Tuple, cast, Dict -from pytket import Circuit, OpType +from typing import List, Tuple, cast, Dict, Union +from pytket import Circuit, OpType, Qubit from pytket.predicates import CompilationUnit # type: ignore from pytket.utils import QubitPauliOperator import matplotlib.pyplot as plt # type: ignore from numpy.polynomial.polynomial import Polynomial # type: ignore from pytket.circuit import Node # type: ignore from math import isclose +from pytket.pauli import Pauli box_types = { @@ -56,6 +58,7 @@ class Folding(Enum): # TODO: circ does not appear as input in docs # TODO Generalise with 'partial folding' to allow for non integer noise scaling + @staticmethod def circuit(circ: Circuit, noise_scaling: int, **kwargs) -> Circuit: """Noise scaling by circuit folding. In this case the folded circuit is of the form :math:`CC^{-1}CC^{-1}...C` where :math:`C` is the original circuit. As such noise may be scaled by @@ -79,7 +82,7 @@ def circuit(circ: Circuit, noise_scaling: int, **kwargs) -> Circuit: folded_circ = circ.copy() for _ in range(noise_scaling // 2): # Add barrier between circuit and its inverse - folded_circ.add_barrier(folded_circ.qubits + folded_circ.bits) + folded_circ.add_barrier(cast(List[UnitID], folded_circ.qubits + folded_circ.bits)) # Add inverse circuit by iterating though commands and inverting them for gate in reversed(circ.get_commands()): @@ -91,7 +94,7 @@ def circuit(circ: Circuit, noise_scaling: int, **kwargs) -> Circuit: folded_circ.add_gate(gate.op.dagger, gate.args) # Add barrier between circuit and its inverse - folded_circ.add_barrier(folded_circ.qubits + folded_circ.bits) + folded_circ.add_barrier(cast(List[UnitID], folded_circ.qubits + folded_circ.bits)) # Add original circuit for gate in circ.get_commands(): @@ -104,6 +107,7 @@ def circuit(circ: Circuit, noise_scaling: int, **kwargs) -> Circuit: return folded_circ + @staticmethod def two_qubit_gate(circ: Circuit, noise_scaling: float, **kwargs) -> Circuit: """Noise scaling by folding 2 qubit gates. It is implicitly assumed that the noise on the 2 qubit gates dominate. Two qubit gates @@ -209,6 +213,7 @@ def two_qubit_gate(circ: Circuit, noise_scaling: float, **kwargs) -> Circuit: return folded_circuit + @staticmethod def gate(circ: Circuit, noise_scaling: float, **kwargs) -> Circuit: """Noise scaling by gate folding. In this case gates :math:`G` are replaced at random with :math:`GG^{-1}G` until the number of gates is sufficiently scaled. @@ -319,6 +324,7 @@ def gate(circ: Circuit, noise_scaling: float, **kwargs) -> Circuit: return folded_c + @staticmethod def odd_gate(circ: Circuit, noise_scaling: int, **kwargs) -> Circuit: """Noise scaling by gate folding. In this case odd gates :math:`G` are replaced :math:`GG^{-1}G` until the number of gates is sufficiently @@ -425,9 +431,8 @@ class Fit(Enum): """ # TODO Consider adding adaptive exponential extrapolation - def cube_root( - self, x: List[float], y: List[float], _show_fit: bool, *args - ) -> float: + @staticmethod + def cube_root(x: List[float], y: List[float], _show_fit: bool, *args) -> float: """Fit data to a cube root function. This is to say a function of the form :math:`a + b(x+c)^{1/3}`. :param x: Noise scaling values. @@ -455,8 +460,9 @@ def cube_root( return float(fit_to_zero) + @staticmethod def poly_exponential( - self, x: List[float], y: List[float], _show_fit: bool, deg: int + x: List[float], y: List[float], _show_fit: bool, deg: int ) -> float: """Fit data to a poly-exponential, which is to say a function of the form :math:`a+e^{z}`, where :math:`z` is a polynomial. @@ -517,9 +523,8 @@ def poly_exponential( return float(fit_to_zero) - def exponential( - self, x: List[float], y: List[float], _show_fit: bool, *args - ) -> float: + @staticmethod + def exponential(x: List[float], y: List[float], _show_fit: bool, *args) -> float: """Fit data to an exponential function. This is to say a function of the form :math:`a+e^{(b+x)}`. Note that this is a special case of the poly-exponential function. @@ -535,11 +540,10 @@ def exponential( # As the exponential function is a special case of the # poly-exponential function, it is called here - return Fit.poly_exponential(self, x, y, _show_fit, 1) + return Fit.poly_exponential(x, y, _show_fit, 1) - def polynomial( - self, x: List[float], y: List[float], _show_fit: bool, deg: int - ) -> float: + @staticmethod + def polynomial(x: List[float], y: List[float], _show_fit: bool, deg: int) -> float: """Fit data to a polynomial function. :param x: Noise scaling values. @@ -579,7 +583,8 @@ def polynomial( return float(fit_to_zero) - def linear(self, x: List[float], y: List[float], _show_fit: bool, *args) -> float: + @staticmethod + def linear(x: List[float], y: List[float], _show_fit: bool, *args) -> float: """Fit data to a linear function. This is to say a function of the form :math:`ax+b`. Note that this is a special case of the polynomial fitting function. @@ -594,11 +599,10 @@ def linear(self, x: List[float], y: List[float], _show_fit: bool, *args) -> floa """ # As this is a special case of a fit to a polynomial, the polynomial # fitting function is called here with a degree 1 - return Fit.polynomial(self, x, y, _show_fit, 1) + return Fit.polynomial(x, y, _show_fit, 1) - def richardson( - self, x: List[float], y: List[float], _show_fit: bool, *args - ) -> float: + @staticmethod + def richardson(x: List[float], y: List[float], _show_fit: bool, *args) -> float: """Use richardson extrapolation. This amounts to fitting to a polynomial of degree one less than the number of data points. @@ -613,7 +617,7 @@ def richardson( """ # As this is a special case of the polynomial fitting function, the polynomial fitting # function is called here with degree one less than the number of data points. - return Fit.polynomial(self, x, y, _show_fit, len(x) - 1) + return Fit.polynomial(x, y, _show_fit, len(x) - 1) def plot_fit( @@ -770,7 +774,7 @@ def task( QubitPauliOperator( { qpo_k: _fit_type( # type: ignore - obj, all_fold_vals, qpo_list_float[qpo_k], _show_fit, deg + all_fold_vals, qpo_list_float[qpo_k], _show_fit, deg ) for qpo_k in qpo_list_float } @@ -798,9 +802,9 @@ def copy_mitex_wire(wire: ObservableExperiment) -> ObservableExperiment: # Copy ansatz circuit new_ansatz_circuit = AnsatzCircuit( - Circuit=wire.AnsatzCircuit.Circuit.copy(), - Shots=copy(wire.AnsatzCircuit.Shots), - SymbolsDict=copy(wire.AnsatzCircuit.SymbolsDict), + Circuit=deepcopy(wire.AnsatzCircuit.Circuit), + Shots=deepcopy(wire.AnsatzCircuit.Shots), + SymbolsDict=deepcopy(wire.AnsatzCircuit.SymbolsDict), ) # copy qps and instantiate new measurement setup @@ -860,7 +864,10 @@ def task( ) -def qpo_node_relabel(qpo: QubitPauliOperator, node_map: Dict[Node, Node]): +def qpo_node_relabel( + qpo: QubitPauliOperator, + node_map: Dict[Union[UnitID, Qubit, Node], Union[UnitID, Qubit, Node]] +): """Relabel the nodes of qpo according to node_map :param qpo: Original qubit pauli operator @@ -878,7 +885,7 @@ def qpo_node_relabel(qpo: QubitPauliOperator, node_map: Dict[Node, Node]): new_qps_dict = {} for q in orig_qps_dict: new_qps_dict[node_map[q]] = orig_qps_dict[q] - new_qps = QubitPauliString(new_qps_dict) + new_qps = QubitPauliString(cast(Dict[Qubit, Pauli], new_qps_dict)) new_qpo_dict[new_qps] = orig_qpo_dict[orig_qps] return QubitPauliOperator(new_qpo_dict) @@ -899,7 +906,7 @@ def gen_initial_compilation_task( def task( obj, wire: List[ObservableExperiment] - ) -> Tuple[List[ObservableExperiment], List[Dict[Node, Node]]]: + ) -> Tuple[List[ObservableExperiment], List[Dict[UnitID, UnitID]]]: """Performs initial compilation before folding. This is to ensure minimal compilation after folding, as this could disrupt by how much the noise is increased. @@ -964,7 +971,9 @@ def gen_qubit_relabel_task() -> MitTask: """ def task( - obj, qpo_list: List[QubitPauliOperator], compilation_map_list: List[Dict[Node, Node]] + obj, + qpo_list: List[QubitPauliOperator], + compilation_map_list: List[Dict[Node, Node]], ) -> Tuple[List[QubitPauliOperator]]: """Use node map returned by compilation unit to undo the relabelling performed by gen_initial_compilation_task @@ -981,9 +990,8 @@ def task( new_qpo_list = [] for compilation_map, qpo in zip(compilation_map_list, qpo_list): - node_map = {value: key for key, value in compilation_map.items()} - new_qpo_list.append(qpo_node_relabel(qpo, node_map)) + new_qpo_list.append(qpo_node_relabel(qpo, cast(Dict[Union[UnitID, Qubit, Node], Union[UnitID, Qubit, Node]], node_map))) return (new_qpo_list,) @@ -1008,14 +1016,14 @@ def gen_ZNE_MitEx(backend: Backend, noise_scaling_list: List[float], **kwargs) - :return: MitEx object performing noise mitigation by ZNE. :rtype: MitEx """ - _experiment_mitres = copy( + _experiment_mitres = deepcopy( kwargs.get( "experiment_mitres", MitRes(backend), ) ) - _experiment_mitex = copy( + _experiment_mitex = deepcopy( kwargs.get( "experiment_mitex", MitEx(backend, _label="ExperimentMitex", mitres=_experiment_mitres), @@ -1035,18 +1043,7 @@ def gen_ZNE_MitEx(backend: Backend, noise_scaling_list: List[float], **kwargs) - for fold in noise_scaling_list: _label = str(fold) + "FoldMitEx" - _fold_mitres = copy( - kwargs.get( - "experiment_mitres", - MitRes(backend), - ) - ) - _fold_mitex = copy( - kwargs.get( - "experiment_mitex", - MitEx(backend, _label=_label, mitres=_fold_mitres), - ) - ) + _fold_mitex = deepcopy(_experiment_mitex) _fold_mitex._label = _label + _fold_mitex._label digital_folding_task = digital_folding_task_gen( backend, fold, _folding_type, _allow_approx_fold diff --git a/tests/leakage_gadget_test.py b/tests/leakage_gadget_test.py new file mode 100644 index 00000000..ed80c57a --- /dev/null +++ b/tests/leakage_gadget_test.py @@ -0,0 +1,78 @@ +# Copyright 2019-2023 Quantinuum +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from qermit.mock_backend import MockQuantinuumBackend +from pytket import Circuit +from qermit.taskgraph import gen_compiled_MitRes +from qermit import CircuitShots +from qermit.leakage_detection import get_leakage_detection_mitres +from qermit.leakage_detection.leakage_detection import gen_add_leakage_gadget_circuit_task +from pytket.extensions.quantinuum.backends.leakage_gadget import prune_shots_detected_as_leaky +from qermit.postselection.postselect_mitres import gen_postselect_task + + +def test_leakage_gadget() -> None: + + backend = MockQuantinuumBackend() + circuit = Circuit(2).H(0).measure_all() + compiled_mitres = gen_compiled_MitRes( + backend=backend, + optimisation_level=0, + ) + leakage_gadget_mitres = get_leakage_detection_mitres( + backend=backend, + mitres=compiled_mitres + ) + n_shots = 50 + result_list = leakage_gadget_mitres.run( + [CircuitShots(Circuit=circuit, Shots=n_shots)] + ) + counts = result_list[0].get_counts() + assert all(shot in list(counts.keys()) for shot in [(0, 0), (1, 0)]) + assert sum(val for val in counts.values()) <= n_shots + + +def test_compare_with_prune() -> None: + # A test to check for updates to prune that we should know about. + + circuit_0 = Circuit(2).measure_all() + circuit_1 = Circuit(2).Rz(0.3, 0).measure_all() + circuit_shot_0 = CircuitShots(Circuit=circuit_0, Shots=10) + circuit_shot_1 = CircuitShots(Circuit=circuit_1, Shots=20) + + backend = MockQuantinuumBackend() + + generation_task = gen_add_leakage_gadget_circuit_task(backend=backend) + postselection_task = gen_postselect_task() + + detection_circuit_shots_list, postselect_mgr_list = generation_task( + ([circuit_shot_0, circuit_shot_1], ) + ) + result_list = [ + backend.run_circuit( + circuit=backend.get_compiled_circuit( + circuit=detection_circuit_shots.Circuit, + optimisation_level=0 + ), + n_shots=detection_circuit_shots.Shots, + ) for detection_circuit_shots in detection_circuit_shots_list + ] + + qermit_result_list = postselection_task( + (result_list, postselect_mgr_list, ) + ) + pytket_result_list = [ + prune_shots_detected_as_leaky(result) for result in result_list + ] + assert qermit_result_list[0] == pytket_result_list diff --git a/tests/mitex_test.py b/tests/mitex_test.py index f3f5c634..53375de3 100644 --- a/tests/mitex_test.py +++ b/tests/mitex_test.py @@ -19,6 +19,7 @@ ObservableTracker, CircuitShots, AnsatzCircuit, + ObservableExperiment, ) from qermit.taskgraph.mitex import ( # type: ignore filter_observable_tracker_task_gen, @@ -34,6 +35,42 @@ from pytket.extensions.qiskit import AerBackend # type: ignore +def test_mitex_cache(): + + circuit = Circuit(1).X(0) + backend = AerBackend() + mitex = MitEx(backend=backend) + mitex.decompose_TaskGraph_nodes() + + ansatz = AnsatzCircuit( + Circuit=circuit, + Shots=100000, + SymbolsDict=SymbolsDict() + ) + qubits = circuit.qubits + qps = QubitPauliString( + qubits=qubits, + paulis=[Pauli.Z for _ in qubits], + ) + qpo = QubitPauliOperator({qps: 1}) + obs = ObservableTracker(qubit_pauli_operator=qpo) + obs_exp = ObservableExperiment(AnsatzCircuit=ansatz, ObservableTracker=obs) + + mitex.run( + mitex_wires=[obs_exp], cache=True + ) + cache = mitex.get_cache() + assert list(cache.keys()) == [ + 'FilterObservableTracker', + 'CollateExperimentCircuits', + 'MitResCompileCircuitShots', + 'MitResCircuitsToHandles', + 'MitResHandlesToResults', + 'SplitResults', + 'GenerateExpectations', + ] + + def gen_test_wire_objs(): sym_0 = fresh_symbol("alpha") sym_1 = fresh_symbol("beta") diff --git a/tests/pec_test.py b/tests/pec_test.py index 4ceae18a..f8a58d2b 100644 --- a/tests/pec_test.py +++ b/tests/pec_test.py @@ -51,7 +51,7 @@ def test_no_qubit_relabel(): noiseless_backend = AerBackend() lagos_backend = IBMQEmulatorBackend( - "ibm_lagos", hub="partner-cqc", group="internal", project="default" + "ibm_lagos", instance='partner-cqc/internal/default' ) pec_mitex = gen_PEC_learning_based_MitEx( device_backend=lagos_backend, simulator_backend=noiseless_backend diff --git a/tests/postselection_test.py b/tests/postselection_test.py new file mode 100644 index 00000000..49f70684 --- /dev/null +++ b/tests/postselection_test.py @@ -0,0 +1,58 @@ +from qermit.postselection import PostselectMgr, gen_postselect_mitres +from pytket.circuit import Bit +from collections import Counter +from pytket.backends.backendresult import BackendResult +from pytket.utils.outcomearray import OutcomeArray +from pytket.extensions.qiskit import AerBackend +from qermit import CircuitShots +from pytket import Circuit + + +def test_postselect_manager() -> None: + + compute_cbits = [Bit(name='A', index=0), Bit(name='C', index=0)] + postselect_cbits = [Bit(name='B', index=0), Bit(name='A', index=1)] + + count_mgr = PostselectMgr( + compute_cbits=compute_cbits, + postselect_cbits=postselect_cbits, + ) + + counts = { + (0, 0, 0, 0): 100, + (0, 1, 0, 0): 100, + (0, 0, 0, 1): 100, + (0, 1, 0, 1): 100, + (1, 0, 0, 0): 100, + (1, 1, 0, 0): 100, + } + + result = BackendResult( + counts=Counter( + { + OutcomeArray.from_readouts([key]): val + for key, val in counts.items() + } + ), + c_bits=[Bit(name='A', index=0), Bit(name='A', index=1), Bit(name='B', index=0), Bit(name='C', index=0)], + ) + + assert count_mgr.postselect_result(result=result).get_counts() == Counter({(0, 0): 100, (0, 1): 100, (1, 0): 100}) + assert count_mgr.merge_result(result=result).get_counts() == Counter({(0, 0): 200, (0, 1): 200, (1, 0): 200}) + + +def test_postselect_mitres() -> None: + + backend = AerBackend() + circuit = Circuit(2).H(0).measure_all() + cbits = circuit.bits + postselect_mgr = PostselectMgr( + compute_cbits=[cbits[1]], + postselect_cbits=[cbits[0]], + ) + postselect_mitres = gen_postselect_mitres( + backend=backend, + postselect_mgr=postselect_mgr + ) + result_list = postselect_mitres.run([CircuitShots(Circuit=circuit, Shots=50)]) + assert list(result_list[0].get_counts().keys()) == [(0,)] diff --git a/tests/spectral_filtering_test.py b/tests/spectral_filtering_test.py index 3f8d9ed3..64cc27cd 100644 --- a/tests/spectral_filtering_test.py +++ b/tests/spectral_filtering_test.py @@ -1,3 +1,17 @@ +# Copyright 2019-2023 Quantinuum +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from qermit.spectral_filtering.spectral_filtering import ( gen_result_extraction_task, gen_wire_copy_task, diff --git a/tests/test_requirements.txt b/tests/test_requirements.txt index f9d93b6b..1b3dcea9 100644 --- a/tests/test_requirements.txt +++ b/tests/test_requirements.txt @@ -1,4 +1,5 @@ -pytket-qiskit~=0.23 +pytket-qiskit +qiskit-ibmq-provider pytest pytest-cov flake8 diff --git a/tests/zne_test.py b/tests/zne_test.py index 18eeafa0..7ab931af 100644 --- a/tests/zne_test.py +++ b/tests/zne_test.py @@ -44,6 +44,7 @@ import pytest from pytket.circuit import Node # type: ignore from qermit.mock_backend import MockQuantinuumBackend # type: ignore +from qermit.taskgraph import gen_MeasurementReduction_MitEx n_qubits = 2 @@ -69,12 +70,112 @@ REASON = "IBMQ account not configured" +def get_string_operator(meas_qubits, string): + # A small utility method for generating observables with expectation + # corresponding to bit string probabilities. + + identity_pauli_list = [Pauli.I for _ in meas_qubits] + + identity_qps = QubitPauliString( + qubits=meas_qubits, + paulis=identity_pauli_list, + ) + qpo = QubitPauliOperator({identity_qps: 1}) + + for i in range(len(meas_qubits)): + temp_pauli_list = identity_pauli_list.copy() + temp_pauli_list[i] = Pauli.Z + temp_qps = QubitPauliString( + qubits=meas_qubits, + paulis=temp_pauli_list, + ) + if string[i] == 0: + qpo *= QubitPauliOperator({temp_qps: 0.5, identity_qps: 0.5}) + elif string[i] == 1: + qpo *= QubitPauliOperator({temp_qps: -0.5, identity_qps: 0.5}) + else: + raise Exception(f"{string} is not a binary string.") + + return qpo + + +@pytest.mark.high_compute +def test_measurement_reduction_integration(): + + tol = 0.01 + + # A bell state + circuit = Circuit() + qubit_0 = Qubit(name='my_qubit', index=0) + qubit_1 = Qubit(name='my_qubit', index=1) + circuit.add_qubit(qubit_0) + circuit.add_qubit(qubit_1) + circuit.H(qubit_0).CX(qubit_0, qubit_1) + meas_qubits = [qubit_0, qubit_1] + + backend = AerBackend() + reduction_mitex = gen_MeasurementReduction_MitEx(backend=backend) + + ansatz = AnsatzCircuit( + Circuit=circuit, + Shots=1000000, + SymbolsDict=SymbolsDict() + ) + + qpo = get_string_operator(meas_qubits, [0, 0]) + obs = ObservableTracker(qubit_pauli_operator=qpo) + obs_exp = ObservableExperiment(AnsatzCircuit=ansatz, ObservableTracker=obs) + result = reduction_mitex.run( + mitex_wires=[obs_exp] + ) + # The probability of measuring 00 is 0.5 + assert abs(sum(result[0]._dict.values()) - 0.5) < tol + + qpo = get_string_operator(meas_qubits, [0, 1]) + obs = ObservableTracker(qubit_pauli_operator=qpo) + obs_exp = ObservableExperiment(AnsatzCircuit=ansatz, ObservableTracker=obs) + result = reduction_mitex.run( + mitex_wires=[obs_exp] + ) + # The probability of measuring 01 is 0 + assert abs(sum(result[0]._dict.values())) < tol + + folding_type = Folding.two_qubit_gate + fit_type = Fit.linear + noise_scaling_list = [1.5, 2, 2.5, 3, 3.5] + zne_mitex = gen_ZNE_MitEx( + backend=backend, + experiment_mitex=reduction_mitex, + noise_scaling_list=noise_scaling_list, + folding_type=folding_type, + fit_type=fit_type, + ) + + qpo = get_string_operator(meas_qubits, [1, 0]) + obs = ObservableTracker(qubit_pauli_operator=qpo) + obs_exp = ObservableExperiment(AnsatzCircuit=ansatz, ObservableTracker=obs) + result = zne_mitex.run( + mitex_wires=[obs_exp] + ) + # The probability of measuring 10 is 0 + assert abs(sum(result[0]._dict.values())) < tol + + qpo = get_string_operator(meas_qubits, [1, 1]) + obs = ObservableTracker(qubit_pauli_operator=qpo) + obs_exp = ObservableExperiment(AnsatzCircuit=ansatz, ObservableTracker=obs) + result = zne_mitex.run( + mitex_wires=[obs_exp] + ) + # The probability of measuring 11 is 0.5 + assert abs(sum(result[0]._dict.values()) - 0.5) < tol + + @pytest.mark.skipif(skip_remote_tests, reason=REASON) @pytest.mark.high_compute def test_no_qubit_relabel(): lagos_backend = IBMQEmulatorBackend( - "ibm_lagos", hub="partner-cqc", group="internal", project="default" + "ibm_lagos", instance='partner-cqc/internal/default' ) zne_mitex = gen_ZNE_MitEx(backend=lagos_backend, noise_scaling_list=[3, 5, 7])