iqm-benchmarks 1.9__tar.gz → 1.11__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of iqm-benchmarks might be problematic. Click here for more details.

Files changed (84) hide show
  1. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/.github/workflows/publish.yml +33 -1
  2. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/.gitignore +2 -0
  3. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/CHANGELOG.rst +8 -0
  4. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/PKG-INFO +23 -13
  5. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/README.md +9 -3
  6. iqm_benchmarks-1.11/docs/API.rst +9 -0
  7. iqm_benchmarks-1.11/docs/Makefile +20 -0
  8. iqm_benchmarks-1.11/docs/_static/images/favicon.ico +0 -0
  9. iqm_benchmarks-1.11/docs/_templates/autosummary-class-template.rst +30 -0
  10. iqm_benchmarks-1.11/docs/_templates/autosummary-module-template.rst +75 -0
  11. iqm_benchmarks-1.11/docs/changelog.rst +2 -0
  12. iqm_benchmarks-1.11/docs/conf.py +169 -0
  13. iqm_benchmarks-1.11/docs/index.rst +32 -0
  14. iqm_benchmarks-1.11/docs/license.rst +8 -0
  15. iqm_benchmarks-1.11/docs/readme.md +2 -0
  16. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/pyproject.toml +14 -9
  17. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/benchmark_definition.py +1 -0
  18. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/compressive_gst/compressive_gst.py +1 -0
  19. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/entanglement/ghz.py +5 -3
  20. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm_benchmarks.egg-info/PKG-INFO +23 -13
  21. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm_benchmarks.egg-info/SOURCES.txt +10 -0
  22. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm_benchmarks.egg-info/requires.txt +14 -9
  23. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/tox.ini +13 -0
  24. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/.github/workflows/main.yml +0 -0
  25. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/.github/workflows/tag_and_release.yml +0 -0
  26. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/LICENSE +0 -0
  27. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/benchmark_runner.py +0 -0
  28. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/examples/example_clifford_rb.ipynb +0 -0
  29. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/examples/example_clops.ipynb +0 -0
  30. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/examples/example_experiment_all.ipynb +0 -0
  31. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/examples/example_ghz.ipynb +0 -0
  32. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/examples/example_gst.ipynb +0 -0
  33. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/examples/example_interleaved_rb.ipynb +0 -0
  34. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/examples/example_mirror_rb.ipynb +0 -0
  35. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/examples/example_qscore.ipynb +0 -0
  36. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/examples/example_quantum_volume.ipynb +0 -0
  37. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/examples/generate_2qubit_cliffords.ipynb +0 -0
  38. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/examples/how_to_make_your_own_benchmark.ipynb +0 -0
  39. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/scheduled_experiments/adonis/__init__.py +0 -0
  40. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/scheduled_experiments/adonis/weekly.py +0 -0
  41. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/setup.cfg +0 -0
  42. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/__init__.py +0 -0
  43. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/benchmark.py +0 -0
  44. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/benchmark_experiment.py +0 -0
  45. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/compressive_gst/__init__.py +0 -0
  46. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/compressive_gst/gst_analysis.py +0 -0
  47. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/entanglement/__init__.py +0 -0
  48. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/logging_config.py +0 -0
  49. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/optimization/__init__.py +0 -0
  50. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/optimization/qscore.py +0 -0
  51. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/quantum_volume/__init__.py +0 -0
  52. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/quantum_volume/clops.py +0 -0
  53. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/quantum_volume/quantum_volume.py +0 -0
  54. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/randomized_benchmarking/__init__.py +0 -0
  55. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/randomized_benchmarking/clifford_1q.pkl +0 -0
  56. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/randomized_benchmarking/clifford_2q.pkl +0 -0
  57. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/randomized_benchmarking/clifford_rb/__init__.py +0 -0
  58. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/randomized_benchmarking/clifford_rb/clifford_rb.py +0 -0
  59. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/randomized_benchmarking/interleaved_rb/__init__.py +0 -0
  60. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/randomized_benchmarking/interleaved_rb/interleaved_rb.py +0 -0
  61. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/randomized_benchmarking/mirror_rb/__init__.py +0 -0
  62. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/randomized_benchmarking/mirror_rb/mirror_rb.py +0 -0
  63. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/randomized_benchmarking/multi_lmfit.py +0 -0
  64. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/randomized_benchmarking/randomized_benchmarking_common.py +0 -0
  65. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/readout_mitigation.py +0 -0
  66. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm/benchmarks/utils.py +0 -0
  67. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm_benchmarks.egg-info/dependency_links.txt +0 -0
  68. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/iqm_benchmarks.egg-info/top_level.txt +0 -0
  69. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/mGST/LICENSE +0 -0
  70. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/mGST/README.md +0 -0
  71. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/mGST/additional_fns.py +0 -0
  72. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/mGST/algorithm.py +0 -0
  73. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/mGST/compatibility.py +0 -0
  74. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/mGST/low_level_jit.py +0 -0
  75. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/mGST/optimization.py +0 -0
  76. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/mGST/qiskit_interface.py +0 -0
  77. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/mGST/reporting/figure_gen.py +0 -0
  78. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/src/mGST/reporting/reporting.py +0 -0
  79. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/tag-from-pipeline.sh +0 -0
  80. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/tests/test_ghz.py +0 -0
  81. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/tests/test_gst.py +0 -0
  82. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/tests/test_qscore.py +0 -0
  83. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/tests/test_qv.py +0 -0
  84. {iqm_benchmarks-1.9 → iqm_benchmarks-1.11}/tests/test_rb.py +0 -0
