Releases: unitaryfund/mitiq
v0.32.0
Version 0.32.0
Happy holidays, and happy (almost) new year!! ❄️☃️🎄🎊 This will be our last release of the year, and we'd like to thank everyone who has contributed to Mitiq over the past 12 months. We've accomplished so much in the way of error mitigation this year, and we couldn't have done it without the support and time given by the volunteers.
Thank you!
The calibrator logs have been revamped for to support result discovery and analysis. The Calibrator.run
method now support two options: flat
and cartesian
to display the experiment results in either a linear fashion, or grid-like. Results here have been truncated for brevity.
>>> calibrator.run(log="flat")
┌──────────────────────────┬────────────────────────────────────┬────────────────────────────┐
│ benchmark │ strategy │ performance │
├──────────────────────────┼────────────────────────────────────┼────────────────────────────┤
│ Type: ghz │ Technique: ZNE │ ✔ │
│ Num qubits: 2 │ Factory: Linear │ Noisy error: 0.04 │
│ Circuit depth: 2 │ Scale factors: 1.0, 2.0, 3.0 │ Mitigated error: 0.02 │
│ Two qubit gate count: 1 │ Scale method: fold_gates_at_random │ Improvement factor: 2.0 │
├──────────────────────────┼────────────────────────────────────┼────────────────────────────┤
│ Type: ghz │ Technique: ZNE │ ✘ │
│ Num qubits: 2 │ Factory: Linear │ Noisy error: 0.04 │
│ Circuit depth: 2 │ Scale factors: 1.0, 3.0, 5.0 │ Mitigated error: 0.0658 │
│ Two qubit gate count: 1 │ Scale method: fold_global │ Improvement factor: 0.6076 │
├──────────────────────────┼────────────────────────────────────┼────────────────────────────┤
│ Type: ghz │ Technique: ZNE │ ✘ │
│ Num qubits: 2 │ Factory: Richardson │ Noisy error: 0.98 │
│ Circuit depth: 33 │ Scale factors: 1.0, 3.0, 5.0 │ Mitigated error: 1.03 │
│ Two qubit gate count: 14 │ Scale method: fold_global │ Improvement factor: 0.9515 │
└──────────────────────────┴────────────────────────────────────┴────────────────────────────┘
>>> calibrator.run(log="cartesian")
┌────────────────────────────────────┬────────────────────────────┬────────────────────────────┐
│ strategy\benchmark │ Type: ghz │ Type: mirror │
│ │ Num qubits: 2 │ Num qubits: 2 │
│ │ Circuit depth: 2 │ Circuit depth: 33 │
│ │ Two qubit gate count: 1 │ Two qubit gate count: 14 │
├────────────────────────────────────┼────────────────────────────┼────────────────────────────┤
│ Technique: ZNE │ ✘ │ ✘ │
│ Factory: Richardson │ Noisy error: 0.03 │ Noisy error: 1.0 │
│ Scale factors: 1.0, 2.0, 3.0 │ Mitigated error: 0.09 │ Mitigated error: 1.03 │
│ Scale method: fold_global │ Improvement factor: 0.3333 │ Improvement factor: 0.9709 │
├────────────────────────────────────┼────────────────────────────┼────────────────────────────┤
│ Technique: ZNE │ ✘ │ ✔ │
│ Factory: Richardson │ Noisy error: 0.03 │ Noisy error: 1.0 │
│ Scale factors: 1.0, 3.0, 5.0 │ Mitigated error: 0.0563 │ Mitigated error: 0.97 │
│ Scale method: fold_global │ Improvement factor: 0.5333 │ Improvement factor: 1.0309 │
├────────────────────────────────────┼────────────────────────────┼────────────────────────────┤
│ Technique: ZNE │ ✘ │ ✔ │
│ Factory: Linear │ Noisy error: 0.03 │ Noisy error: 1.0 │
│ Scale factors: 1.0, 3.0, 5.0 │ Mitigated error: 0.0417 │ Mitigated error: 0.9975 │
│ Scale method: fold_global │ Improvement factor: 0.72 │ Improvement factor: 1.0025 │
└────────────────────────────────────┴────────────────────────────┴────────────────────────────┘
New benchmarking circuits: mitiq.benchmarks
now contains a function generate_random_clifford_t_circuit
which does what it says on the tin. Special shoutout to new UF team member Farrokh Labib (@FarLab) for this contribution.
from mitiq.benchmarks import generate_random_clifford_t_circuit
clifft = generate_random_clifford_t_circuit(
num_qubits=2,
num_oneq_cliffords=5,
num_twoq_cliffords=5,
num_t_gates=5
)
print(clifft)
# 0: ───────────@───S───T───@───H───T───X───T───T───@───@───────
# │ │ │ │ │
# 1: ───S───T───@───────────X───────────@───S───────@───X───S───
The Executor.run
method now supports a single circuit instance in addition to a list for ease of use when working with a single circuit.
- executor.run([circuit])
+ executor.run(circuit)
Faster Tests! Working on Mitiq has never been easier to develop with a faster (by 36%) test suite.
📓 Documentation
This release contains quite a few documentation improvements, including
- New workflow images to elucidate the workflow for for using the
mitiq.shadows
module (available here) - A reorganized API-doc which should be easier to navigate
- General clean up of the CDR user guide pages
Commits
- Clarify CDR training docs regarding the use of a markov chain monte carlo (#2130) [@natestemen]
- Update workflow images in documentation (#2034) [@purva-thakre]
- 2115 pauli twirling callibration of expectation estimation shadow needs continue (#2116) [@bdg221]
- Add randomized clifford+T benchmarking circuits. (#2118) [@FarLab]
- Frontend/Backend docs clean up (#2124) [@natestemen]
- Speed up tests using mocks (#2126) [@natestemen]
- resolve flaky mirror QV circuit test (#2127) [@natestemen + @Misty-W]
- Simplify expectation_estimation_shadow code (#2113) [@bdg221]
- Refactor calibration logs (#2074) [@kozhukalov]
- Organize API-doc (#2104) [@purva-thakre]
- add support for single circuit on exeuctor run method (#2099) [@EmilianoG-byte]
📦 Dependency updates
- Update qiskit-ibm-provider requirement from ~=0.7.2 to ~=0.7.3 (#2122) [@dependabot]
- Update cirq requirement from <1.3.0,>=1.0.0 to >=1.0.0,<1.4.0 (#2107) [@dependabot]
- Update pennylane requirement from ~=0.32.0 to ~=0.33.1 (#2091) [@dependabot]
- Update pennylane-qiskit requirement from ~=0.32.0 to ~=0.33.0 (#2081) [@dependabot]
- Bump stim/stimcirq from 1.12.0 to 1.12.1 (#2106) [@dependabot]
- Update amazon-braket-sdk requirement from ~=1.59.2 to ~=1.64.1 (#2089 + #2094 + #2114 + #2123) [@dependabot]
- Update scipy requirement from <=1.11.3,>=1.5.0 to >=1.5.0,<=1.11.4 (#2095) [@dependabot]
🧑💻 Dev Dependency updates
- Bump myst-nb from 0.17.1 to 1.0.0 (#2090) [@dependabot]
- Bump pandas from 2.1.2 to 2.1.3 (#2093) [@dependabot]
- Bump matplotlib from 3.8.0 to 3.8.1 (#2084) [@dependabot]
- Bump isort from 5.12.0 to 5.13.2 (#2120 + #2125) [@dependabot]
- Bump actions/setup-python from 4 to 5 (#2112) [@dependabot]
Release v0.31.0
Changelog
Version 0.31.0
Released November 2, 2023
Summary
This release contains several documentation improvements and some new additions. Quantum subspace expansion (QSE) is added to the user guide (thanks @bubakazouba). Thanks to our first time contributors @dubeyPraY for a new tutorial on using PennyLane and Mitiq in calculating the energy landscape of a simple variational circuit and @kozhukalov for adding the PEC noise level and calculated error to the calibration logs. We also removed support for python 3.8.
All changes
- Second incremental speed up of Mitiq tests [@Misty-W]
- More general conversion decorator and fix conversion bug in PEC (#2064) [@andreamari]
- Added Example for Mitiq in simple landscape for Pennylane (#2048) [@dubeyPraY]
- Indicate under active development on master (#2054) [@Misty-W]
- 2029 update contributing docs.md for references thumbnails viewing rtd build (#2053) [@bdg221]
- Add noise level to the PEC calibration log (#2045) [@kozhukalov]
- 2024 reduce documentation build time after classical shadows added (#2058) [@bdg221]
- Clean up GitHub CI (#2069) [@natestemen]
- remove binder directory (#2071) [@natestemen]
- drop support for python 3.8 (#2068) [nate stemen]
- Include calculated error in calibrator logs (#2038) [@kozhukalov]
- Adds QSE user guide (#1976) [@bubakazouba]
Dependency updates
- Bump openfermion from 1.5.1 to 1.6.0 (#2078) [@dependabot]
- Update qiskit-aer requirement from ~=0.12.2 to ~=0.13.0 (#2076) [@dependabot]
- Bump pandas from 2.1.1 to 2.1.2 (#2077) [@dependabot]
- Update qiskit requirement from ~=0.44.2 to ~=0.44.3 (#2073) [@dependabot]
- Update scipy requirement from <=1.11.2,>=1.5.0 to >=1.5.0,<=1.11.3 (#2031) [@dependabot]
- Update qiskit-ibm-provider requirement from ~=0.7.1 to ~=0.7.2 (#2072) [@dependabot]
- Update amazon-braket-sdk requirement from ~=1.55.1 to ~=1.59.2 (#2070) [@dependabot]
- Bump pyscf from 2.3.0 to 2.4.0 (#2055) [@dependabot]
- Update qiskit requirement from ~=0.44.1 to ~=0.44.2 (#2041) [@dependabot]
- Update qiskit-ibm-provider requirement from ~=0.7.0 to ~=0.7.1 (#2059) [@dependabot]
- Bump matplotlib from 3.7.3 to 3.8.0 (#2020) [@dependabot]
- Bump pandas from 2.0.3 to 2.1.1 (#2023) [@dependabot]
- Update pennylane-qiskit requirement from ~=0.31.0 to ~=0.32.0 (#1980) [@dependabot]
- Update seaborn requirement from ~=0.12.2 to ~=0.13.0 (#2037) [@dependabot]
New Contributors
- @kozhukalov made their first contribution in #2038
- @dubeyPraY made their first contribution in #2048
Full Changelog: v0.30.0...v0.31.0
Release v0.30.0
Changelog
Version 0.30.0
Released October 13, 2023
Summary
This release contains several documentation improvements and some new additions.
The classical shadows documentation has been improved (including a tutorial!) by @Min-Li. The Pauli Twirling method is added to the user guide (thanks @Aaron-Robertson and @purva-thakre). There is a new tutorial applying both zero-noise extrapolation (ZNE) and Clifford Data Regression (CDR) to quantum simulation, for the 1D Ising chain, in Cirq, by @farzadkianvash, a new contributor! The documentation has been further improved and unified by @Misty-W and @natestemen.
In terms of additions, a new type of benchmark quantum circuits, "rotated" randomized benchmarking (RB) quantum circuits have been added by @Misty-W, for more general benchmarks.
All changes
- Add a tutorial for simulating Ising 1-D chain with Cirq with ZNE and CDR [@farzadkianvash]
- Add section on quantum noise to user guide (#2036) [@Misty-W]
- New QEM benchmarking method: "rotated" RB circuits (#2028) [@Misty-W]
- Add Pauli Twirling (PT) User Guide (#1848) [@Aaron-Robertson @purva-thakre]
- Documentation cleanup (#2008) [@natestemen]
- Remove draft workflow from Github Actions (#2019) [@purva-thakre]
- Improve documentation of Classical Shadows (#2026) [@Min-Li]
- Classical Shadows: Add tutorial (#1945) [@Min-Li]
Dependency updates
- Update amazon-braket-sdk requirement from ~=1.54.1 to ~=1.55.1 (#2016) [@dependabot]
- Bump matplotlib from 3.7.2 to 3.7.3 (#2011) [@dependabot]
What's Changed
- Bump matplotlib from 3.7.2 to 3.7.3 by @dependabot in #2011
- [Classical Shadows 5] Shadows/RShadows tutorial by @Min-Li in #1945
- Add missing section in classical shadows example by @Min-Li in #2026
- Remove draft workflow by @purva-thakre in #2019
- Update amazon-braket-sdk requirement from ~=1.54.1 to ~=1.55.1 by @dependabot in #2016
- Documentation cleanup by @natestemen in #2008
- Pauli Twirling (PT) User Guide by @Aaron-Robertson in #1848
- New QEM benchmarking method: "rotated" RB circuits by @Misty-W in #2028
- Add section on quantum noise to user guide by @Misty-W in #2036
- Added a tutorial for simulating Ising 1-D chain using mitiq with cirq… by @farzadkianvash in #2002
- Prepare v.0.30.0 release by @nathanshammah in #2050
- Update CHANGELOG.md version typo by @nathanshammah in #2051
New Contributors
- @farzadkianvash made their first contribution in #2002
Full Changelog: v0.29.0...v0.30.0
v0.29.0
Version 0.29.0
Summary
Update Pauli Twirling
Thanks to @purva-thakre for updating Mitiq's PT functions, clarifying that PT is a noise tailoring technique and for consolidating utilities to be shared between PT and other techniques.
This release replaces the execute_with_pt
function with pauli_twirl_circuit
.
from mitiq.pt.pt import pauli_twirl_circuit
pauli_twirl_circuit(circuit)
Classical Shadows
Top-level functions and tests for classical shadows estimation are now available in Mitiq.
Congrats @Min-Li on completing the main functionality for this technique!
Note that documentation for classical shadows estimation is not yet available but coming soon.
from mitiq.shadows.shadows import shadow_quantum_processing, classical_post_processing
shadow_outcomes = shadow_quantum_processing(circuit, executor, num_total_measurements_shadow)
results = classical_post_processing(shadow_outcomes)
Stim + Mitiq tutorial
Added a tutorial demonstrating a method of combining quantum error mitigation (QEM) and quantum error correction (QEC), reducing the effective logical error rate of the computation.
This tutorial also introduces the use of Mitiq’s ZNE functions with a new backend, the Stim stabilizer simulator.
Calibration, Testing, and Documentation
Streamlined formatting of calibration logs, removed redundant test cases, and fixed documentation issues.
Thanks @natestemen for these improvements and for reviewing many of the PRs in this release!
Also, congrats to our new contributor @bdg221 for closing their first Mitiq PR! 🎉
All changes
- Move functions to utils (#1989) [@purva-thakre]
- remove unused import (#1999) [@natestemen]
- Make robust
Calibrator
logging (#1985) [@natestemen] - Speed up a few tests (#1996) [@natestemen]
- 1988 contributing doc note for zsh shell (#1997) [@bdg221]
- ZNE Stim tutorial (#1967) [@Misty-W]
- Fix typos in theory section of ddd guide (#1993) [@Misty-W]
- Broken link in docs (#1991) [@purva-thakre]
- Change the main function in Pauli Twirling (#1977) [@purva-thakre]
- remove binder badge and other links binder (#1970) [@andreamari]
- [Classical Shadows 4] Main function (#1921) [@Min-Li]
- Ensure BQSKit example runs (#1962) [@natestemen]
Dependency updates
- Bump stimcirq from 1.11.0 to 1.12.0 (#2000) [@dependabot]
- Bump stim from 1.11.0 to 1.12.0 (#2001) [@dependabot]
- Bump actions/checkout from 3 to 4 (#1994) [@dependabot]
- Update pennylane requirement from ~=0.31.1 to ~=0.32.0 (#1978) [@dependabot]
- Update qiskit-ibm-provider requirement from ~=0.6.3 to ~=0.7.0 (#1982) [@dependabot]
- Update amazon-braket-sdk requirement from ~=1.53.4 to ~=1.54.1 (#1972) [@dependabot]
- Update qiskit requirement from ~=0.44.0 to ~=0.44.1 (#1969) [@dependabot]
- Bump scipy + pyscf versions (#1968) [@dependabot]
- Update amazon-braket-sdk requirement from ~=1.53.3 to ~=1.53.4 (#1965) [@dependabot]
v0.28.0
Summary
Quantum Subspace Expansion
With the main functionaly implemented, quantum subspace expansion is now available in Mitiq! The technique requires a sequence of check operators, a Hamiltonian, and an observable in addition to the typical circuit and executor that Mitiq needs to operate.
from mitiq.qse import execute_with_qse
execute_with_qse(circuit, executor, check_operators, code_hamiltonian, observable)
This feature is still in flux, and would greatly benefit from further testing. Do give a try, and let us know if you have feedback! More details can be found in our API-doc. Congratulations to @bubakazouba for the great work here.
PEC Calibration
Last release we added support to run PEC experiments within the calibration
module. This release we made two improvements:
- Calibration experiments now represent all two-qubit gates by default (previously this was just
$\mathrm{C}X$ and$\mathrm{C}Z$ gates.) - When running
calibrator.run(log=True)
you will now find results from your PEC pretty-printed alongside any ZNE experiments.
Installation
Our core dependencies (NumPy, Cirq, SciPy) are now less tightly specified which means easier installs for users!
Robust Shadow Estimation
@Min-Li has been hard at work bringing shadows to Mitiq. The shadows
module is not quite ready for use, but you can get a sneak peak of what's to come in the Classical Shadows section of our API-doc.
All changes
- Fix docstring in qse.py (#1944) [@Misty-W]
- Add QSE to API-doc (#1938) [@natestemen]
- fix asv benchmarks (#1937) [@natestemen]
- [Classical Shadows 1] classical postprocessing (#1908) [@Min-Li]
- Add Calibration logging for PEC (#1873) [@Misty-W]
- [Classical Shadows 1] utils for shadows and unit test (#1907) [@Min-Li]
- Clean up types (#1825) [@natestemen]
- Relax test condition for
test_execute_with_pauli_twirling
(#1931) [@Misty-W] - loosen remaining core dependency versions (#1917) [@natestemen]
- [Classical Shadows] quantum processing and test (#1906) [@Min-Li]
- Make PEC calibration support all multi-qubit-gate (#1881) [@YuNariai]
- Implements high-level functions for QSE (#1902) [@bubakazouba]
- Temporary fix for documentation problem (#1927) [@andreamari]
- Adding layerwise folding as tutorial to mitiq. (#1894) [@vprusso]
- Fix docstring of initialized_depolarized_noise (#1919) [@andreamari]
- Update broken URLs (#1912) [@Min-Li]
- indicate under active development on master (#1900) [@natestemen]
Dependency updates
- Update pennylane requirement from ~=0.30.0 to ~=0.31.0 (#1888) [@dependabot]
- Update cirq requirement from ~=1.1.0 to ~=1.2.0 (#1922) [@dependabot]
- Update qiskit requirement from ~=0.43.3 to ~=0.44.0 (#1935) [@dependabot]
- Update amazon-braket-sdk requirement from ~=1.51.0 to ~=1.52.0 (#1933) [@dependabot]
- Update qiskit-ibm-provider requirement from ~=0.6.1 to ~=0.6.2 (#1932) [@dependabot]
- Update amazon-braket-sdk requirement from ~=1.50.0 to ~=1.51.0 (#1928) [@dependabot]
- Update qiskit requirement from ~=0.43.2 to ~=0.43.3 (#1925) [@dependabot]
- Update amazon-braket-sdk requirement from ~=1.49.1 to ~=1.50.0 (#1926) [@dependabot]
- Update amazon-braket-sdk requirement from ~=1.49.0 to ~=1.49.1 (#1916) [@dependabot]
- Update amazon-braket-sdk requirement from ~=1.46.0 to ~=1.49.0 (#1915) [@dependabot]
v0.27.0
Changelog
Version 0.27.0
Summary
Highlights from this release include adding new benchmark quantum circuits: Mirror Quantum Volume Circuits (@purva-thakre) and adding PEC as technique supported by calibration (@Misty-W). After approval of the related RFC on quantum subspace expansion technique, the first utils have been added (@bubakazouba). Other improvements include a new tutorial on quantum many body scars (@DHuybrechts); issues solved during unitaryHACK such as improvement to the cost estimation for Calibrator (@YuNariai), Qiskit Upgrade and Deprecation Warnings (@andre-a-alves), and a new function to register user defined Mitiq converters (@Aaron-Robertson).
All changes
- Draft workflow to run change specific tests (#1809) @Aaron-Robertson
- Improve twirling test (#1831) @andreamari
- Add banner to docs (#1834) @natestemen
- Supports observable multiplication with observable and PauliString @bubakazouba
- Add tutorial on Quantum Many Body Scars with ZNE @DHuybrechts
- Use latest copyright notice (#1892) @natestemen
- Fix frozen modules (#1879) @purva-thakre
- Update links for accepted RFCs (#1884) @purva-thakre
- Ensure execute_with_rem works with Executor object (#1877) @natestemen @Misty-W
- Remove unitaryHACK banner (#1875)@natestemen
- Braket example on mitigating the energy landscape of a variational CI @deji725
- Improve cost estimation for Calibrator (#1863) @YuNariai
- Mirror Quantum Volume Circuits (#1838) @purva-thakre
- Update amazon-braket-sdk requirement from ~=1.41.0 to ~=1.42.1 (#1870) @dependabot committed last month
- Clean up global, isolate tests, and fix mock module (#1864) @Aaron-Robertson
- Adds subspace expansion utils. (#1859) @bubakazouba
- Qiskit Upgrade and Deprecation Warnings (#1847) @andre-a-alves
- Adding PEC as technique supported by calibration (#1845) @Misty-W @andreamari
- Update wording now that event has started (#1860) @natestemen
- Add function to register user defined Mitiq converters (#1850) @Aaron-Robertson
- Removed Windows note (#1857) @andre-a-alves
- Update GitHub link (#1854) @andre-a-alves
- Include current year in copyright notice (#1852) @andre-a-alves
- Make sure PEC preserves measurement gates (#1844) @andreamari
- Add mypy to style guidelines (#1841) @purva-thakre
- Update calibration tutorial (#1840) @Misty-W
- Dependabot updates:
- Update pyquil requirement from ~=3.5.0 to ~=3.5.1 @dependabot
- Update amazon-braket-sdk requirement from ~=1.38.0 to ~=1.38.1 (#1829) @dependabot
- Update amazon-braket-sdk requirement from ~=1.45.0 to ~=1.46.0 (#1893) @dependabot
- Update amazon-braket-sdk requirement from ~=1.44.0 to ~=1.45.0 (#1889) @dependabot
- Update qiskit requirement from ~=0.43.1 to ~=0.43.2 (#1890) @dependabot
- Update amazon-braket-sdk requirement from ~=1.43.0 to ~=1.44.0 (#1887) @dependabot
- Update pennylane-qiskit requirement from ~=0.30.1 to ~=0.31.0 (#1886) @dependabot
- Update amazon-braket-sdk requirement from ~=1.42.1 to ~=1.43.0 (#1883) @dependabot
- Update qiskit-ibm-provider requirement from ~=0.6.0 to ~=0.6.1 (#1872) @dependabot
- Update pyquil requirement from ~=3.5.2 to ~=3.5.4 (#1867) @dependabot
- Update qiskit requirement from ~=0.43.0 to ~=0.43.1 (#1868) @dependabot
- Update amazon-braket-sdk requirement from ~=1.40.0 to ~=1.41.0 (#1865) @dependabot
- Update pennylane-qiskit requirement from ~=0.29.0 to ~=0.30.1 (#1824) @dependabot
- Update amazon-braket-sdk requirement from ~=1.38.1 to ~=1.40.0 (#1849) @dependabot
- Update pyquil requirement from ~=3.5.1 to ~=3.5.2 (#1856) @dependabot
v0.26.0
Summary
Highlights from this release include functions for applying Pauli Twirling of CNOT and CZ gates, support for noise scaling by circuit layer in ZNE, functions to generate Quantum Phase Estimation benchmarking circuits, and a new example composing two Mitiq techniques: REM and ZNE.
Special thanks to UF Ambassadors Purva Thakre and Aaron Robertson for their contributions to this release!
The use of the Pauli Twirling module is demonstrated in the following code cell*.
from mitiq import pt
twirled_value = pt.execute_with_pauli_twirling(circuit, expval_executor)
*Thorough testing and documentation of Pauli Twirling to follow in future releases.
If any bugs or inconsistencies are encountered, please open an issue.
All changes
- CNOT twirling (#1802) [@natestemen]
- Compose REM + ZNE in Mitiq (#1745) [@Misty-W]
- bump nbsphinx (#1821) [@natestemen]
- Update pennylane requirement from ~=0.29.1 to ~=0.30.0 (#1819) [@dependabot[bot]]
- Update amazon-braket-sdk requirement from ~=1.37.1 to ~=1.38.0 (#1817) [@dependabot[bot]]
- Update amazon-braket-sdk requirement from ~=1.37.0 to ~=1.37.1 (#1804) [@dependabot[bot]]
- Support noise scaling by layer (#1767) [@vprusso]
- Remove version specificity from codecov/codecov-action (#1801) [@dependabot[bot]]
- Update pyquil requirement from ~=3.4.1 to ~=3.5.0 (#1793) [@dependabot[bot]]
- use 1.7.0 link for grove (#1803) [@natestemen]
- Remove allcontributors (#1791) [@natestemen]
- Update qiskit tutorial with ddd functions (#1762) [@Misty-W]
- Add calibration workflow to README (#1778) [@natestemen]
- Make W-state circuits available to use in
Calibration
(#1792) [@Misty-W] - W State and QPE Benchmarking circuits in API Doc (#1785) [@purva-thakre]
- Update pyquil requirement from ~=3.4.0 to ~=3.4.1 (#1786) [@dependabot[bot]]
- Uprade python support to 3.11 (#1663) [@natestemen]
- Update pyquil requirement from ~=3.3.5 to ~=3.4.0 (#1784) [@dependabot[bot]]
- Bump codecov/codecov-action from 3.1.1 to 3.1.2 (#1781) [@dependabot[bot]]
- Quantum Phase Estimation Benchmarking Circuit (#1775) [@purva-thakre]
v0.25.0
Summary
Highlights from this release include a bug fixed in DDD, extended documentation for identity insertion as a noise scaling technique, new results from testing DDD on IBMQ hardware, a new function mitiq.benchmarks.w_state_circuits.generate_w_circuit
to generate W-state circuits, and a finalized calibration API. The new calibration module can be used as such:
from mitiq import Calibrator
cal = Calibrator(execute, frontend="cirq")
cal.execute_with_mitigation(circuit, expval_executor)
Breaking Changes: The force_run_all
option for the evaluate
method defined on Executor
objects now defaults to True.
All changes
- Calibration API simplifications (#1763) [@natestemen]
- W state Benchmarking Circuit (#1723) [@purva-thakre]
- Consider id as slack in ddd circuit mask (#1744) [@Aaron-Robertson]
- Remaining Stuff related to Identity Insertion Scaling in Docs (#1759) [@purva-thakre]
- Add calibration tutorial (#1756) [@nathanshammah]
- Set default force_run_all as True in PEC (#1755) [@andreamari]
- Update amazon-braket-sdk requirement from ~=1.36.3 to ~=1.36.4 (#1765) [@dependabot]
- Make the Calibrator multi-platform (#1748) [@andreamari]
- Update amazon-braket-sdk requirement from ~=1.36.2 to ~=1.36.3 (#1761) [@dependabot]
- Update DDD Qiskit tutorial with hardware experiments (#1751) [@Misty-W]
- Bump pyscf from 2.1.1 to 2.2.0 (#1753) [@dependabot]
- Update pyquil requirement from ~=3.3.3 to ~=3.3.4 (#1750) [@dependabot]
- Update amazon-braket-sdk requirement from ~=1.36.1 to ~=1.36.2 (#1749) [@dependabot]
- Update amazon-braket-sdk requirement from ~=1.35.5 to ~=1.36.1 (#1742) [@dependabot]
- Fix DDD typo in README (#1743) [@natestemen]
- Update pennylane requirement from ~=0.29.0 to ~=0.29.1 (#1741) [@dependabot]
- Set
master
in dev mode (#1736) [@Misty-W]
v0.24.0
Changelog
Version 0.24.0
Highlights of this release include refactoring of parts of the PEC module, improvements to the Calibration data and settings structures,
completion of the REM section of the user guide, and the publishing of a Mitiq tutorial first presented as a lab exercise at the SQMS/GGI 2022 Summer School on Quantum Simulation of Field Theories.
Special thanks to UF Ambassadors Amir Ebrahimi and Purva Thakre for their contributions to this release!
Breaking changes: The class NoisyOperation
is deprecated and removed from Mitiq. Moreover the initialization arguments of the OperationRepresentation
class changed. Please check the associated API-docs and the PEC section of the docs for more details.
- Update pennylane-qiskit requirement from ~=0.28.0 to ~=0.29.0 (#1733) [@dependabot[bot]]
- Update pennylane requirement from ~=0.28.0 to ~=0.29.0 (#1732) [@dependabot[bot]]
- Refactoring of NoisyOperation, NoisyBasis, OperationRepresentation (#1712) [@andreamari]
- Add Summer School Notebook to Docs (#1720) [@purva-thakre]
- Fix mypy errors on #1728 (#1729) [@Misty-W]
- Update settings.py (#1728) [@Misty-W]
- Improve default
ZNESettings
for calibration (#1721) [@Misty-W] - Update qiskit requirement from ~=0.41.0 to ~=0.41.1 (#1727) [@dependabot[bot]]
- Bump actions/setup-python from 3 to 4 (#1726) [@dependabot[bot]]
- remove pdf doc build (#1725) [@natestemen]
- REM: Update the fifth section of the docs (#1718) [Amir Ebrahimi]
- [calibration] usability improvements (#1714) [@natestemen]
- Simplify noisy operation (#1713) [@andreamari]
- Calibration results data structure refactor (#1706) [@natestemen]
- Update scipy requirement from ~=1.10.0 to ~=1.10.1 (#1719) [@dependabot[bot]]
- Update amazon-braket-sdk requirement from ~=1.35.4 to ~=1.35.5 (#1717) [@dependabot[bot]]
- Bump mypy from 0.982 to 1.0.0 (#1707) [@dependabot[bot]]
- Remove unnecessary circuit conversion in PEC (#1710) [@Misty-W]
- Update amazon-braket-sdk requirement from ~=1.35.3 to ~=1.35.4 (#1711) [@dependabot[bot]]
- Ignore a temporarely broken but correct DOI link (#1705) [@andreamari]
- Upgrade to qiskit 0.41.0 manually after failed dependabot PR (#1703) [@Misty-W]
- Update README.md (#1702) [@andreamari]
- Revert "Update qiskit requirement from ~=0.40.0 to ~=0.41.0 (#1697)" (#1701) [@Misty-W]
- Update qiskit requirement from ~=0.40.0 to ~=0.41.0 (#1697) [@dependabot[bot]]
- Set version in dev mode (#1700) [@andreamari]
- advertise the fact that we have DDD examples now (#1698) [@natestemen]
v0.23.0
Changelog
Version 0.23.0
The main improvements introduced in this release are:
-
A significant refactoring of the Mitiq calibration module. We generalized the
Settings
object, which is now able to generate a more general list ofBenchmarkProblem
objects (wrapping circuits and ideal results) and a list ofStrategy
objects
representing the error mitigation strategies to compare. We also improved how the optimalStrategy
is determined. Specifically, we now average overBenchmarkProblems
to reduce fluctuations and spurious results.
We remark that themitiq.calibration
module is very new and quickly evolving. Therefore further significant breaking changes are likely to happen in future releases. -
A non-trivial refactoring of the REM module. We changed the underlying workflow of the technique which is now applied directly to executors, instead of applying REM during the evaluation of expectation values. Expectation values can still be mitigated as usual with
execute_with_rem
but mitigated executors can now return rawMeasurementResult
objects (bitstrings). -
We also significantly extended the REM documentation with new and informative sections. Special thanks to @amirebrahimi and @nickdgardner for their high-quality and useful contributions!
-
We now have 2 tutorials focused on digital dynamical decoupling (DDD)---one for Cirq and one for Qiskit---both showing an improvement for a theoretical highly-correlated noise model. Moreover, the Qiskit tutorial on DDD is a useful starting point for testing the technique on real hardware.
All changes
- Use closest probability distribution in REM (#1688) [@andreamari]
- REM: Write-up third section of docs (#1693) [@nickdgardner]
- Improve calibration method parameter selection (#1682) [@Misty-W]
- Add References about REM (#1691) [@nathanshammah]
- REM: mitigate executors as a first step and expectation values at a second step. (#1678) [@andreamari]
- Draft for glossary of QEM concepts in docs (#1647) [@nickdgardner]
- myst -> md (#1689) [@natestemen]
- use executor.run in rem docs (#1690) [@andreamari]
- REM: Write-up fourth section of docs (#1680) [@amirebrahimi]
- upgrade
_run
to a public function (#1684) [@natestemen] - Update pyquil requirement from ~=3.3.2 to ~=3.3.3 (#1686) [@dependabot[bot]]
- Update qiskit requirement from ~=0.39.5 to ~=0.40.0 (#1687) [@dependabot[bot]]
- Calibration improvements (#1676) [@natestemen]
- Further updates related to the measurement result class (#1673) [@andreamari]
- DDD on IBMQ backends (#1665) [@Misty-W]
- Update amazon-braket-sdk requirement from ~=1.35.2 to ~=1.35.3 (#1674) [@dependabot[bot]]
- Update qiskit requirement from ~=0.39.4 to ~=0.39.5 (#1675) [@dependabot[bot]]
- Use
md
extension for myst markdown files (#1671) [@natestemen] - add H2 image (#1677) [@andreamari]
- Use source svg files instead of exported pngs (#1651) [@amirebrahimi]
- Improve and modify MeasurementResult class (#1670) [@andreamari]
- Update pennylane requirement from ~=0.27.0 to ~=0.28.0 (#1643) [@dependabot[bot]]
- Update cirq requirement from ~=1.0.0 to ~=1.1.0 (#1644) [@dependabot[bot]]
- loosen numpy requirements (#1672) [@natestemen]
- clean up latex (#1669) [@natestemen]
- Fix executor and update wording of DDD tutorial (#1655) [@Misty-W]
- Update scipy requirement from ~=1.9.3 to ~=1.10.0 (#1657) [@dependabot[bot]]
- update link (#1661) [@natestemen]
- Update amazon-braket-sdk requirement from ~=1.35.1 to ~=1.35.2 (#1656) [@dependabot[bot]]
- Update numpy requirement from ~=1.24.0 to ~=1.24.1 (#1652) [@dependabot[bot]]