@@ -46,4 +46,36 @@ jobs:
46
46
  - name: Publish distribution packages to PyPI
47
47
  uses: pypa/gh-action-pypi-publish@release/v1
48
48
  with:
49
- attestations: false
49
+ attestations: false
50
+
51
+ publish_docs:
52
+ runs-on: ubuntu-latest
53
+
54
+ steps:
55
+ - uses: actions/checkout@v4
56
+ with:
57
+ fetch-depth: 0
58
+ - name: Setup Python
59
+ uses: actions/setup-python@v5
60
+ with:
61
+ python-version: '3.11'
62
+ - name: Checkout latest tagged commit
63
+ run: |
64
+ git checkout $(git describe --tags --abbrev=0)
65
+ - name: Install dependencies
66
+ run: |
67
+ python -m pip install --upgrade pip
68
+ pip install -e ".[develop]"
69
+ sudo apt-get install graphviz
70
+ - name: Build docs
71
+ run: |
72
+ tox -e docs
73
+ touch build/sphinx/html/.nojekyll # allow underscores in URL path
74
+ # remove unnecessary build files
75
+ sudo rm -rf build/sphinx/html/.doctrees
76
+ - name: Publish to gh-pages
77
+ uses: JamesIves/github-pages-deploy-action@4.1.4
78
+ with:
79
+ branch: gh-pages
80
+ folder: build/sphinx/html
81
+ force: false
@@ -20,6 +20,8 @@ __pycache__/
20
20
  # Build and docs folder/files
21
21
  /build/
22
22
  /dist/
23
+ /sdist/
24
+ /docs/api/
23
25
  version.txt
24
26
 
25
27
  # OS generated files
@@ -2,6 +2,14 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ Version 1.11
6
+ ===========
7
+ * Relaxes dependencies to allow for ranges.
8
+
9
+ Version 1.10
10
+ ===========
11
+ * Added API docs building and publishing.
12
+
5
13
  Version 1.9
6
14
  ===========
7
15
  * Fixed bug (overwriting observations) in Quantum Volume.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-benchmarks
3
- Version: 1.9
3
+ Version: 1.11
4
4
  Summary: A package for implementation of Quantum Characterization, Verification and Validation (QCVV) techniques on IQM's hardware at gate level abstraction
5
5
  Author-email: IQM Finland Oy <developers@meetiqm.com>, Aniket Rath <aniket.rath@meetiqm.com>, Jami Rönkkö <jami@meetiqm.com>, Pedro Figueroa Romero <pedro.romero@meetiqm.com>, Vicente Pina Canelles <vicente.pina@meetiqm.com>, Raphael Brieger <raphael.brieger@meetiqm.com>, Stefan Seegerer <stefan.seegerer@meetiqm.com>
6
6
  Project-URL: Homepage, https://github.com/iqm-finland/iqm-benchmarks
@@ -13,17 +13,17 @@ Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
14
  Requires-Dist: lmfit>=1.2
15
15
  Requires-Dist: matplotlib<4,>=3.6.3
16
- Requires-Dist: more-itertools==10.1.0
16
+ Requires-Dist: more-itertools<11.0.0,>=10.1.0
17
17
  Requires-Dist: mthree<2.7,>=2.6
18
- Requires-Dist: networkx==3.3
18
+ Requires-Dist: networkx<4.0,>=3.3
19
19
  Requires-Dist: numpy<2.0,>=1.25.2
20
- Requires-Dist: qiskit>=1.0
21
- Requires-Dist: qiskit-iqm>=15.1
22
- Requires-Dist: scikit-optimize==0.10.2
23
- Requires-Dist: tabulate==0.9.0
24
- Requires-Dist: uncertainties==3.2.2
25
- Requires-Dist: pycurl==7.45.3
26
- Requires-Dist: xarray==2024.6.0
20
+ Requires-Dist: qiskit<2.0,>=1.0
21
+ Requires-Dist: qiskit-iqm<16.0,>=15.1
22
+ Requires-Dist: scikit-optimize<0.11.0,>=0.10.2
23
+ Requires-Dist: tabulate<1.0.0,>=0.9.0
24
+ Requires-Dist: uncertainties<3.3.0,>=3.2.2
25
+ Requires-Dist: pycurl<8.0,>=7.45.3
26
+ Requires-Dist: xarray<2025.0.0,>=2024.6.0
27
27
  Requires-Dist: types-pycurl
28
28
  Provides-Extra: develop
29
29
  Requires-Dist: tox==4.16.0; extra == "develop"
@@ -45,6 +45,10 @@ Requires-Dist: pytest-cov==4.1.0; extra == "test"
45
45
  Requires-Dist: pytest-isort==3.1.0; extra == "test"
46
46
  Requires-Dist: pytest-mypy==0.10.3; extra == "test"
47
47
  Requires-Dist: pytest-pylint==0.21.0; extra == "test"
48
+ Provides-Extra: docs
49
+ Requires-Dist: sphinx==7.2.6; extra == "docs"
50
+ Requires-Dist: sphinx-book-theme==1.1.2; extra == "docs"
51
+ Requires-Dist: myst-parser<5,>=4.0.0; extra == "docs"
48
52
 
49
53
  # IQM Benchmarks
50
54
 
@@ -52,7 +56,7 @@ IQM Benchmarks is a suite of Quantum Characterization, Verification, and Validat
52
56
 
53
57
 
54
58
  Below is a list of the benchmarks currently available in the suite:
55
- * Gates / Layers:
59
+ * Gates / Layers:
56
60
  - Standard Clifford Randomized Benchmarking [[Phys. Rev. A 85, 042311](https://journals.aps.org/pra/abstract/10.1103/PhysRevA.85.042311) (2012)]
57
61
  - Interleaved Randomized Benchmarking [[Phys. Rev. Lett. 109, 080505](https://doi.org/10.1103/PhysRevLett.109.080505) (2012)]
58
62
  - Compressive Gate Set Tomography [[PRX Quantum 4, 010325](https://journals.aps.org/prxquantum/abstract/10.1103/PRXQuantum.4.010325) (2023)]
@@ -60,9 +64,9 @@ Below is a list of the benchmarks currently available in the suite:
60
64
  * Holistic:
61
65
  - Quantum Volume [[Phys. Rev. A 100, 032328](https://doi.org/10.1103/PhysRevA.100.032328) (2019)]
62
66
  - CLOPS [[arXiv:2110.14108 [quant-ph]](https://arxiv.org/abs/2110.14108) (2021)]
63
- * Entanglement:
67
+ * Entanglement:
64
68
  - GHZ State Fidelity [[arXiv:0712.0921 [quant-ph]](https://arxiv.org/abs/0712.0921) (2007)]
65
- * Optimization:
69
+ * Optimization:
66
70
  - Q-Score [[IEEE Trans. Quantum Eng., 2](https://doi.org/10.1109/TQE.2021.3090207) (2021)]
67
71
 
68
72
  The project is split into different benchmarks, all sharing the `Benchmark` class or the legacy `BenchmarkBase` class. Each individual benchmark takes as an argument their own `BenchmarkConfigurationBase` class. All the (legacy) benchmarks executed at once are wrapped by the `BenchmarkExperiment` class, which handles dependencies among the benchmarks, storing the results, producing the plots...
@@ -104,6 +108,12 @@ To run the tests, you can use the following command:
104
108
  tox -e test
105
109
  ```
106
110
 
111
+ To build the API documentation as HTML:
112
+
113
+ ```bash
114
+ tox -e docs
115
+ ```
116
+
107
117
  ## Characterize Physical Hardware
108
118
 
109
119
  The IQM Benchmarks suite is designed to be used with real quantum hardware. To use the suite, you will need to have access to a quantum computer. The suite is designed to work with both IQM Resonance (IQM's quantum cloud service) and on-prem devices, but can be easily adapted to work with other quantum computing platforms.
@@ -4,7 +4,7 @@ IQM Benchmarks is a suite of Quantum Characterization, Verification, and Validat
4
4
 
5
5
 
6
6
  Below is a list of the benchmarks currently available in the suite:
7
- * Gates / Layers:
7
+ * Gates / Layers:
8
8
  - Standard Clifford Randomized Benchmarking [[Phys. Rev. A 85, 042311](https://journals.aps.org/pra/abstract/10.1103/PhysRevA.85.042311) (2012)]
9
9
  - Interleaved Randomized Benchmarking [[Phys. Rev. Lett. 109, 080505](https://doi.org/10.1103/PhysRevLett.109.080505) (2012)]
10
10
  - Compressive Gate Set Tomography [[PRX Quantum 4, 010325](https://journals.aps.org/prxquantum/abstract/10.1103/PRXQuantum.4.010325) (2023)]
@@ -12,9 +12,9 @@ Below is a list of the benchmarks currently available in the suite:
12
12
  * Holistic:
13
13
  - Quantum Volume [[Phys. Rev. A 100, 032328](https://doi.org/10.1103/PhysRevA.100.032328) (2019)]
14
14
  - CLOPS [[arXiv:2110.14108 [quant-ph]](https://arxiv.org/abs/2110.14108) (2021)]
15
- * Entanglement:
15
+ * Entanglement:
16
16
  - GHZ State Fidelity [[arXiv:0712.0921 [quant-ph]](https://arxiv.org/abs/0712.0921) (2007)]
17
- * Optimization:
17
+ * Optimization:
18
18
  - Q-Score [[IEEE Trans. Quantum Eng., 2](https://doi.org/10.1109/TQE.2021.3090207) (2021)]
19
19
 
20
20
  The project is split into different benchmarks, all sharing the `Benchmark` class or the legacy `BenchmarkBase` class. Each individual benchmark takes as an argument their own `BenchmarkConfigurationBase` class. All the (legacy) benchmarks executed at once are wrapped by the `BenchmarkExperiment` class, which handles dependencies among the benchmarks, storing the results, producing the plots...
@@ -56,6 +56,12 @@ To run the tests, you can use the following command:
56
56
  tox -e test
57
57
  ```
58
58
 
59
+ To build the API documentation as HTML:
60
+
61
+ ```bash
62
+ tox -e docs
63
+ ```
64
+
59
65
  ## Characterize Physical Hardware
60
66
 
61
67
  The IQM Benchmarks suite is designed to be used with real quantum hardware. To use the suite, you will need to have access to a quantum computer. The suite is designed to work with both IQM Resonance (IQM's quantum cloud service) and on-prem devices, but can be easily adapted to work with other quantum computing platforms.
@@ -0,0 +1,9 @@
1
+ API Reference
2
+ =============
3
+
4
+ .. autosummary::
5
+ :toctree: api
6
+ :template: autosummary-module-template.rst
7
+ :recursive:
8
+
9
+ iqm.benchmarks
@@ -0,0 +1,20 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = .
9
+ BUILDDIR = ../build/sphinx/
10
+
11
+ # Put it first so that "make" without argument is like "make help".
12
+ help:
13
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
+
15
+ .PHONY: help Makefile
16
+
17
+ # Catch-all target: route all unknown targets to Sphinx using the new
18
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
+ %: Makefile
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,30 @@
1
+ {{ fullname | escape | underline}}
2
+
3
+ .. currentmodule:: {{ module }}
4
+
5
+ .. autoclass:: {{ objname }}
6
+ :members:
7
+ :show-inheritance:
8
+
9
+ {% block attributes %}
10
+ {% if attributes %}
11
+ .. rubric:: {{ _('Attributes') }}
12
+
13
+ .. autosummary::
14
+ {% for item in attributes if item not in inherited_members %}
15
+ ~{{ name }}.{{ item }}
16
+ {%- endfor %}
17
+ {% endif %}
18
+ {% endblock %}
19
+
20
+
21
+ {% block methods %}
22
+ {% if all_methods %}
23
+ .. rubric:: {{ _('Methods') }}
24
+
25
+ .. autosummary::
26
+ {% for item in all_methods if item not in inherited_members and item not in ['__init__'] %}
27
+ ~{{ name }}.{{ item }}
28
+ {%- endfor %}
29
+ {% endif %}
30
+ {% endblock %}
@@ -0,0 +1,75 @@
1
+ {{ fullname | escape | underline}}
2
+
3
+ .. automodule:: {{ fullname }}
4
+
5
+ {% block attributes %}
6
+ {% if attributes %}
7
+ .. rubric:: Module Attributes
8
+
9
+ .. autosummary::
10
+ :toctree:
11
+ {% for item in attributes %}
12
+ {{ item }}
13
+ {%- endfor %}
14
+ {% endif %}
15
+ {% endblock %}
16
+
17
+ {% block functions %}
18
+ {% if functions %}
19
+ .. rubric:: {{ _('Functions') }}
20
+
21
+ .. autosummary::
22
+ :toctree:
23
+ {% for item in functions %}
24
+ {{ item }}
25
+ {%- endfor %}
26
+ {% endif %}
27
+ {% endblock %}
28
+
29
+ {% block classes %}
30
+ {% if classes %}
31
+ .. rubric:: {{ _('Classes') }}
32
+
33
+ .. autosummary::
34
+ :toctree:
35
+ :template: autosummary-class-template.rst
36
+ {% for item in classes %}
37
+ {{ item }}
38
+ {%- endfor %}
39
+ {% endif %}
40
+ {% endblock %}
41
+
42
+ {% block exceptions %}
43
+ {% if exceptions %}
44
+ .. rubric:: {{ _('Exceptions') }}
45
+
46
+ .. autosummary::
47
+ :toctree:
48
+ {% for item in exceptions %}
49
+ {{ item }}
50
+ {%- endfor %}
51
+ {% endif %}
52
+ {% endblock %}
53
+
54
+ {% block modules %}
55
+ {% if modules %}
56
+ .. rubric:: Subpackages and modules
57
+
58
+ .. autosummary::
59
+ :toctree:
60
+ :template: autosummary-module-template.rst
61
+ :recursive:
62
+ {% for item in modules %}
63
+ ~{{ item }}
64
+ {%- endfor %}
65
+ {% endif %}
66
+ {% endblock %}
67
+
68
+ {% block inheritance_diagram %}
69
+ {% if classes %}
70
+ .. rubric:: Inheritance
71
+
72
+ .. inheritance-diagram:: {{ fullname }}
73
+ :parts: 1
74
+ {% endif %}
75
+ {% endblock %}
@@ -0,0 +1,2 @@
1
+ .. _changes:
2
+ .. include:: ../CHANGELOG.rst
@@ -0,0 +1,169 @@
1
+ # Configuration file for the Sphinx documentation builder.
2
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html
3
+
4
+ import os
5
+ import sys
6
+
7
+ # -- Path setup --------------------------------------------------------------
8
+
9
+ # If extensions (or modules to document with autodoc) are in another directory,
10
+ # add these directories to sys.path here. If the directory is relative to the
11
+ # documentation root, use os.path.abspath to make it absolute, like shown here.
12
+
13
+ # Find the path to the source files we want to to document, relative to the location of this file,
14
+ # convert it to an absolute path.
15
+ py_path = os.path.join(os.getcwd(), os.path.dirname(__file__), '../src')
16
+ sys.path.insert(0, os.path.abspath(py_path))
17
+
18
+ # -- Project information -----------------------------------------------------
19
+
20
+ project = 'IQM Benchmarks'
21
+ copyright = '2024, IQM'
22
+ author = 'IQM Benchmarks developers'
23
+
24
+ # The short X.Y version.
25
+ version = ''
26
+ # The full version, including alpha/beta/rc tags.
27
+ release = ''
28
+ try:
29
+ from iqm.benchmarks import __version__ as version
30
+ except ImportError:
31
+ pass
32
+ else:
33
+ release = version
34
+
35
+ # -- General configuration ---------------------------------------------------
36
+
37
+ # require a recent version of Sphinx
38
+ needs_sphinx = '7.2'
39
+
40
+ # Add any Sphinx extension module names here, as strings. They can be
41
+ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
42
+ # ones.
43
+ extensions = [
44
+ 'sphinx.ext.autodoc',
45
+ 'sphinx.ext.autosummary',
46
+ 'sphinx.ext.napoleon',
47
+ 'sphinx.ext.mathjax',
48
+ 'sphinx.ext.inheritance_diagram',
49
+ 'sphinx.ext.todo',
50
+ 'sphinx.ext.extlinks',
51
+ 'sphinx.ext.intersphinx',
52
+ 'myst_parser'
53
+ ]
54
+
55
+ # Add any paths that contain templates here, relative to this directory.
56
+ templates_path = ['_templates']
57
+
58
+ # Include extra files in the HTML docs.
59
+ html_extra_path = []
60
+
61
+ # List of patterns, relative to source directory, that match files and
62
+ # directories to ignore when looking for source files.
63
+ # This pattern also affects html_static_path and html_extra_path.
64
+ exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', '.*']
65
+
66
+ # There are two options for replacing |today|: either, you set today to some
67
+ # non-false value, then it is used:
68
+ # today = ''
69
+ # Else, today_fmt is used as the format for a strftime call.
70
+ today_fmt = '%Y-%m-%d'
71
+
72
+ # If true, sectionauthor and moduleauthor directives will be shown in the
73
+ # output. They are ignored by default.
74
+ show_authors = True
75
+
76
+
77
+ # -- Autodoc ------------------------------------------------------------
78
+
79
+ # member ordering in autodoc output (default: 'alphabetical')
80
+ autodoc_member_order = 'bysource'
81
+
82
+ # where should signature annotations appear in the docs, function signature or parameter description?
83
+ autodoc_typehints = 'both'
84
+ # autodoc_typehints = 'description' puts the __init__ annotations into its docstring,
85
+ # which we thus have to include in the class documentation.
86
+ autoclass_content = 'class'
87
+
88
+ # Sphinx 3.3+: manually clean up type alias rendering in the docs
89
+ # autodoc_type_aliases = {'TypeAlias': 'exa.experiment.somemodule.TypeAlias'}
90
+
91
+
92
+ # -- Autosummary ------------------------------------------------------------
93
+
94
+ # use autosummary to generate stub pages for API docs
95
+ autosummary_generate = True
96
+
97
+
98
+ # -- Options for HTML output -------------------------------------------------
99
+
100
+ import sphinx_book_theme
101
+
102
+ # The theme to use for HTML and HTML Help pages. See the documentation for
103
+ # a list of builtin themes.
104
+ html_theme = 'sphinx_book_theme'
105
+
106
+ # Add any paths that contain custom themes here, relative to this directory.
107
+ html_theme_path = [sphinx_book_theme.get_html_theme_path()]
108
+
109
+ # Theme options are theme-specific and customize the look and feel of a theme
110
+ # further. For a list of options available for each theme, see the
111
+ # documentation.
112
+ html_theme_options = {}
113
+
114
+ # A shorter title for the navigation bar. Default is the same as html_title.
115
+ # html_short_title = None
116
+
117
+ # The name of an image file (relative to this directory) to place at the top
118
+ # of the sidebar.
119
+ html_logo = '_static/images/logo.png'
120
+
121
+ # The name of an image file (within the static path) to use as favicon of the
122
+ # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
123
+ # pixels large.
124
+ html_favicon = '_static/images/favicon.ico'
125
+
126
+ # Add any paths that contain custom static files (such as style sheets) here,
127
+ # relative to this directory. They are copied after the builtin static files,
128
+ # so a file named "default.css" will overwrite the builtin "default.css".
129
+ html_static_path = ['_static']
130
+
131
+ # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
132
+ # using the given strftime format.
133
+ html_last_updated_fmt = '%Y-%m-%d'
134
+
135
+ # Output file base name for HTML help builder.
136
+ htmlhelp_basename = 'iqm_benchmarks-doc'
137
+
138
+
139
+ # -- MathJax options ----------------------------------------------------------
140
+
141
+ # Here we configure MathJax, mostly to define LaTeX macros.
142
+ mathjax3_config = {
143
+ 'tex': {
144
+ 'macros': {
145
+ 'vr': r'\vec{r}', # no arguments
146
+ 'ket': [r'\left| #1 \right\rangle', 1], # one argument
147
+ 'iprod': [r'\left\langle #1 | #2 \right\rangle', 2], # two arguments
148
+ }
149
+ }
150
+ }
151
+
152
+
153
+ # -- External mapping ------------------------------------------------------------
154
+
155
+ python_version = '.'.join(map(str, sys.version_info[0:2]))
156
+ intersphinx_mapping = {
157
+ 'python': ('https://docs.python.org/' + python_version, None),
158
+ }
159
+
160
+ extlinks = {
161
+ 'issue': ('https://github.com/iqm-finland/iqm-benchmarks/issues/%s', 'issue '),
162
+ 'mr': ('https://github.com/iqm-finland/iqm-benchmarks/pull/%s', 'MR '),
163
+ }
164
+
165
+
166
+ # -- Options for sphinxcontrib.bibtex -------------------------------------------------
167
+
168
+ # List of all bibliography files used.
169
+ #bibtex_bibfiles = ['references.bib']
@@ -0,0 +1,32 @@
1
+ IQM Benchmarks
2
+ ##########
3
+
4
+ :Release: |release|
5
+ :Date: |today|
6
+ :Source Code: `<https://github.com/iqm-finland/iqm-benchmarks>`_
7
+
8
+ Quantum Characterization, Verification, and Validation (QCVV) tools for quantum computing.
9
+ Developed by `IQM <https://meetiqm.com/>`_.
10
+
11
+ Contents
12
+ ========
13
+
14
+ .. toctree::
15
+ :maxdepth: 2
16
+
17
+ readme
18
+ API
19
+ license
20
+
21
+ .. toctree::
22
+ :maxdepth: 1
23
+
24
+ changelog
25
+
26
+
27
+ Indices and tables
28
+ ==================
29
+
30
+ * :ref:`genindex`
31
+ * :ref:`modindex`
32
+ * :ref:`search`
@@ -0,0 +1,8 @@
1
+ .. _license:
2
+
3
+ =======
4
+ License
5
+ =======
6
+
7
+ .. include:: ../LICENSE
8
+ :literal:
@@ -0,0 +1,2 @@
1
+ ```{include} ../README.md
2
+ ```
@@ -29,17 +29,17 @@ requires-python = ">=3.11"
29
29
  dependencies = [
30
30
  "lmfit >= 1.2",
31
31
  "matplotlib >= 3.6.3, < 4",
32
- "more-itertools == 10.1.0",
32
+ "more-itertools >= 10.1.0, < 11.0.0",
33
33
  "mthree >= 2.6, < 2.7",
34
- "networkx==3.3",
34
+ "networkx>=3.3, < 4.0",
35
35
  "numpy >= 1.25.2, < 2.0",
36
- "qiskit >= 1.0",
37
- "qiskit-iqm >= 15.1",
38
- "scikit-optimize == 0.10.2",
39
- "tabulate == 0.9.0",
40
- "uncertainties == 3.2.2",
41
- "pycurl == 7.45.3",
42
- "xarray == 2024.6.0",
36
+ "qiskit >= 1.0, < 2.0",
37
+ "qiskit-iqm >= 15.1, < 16.0",
38
+ "scikit-optimize >= 0.10.2, < 0.11.0",
39
+ "tabulate >= 0.9.0, <1.0.0",
40
+ "uncertainties >= 3.2.2, < 3.3.0",
41
+ "pycurl >= 7.45.3, < 8.0",
42
+ "xarray >= 2024.6.0, < 2025.0.0",
43
43
  "types-pycurl",
44
44
  ]
45
45
 
@@ -75,6 +75,11 @@ test = [
75
75
  "pytest-pylint == 0.21.0",
76
76
  ]
77
77
 
78
+ docs = [
79
+ "sphinx == 7.2.6",
80
+ "sphinx-book-theme == 1.1.2",
81
+ "myst-parser >= 4.0.0, < 5",
82
+ ]
78
83
 
79
84
  [tool.black]
80
85
  line-length = 120
@@ -135,6 +135,7 @@ def default_analysis_function(result: BenchmarkAnalysisResult) -> BenchmarkAnaly
135
135
  def merge_datasets_dac(datasets: List[xr.Dataset]) -> xr.Dataset:
136
136
  """
137
137
  Merges a list of datasets recursively to minimize dataset sizes during merge
138
+
138
139
  Args:
139
140
  datasets: List[xr.Dateset]
140
141
  A list of xarray datasets
@@ -369,6 +369,7 @@ def create_predefined_gate_set(gate_set, num_qubits) -> Tuple[List[QuantumCircui
369
369
 
370
370
  The circuits are assigned to the specified qubit_layouts on the backend only during transipilation, so the qubit labels
371
371
  at this stage may not represent the actual qubit labels on the backend.
372
+
372
373
  Args:
373
374
  gate_set: str
374
375
  The name of the gate set
@@ -365,7 +365,8 @@ def generate_ghz_spanning_tree(
365
365
  n_state: int | None = None,
366
366
  ) -> Tuple[QuantumCircuit, List[int]]:
367
367
  """
368
- Generates a GHZ state in log-depth by computing a minimal spanning tree for a given coupling map
368
+ Generates a GHZ state in log-depth by computing a minimal spanning tree for a given coupling map.
369
+
369
370
  Args:
370
371
  graph: networkx.Graph
371
372
  A graph of the backend coupling map
@@ -622,8 +623,9 @@ class GHZBenchmark(Benchmark):
622
623
 
623
624
  def generate_native_ghz(self, qubit_layout: List[int], qubit_count: int, routine: str) -> QuantumCircuit:
624
625
  """
625
- Generate a circuit preparing a GHZ state,
626
- according to a given routine and transpiled to the native gate set and topology
626
+ Generate a circuit preparing a GHZ state,
627
+ according to a given routine and transpiled to the native gate set and topology.
628
+
627
629
  Args:
628
630
  qubit_layout: List[int]
629
631
  The subset of system-qubits used in the protocol, indexed from 0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-benchmarks
3
- Version: 1.9
3
+ Version: 1.11
4
4
  Summary: A package for implementation of Quantum Characterization, Verification and Validation (QCVV) techniques on IQM's hardware at gate level abstraction
5
5
  Author-email: IQM Finland Oy <developers@meetiqm.com>, Aniket Rath <aniket.rath@meetiqm.com>, Jami Rönkkö <jami@meetiqm.com>, Pedro Figueroa Romero <pedro.romero@meetiqm.com>, Vicente Pina Canelles <vicente.pina@meetiqm.com>, Raphael Brieger <raphael.brieger@meetiqm.com>, Stefan Seegerer <stefan.seegerer@meetiqm.com>
6
6
  Project-URL: Homepage, https://github.com/iqm-finland/iqm-benchmarks
@@ -13,17 +13,17 @@ Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
14
  Requires-Dist: lmfit>=1.2
15
15
  Requires-Dist: matplotlib<4,>=3.6.3
16
- Requires-Dist: more-itertools==10.1.0
16
+ Requires-Dist: more-itertools<11.0.0,>=10.1.0
17
17
  Requires-Dist: mthree<2.7,>=2.6
18
- Requires-Dist: networkx==3.3
18
+ Requires-Dist: networkx<4.0,>=3.3
19
19
  Requires-Dist: numpy<2.0,>=1.25.2
20
- Requires-Dist: qiskit>=1.0
21
- Requires-Dist: qiskit-iqm>=15.1
22
- Requires-Dist: scikit-optimize==0.10.2
23
- Requires-Dist: tabulate==0.9.0
24
- Requires-Dist: uncertainties==3.2.2
25
- Requires-Dist: pycurl==7.45.3
26
- Requires-Dist: xarray==2024.6.0
20
+ Requires-Dist: qiskit<2.0,>=1.0
21
+ Requires-Dist: qiskit-iqm<16.0,>=15.1
22
+ Requires-Dist: scikit-optimize<0.11.0,>=0.10.2
23
+ Requires-Dist: tabulate<1.0.0,>=0.9.0
24
+ Requires-Dist: uncertainties<3.3.0,>=3.2.2
25
+ Requires-Dist: pycurl<8.0,>=7.45.3
26
+ Requires-Dist: xarray<2025.0.0,>=2024.6.0
27
27
  Requires-Dist: types-pycurl
28
28
  Provides-Extra: develop
29
29
  Requires-Dist: tox==4.16.0; extra == "develop"
@@ -45,6 +45,10 @@ Requires-Dist: pytest-cov==4.1.0; extra == "test"
45
45
  Requires-Dist: pytest-isort==3.1.0; extra == "test"
46
46
  Requires-Dist: pytest-mypy==0.10.3; extra == "test"
47
47
  Requires-Dist: pytest-pylint==0.21.0; extra == "test"
48
+ Provides-Extra: docs
49
+ Requires-Dist: sphinx==7.2.6; extra == "docs"
50
+ Requires-Dist: sphinx-book-theme==1.1.2; extra == "docs"
51
+ Requires-Dist: myst-parser<5,>=4.0.0; extra == "docs"
48
52
 
49
53
  # IQM Benchmarks
50
54
 
@@ -52,7 +56,7 @@ IQM Benchmarks is a suite of Quantum Characterization, Verification, and Validat
52
56
 
53
57
 
54
58
  Below is a list of the benchmarks currently available in the suite:
55
- * Gates / Layers:
59
+ * Gates / Layers:
56
60
  - Standard Clifford Randomized Benchmarking [[Phys. Rev. A 85, 042311](https://journals.aps.org/pra/abstract/10.1103/PhysRevA.85.042311) (2012)]
57
61
  - Interleaved Randomized Benchmarking [[Phys. Rev. Lett. 109, 080505](https://doi.org/10.1103/PhysRevLett.109.080505) (2012)]
58
62
  - Compressive Gate Set Tomography [[PRX Quantum 4, 010325](https://journals.aps.org/prxquantum/abstract/10.1103/PRXQuantum.4.010325) (2023)]
@@ -60,9 +64,9 @@ Below is a list of the benchmarks currently available in the suite:
60
64
  * Holistic:
61
65
  - Quantum Volume [[Phys. Rev. A 100, 032328](https://doi.org/10.1103/PhysRevA.100.032328) (2019)]
62
66
  - CLOPS [[arXiv:2110.14108 [quant-ph]](https://arxiv.org/abs/2110.14108) (2021)]
63
- * Entanglement:
67
+ * Entanglement:
64
68
  - GHZ State Fidelity [[arXiv:0712.0921 [quant-ph]](https://arxiv.org/abs/0712.0921) (2007)]
65
- * Optimization:
69
+ * Optimization:
66
70
  - Q-Score [[IEEE Trans. Quantum Eng., 2](https://doi.org/10.1109/TQE.2021.3090207) (2021)]
67
71
 
68
72
  The project is split into different benchmarks, all sharing the `Benchmark` class or the legacy `BenchmarkBase` class. Each individual benchmark takes as an argument their own `BenchmarkConfigurationBase` class. All the (legacy) benchmarks executed at once are wrapped by the `BenchmarkExperiment` class, which handles dependencies among the benchmarks, storing the results, producing the plots...
@@ -104,6 +108,12 @@ To run the tests, you can use the following command:
104
108
  tox -e test
105
109
  ```
106
110
 
111
+ To build the API documentation as HTML:
112
+
113
+ ```bash
114
+ tox -e docs
115
+ ```
116
+
107
117
  ## Characterize Physical Hardware
108
118
 
109
119
  The IQM Benchmarks suite is designed to be used with real quantum hardware. To use the suite, you will need to have access to a quantum computer. The suite is designed to work with both IQM Resonance (IQM's quantum cloud service) and on-prem devices, but can be easily adapted to work with other quantum computing platforms.
@@ -9,6 +9,16 @@ tox.ini
9
9
  .github/workflows/main.yml
10
10
  .github/workflows/publish.yml
11
11
  .github/workflows/tag_and_release.yml
12
+ docs/API.rst
13
+ docs/Makefile
14
+ docs/changelog.rst
15
+ docs/conf.py
16
+ docs/index.rst
17
+ docs/license.rst
18
+ docs/readme.md
19
+ docs/_static/images/favicon.ico
20
+ docs/_templates/autosummary-class-template.rst
21
+ docs/_templates/autosummary-module-template.rst
12
22
  examples/example_clifford_rb.ipynb
13
23
  examples/example_clops.ipynb
14
24
  examples/example_experiment_all.ipynb
@@ -1,21 +1,26 @@
1
1
  lmfit>=1.2
2
2
  matplotlib<4,>=3.6.3
3
- more-itertools==10.1.0
3
+ more-itertools<11.0.0,>=10.1.0
4
4
  mthree<2.7,>=2.6
5
- networkx==3.3
5
+ networkx<4.0,>=3.3
6
6
  numpy<2.0,>=1.25.2
7
- qiskit>=1.0
8
- qiskit-iqm>=15.1
9
- scikit-optimize==0.10.2
10
- tabulate==0.9.0
11
- uncertainties==3.2.2
12
- pycurl==7.45.3
13
- xarray==2024.6.0
7
+ qiskit<2.0,>=1.0
8
+ qiskit-iqm<16.0,>=15.1
9
+ scikit-optimize<0.11.0,>=0.10.2
10
+ tabulate<1.0.0,>=0.9.0
11
+ uncertainties<3.3.0,>=3.2.2
12
+ pycurl<8.0,>=7.45.3
13
+ xarray<2025.0.0,>=2024.6.0
14
14
  types-pycurl
15
15
 
16
16
  [develop]
17
17
  tox==4.16.0
18
18
 
19
+ [docs]
20
+ sphinx==7.2.6
21
+ sphinx-book-theme==1.1.2
22
+ myst-parser<5,>=4.0.0
23
+
19
24
  [examples]
20
25
  notebook==7.2.1
21
26
 
@@ -77,3 +77,16 @@ allowlist_externals = tox
77
77
  commands =
78
78
  tox -e clean
79
79
  python -m build
80
+
81
+
82
+ [testenv:docs]
83
+ description =
84
+ Invoke sphinx to build the docs.
85
+ setenv =
86
+ DOCSDIR = {toxinidir}/docs
87
+ BUILDDIR = {toxinidir}/build/sphinx
88
+ BUILD = html
89
+ extras =
90
+ docs
91
+ commands =
92
+ sphinx-build -b {env:BUILD} "{env:DOCSDIR}" "{env:BUILDDIR}/{env:BUILD}"
File without changes
File without changes