Releases: unitaryfoundation/mitiq
Release list
v1.0.0
Version 1.0.0
Highlights
🎉 Mitiq 1.0 is here!
After more than six years of development, 50 releases, and 1,700 commits by 96 contributors, Mitiq's version will finally reflect the project's stability. This milestone marks a commitment to a stable public API for the core error mitigation techniques (ZNE, PEC, DDD, LRE, CDR, REM, and PT) governed by semantic versioning. Future breaking changes to these modules will require a new major version.
This release also introduces the mitiq.experimental module which houses techniques whose APIs are still evolving and being tested (PEA, Shadows, VD, and the brand new TREX). Experimental techniques emit a FutureWarning on import to remind users that their interfaces may change. Feedback on these techniques is especially helpful!
Rounding out the release is a complete user guide for Probabilistic Error Amplification (PEA), a bug fix for ZNE that has gone unnoticed since ZNE was added, and the addition of Twirled Readout Error eXtinction (TREX) as Mitiq's newest (experimental) error mitigation technique.
Thank you to every contributor who has helped build Mitiq since 2020!
Special thanks to @vprusso, @cosenal, and first-time contributors @carpo3005, @axif0, and @bubai2000 for their work in this release!
🚨 Breaking Changes
-
mitiq.pea,mitiq.shadows, andmitiq.vdare no longer accessible from
the top-levelmitiqnamespace. Code usingfrom mitiq import pea(or
shadows/vd) will raise anImportErrorand must be updated.-from mitiq import pea +from mitiq.experimental import pea
These techniques are now part of
mitiq.experimental, which signals that their APIs may change without notice and are not covered by Mitiq's semantic versioning guarantees. AFutureWarningis emitted on import. -
Move less tested techniques to experimental module (#2966) [@natestemen]
✨ Enhancements
🐛 Bug Fixes
- Fix PolyExpFactory.extrapolate() bug (#2941) [@carpo3005]
- fix cost when ideal executor is being used (#2951) [@natestemen]
- fix module import issues (#2954) [@natestemen]
📓 Documentation
- PEA user guide (#2933) [@natestemen]
- Shadows tutorials cleaning (#2964) [@natestemen]
- Clean up shadows code (#2965) [@natestemen]
- clean up pennylane tutorial (#2950) [@natestemen]
:func:for function references and Restores the missing Pauli fidelity formula (#2958) [@axif0]- Add calibration benchmark script for average ZNE improvement (#2960) [@axif0]
🧑🏽💻 Developer Improvements
- add AI contribution policy (#2974) [@natestemen]
- remove mention of AUTHORS file (#2971) [@natestemen]
- Replace deprecated actions/create-release with GitHub CLI method (#2956) [@bubai2000]
- simplify docs build set up (#2948) [@natestemen]
- Make docs-build workflow more frugal (#2953) [@cosenal]
- move coverage config to pyproject.toml (#2947) [@natestemen]
- Fix Codecov base head (#2969) [@cosenal]
📦 Dependency Updates
- Bump pennylane from 0.43.1 to 0.44.1 (#2968) [@dependabot]
- Bump wheel to 0.46.3 (#2967) [@cosenal]
- Bump qibo from 0.2.23 to 0.3.1 (#2944) [@dependabot]
- Bump numba from 0.63.1 to 0.64.0 (#2946) [@dependabot]
- Bump types-tabulate from 0.9.0.20241207 to 0.10.0.20260308 (#2945) [@dependabot]
- Bump tornado from 6.5.2 to 6.5.5 (#2952) [@dependabot]
- Bump pyjwt from 2.10.1 to 2.12.0 (#2957) [@dependabot]
- Bump pyasn1 from 0.6.2 to 0.6.3 (#2962) [@dependabot]
🙌 All-time Contributors
Mitiq 1.0 belongs to everyone who has ever taken part in this project, through code, issues, reviews, or simply using the library and sharing feedback. A very special thanks to all who committed code over the years:
@natestemen, @andreamari, @rmlarose, @nathanshammah, @purva-thakre, @Misty-W, @willzeng, @crazy4pi314, @L-P-B, @cosenal, @karalekas, @b-goldsmith, @andre-a-alves, @Aaron-Robertson, @jordandsullivan, @FarLab, @amirebrahimi, @Min-Li, @nickdgardner, @Shivansh20128, @vprusso, @q-inho, @paniash, @elmandouh, @bubakazouba, @ACE07-Sev, @kozhukalov, @Rahul-Mistri, @DSamuel1, @yhindy, @obliviateandsurrender, @maloleroy, @lockwo, @gluonhiggs, @francescsabater, @axif0, @YuNariai, @EmilianoG-byte, @yitchen-tim, @vtomole, @vrajan1996, @sukrucildirr, @smburdick, @sid1993, @schrodinteq, @sanketsharma, @orisus42, @omahs, @nylewong, @muddi900, @mstechly, @mbrotos, @marwahaha, @lifechange777, @khknopp, @k-m-schultz, @jpacold, @isaac-gs, @grmlarose, @farzadkianvash, @ecarlander, @dubeyPraY, @deji725, @ckissane, @chrispy-chicken, @carpo3005, @bubai2000, @ZhaoyiLi-HekJukZaaiZyuJan, @Yash-10, @WingCode, @RubidgeCarrie, @NnguyenHTommy, @MZuhairKhan, @MChang360686, @LogMoss, @LaurentAjdnik, @Jegbrz, @JMuff22, @DHuybrechts, @BobinMathew, @AkashNarayanan, @1ucian0.
v0.49.0
Highlights
This release adds an OpenQASM 3 frontend, allowing users to pass OpenQASM 3 strings directly to Mitiq's error mitigation routines. Support for PRx and MS gates was also added to the Qibo interface. Mitiq now also supports NumPy 2.0!
Thanks to @ACE07-Sev, and @vprusso for your continued contributions and @schrodinteq, and @orisus42 for their first contributions!
✨ Enhancements
- NumPy 2.0 support (#2918) [@natestemen + @ACE07-Sev]
- OpenQASM3 Frontend (#2842) [@ACE07-Sev]
- Added support for PRx and MS gates in Qibo interface (#2879) [@ACE07-Sev]
- Add quantum computing classifier to project metadata (#2880) [@orisus42]
📓 Documentation
- Update docs to correctly reflect
num_chunksargument in LRE (#2915) [@vprusso] - Fix typo in README.md (#2898) [@schrodinteq]
- README cleanup (#2928) [@natestemen]
🧑🏽💻 Developer Improvements
- Set permissions for all github actions (#2932) [@natestemen]
- Bound qiskit above by 3.0 (#2886) [@dependabot]
📦 Dependency Updates
- Bump amazon-braket-sdk from 1.112.1 to 1.113.0 (#2935) [@dependabot]
- Bump scipy from 1.17.0 to 1.17.1 (#2931) [@dependabot]
- Bump amazon-braket-sdk from 1.111.0 to 1.112.1 (#2930) [@dependabot]
- Bump nbconvert from 7.16.6 to 7.17.0 (#2924) [@dependabot]
- Bump pillow from 12.0.0 to 12.1.1 (#2926) [@dependabot]
- Bump cryptography from 46.0.3 to 46.0.5 (#2925) [@dependabot]
- Bump qbraid from 0.10.1 to 0.11.0 (#2921) [@dependabot]
- Bump protobuf from 5.29.5 to 5.29.6 (#2919) [@dependabot]
- Bump amazon-braket-sdk from 1.110.1 to 1.111.0 (#2916) [@dependabot]
- Bump pyasn1 from 0.6.1 to 0.6.2 (#2907) [@dependabot]
- Bump scipy from 1.16.2 to 1.17.0 (#2903) [@dependabot]
- Bump pyscf from 2.11.0 to 2.12.0 (#2912) [@dependabot]
- Bump amazon-braket-sdk from 1.108.1 to 1.110.1 (#2913) [@dependabot]
- Bump pytket-cirq from 0.42.0 to 0.43.0 (#2900) [@dependabot]
- Bump myst-parser from 4.0.1 to 5.0.0 (#2911) [@dependabot]
- Bump qibo from 0.2.16 to 0.2.22 (#2870) [@dependabot]
- Bump fonttools from 4.60.1 to 4.60.2 (#2909) [@dependabot]
- Bump urllib3 from 2.5.0 to 2.6.3 (#2910) [@dependabot]
- Bump qbraid from 0.10.0 to 0.10.1 (#2906) [@dependabot]
- Bump amazon-braket-sdk from 1.103.0 to 1.108.1 (#2904) [@dependabot]
- Bump ucc from 0.4.10 to 0.4.12 (#2899) [@dependabot]
- Bump actions/cache from 4 to 5 (#2895) [@dependabot]
- Bump pytest from 8.0.0 to 9.0.2 (#2890) [@dependabot]
- Bump actions/checkout from 5 to 6 (#2881) [@dependabot]
v0.48.1
Highlights
This release adds support for the latest major versions of Qiskit (2.0) and PennyLane (0.43)!
All changes
- Bump pennylane from 0.36.0 to 0.43.1 (#2869) [@dependabot + @natestemen + @bdg221]
- Add payouts page to README (#2868) [@natestemen + @bdg221]
- ignore non-dependency files (#2867) [@natestemen]
v0.48.0
Highlights
Bug fixes and dependency upgrade palooza! In upgrading to cirq >=1.5, we unblocked supporting reset gates in Qiskit circuits!
Thank you to @bdg221, @maloleroy, @ACE07-Sev and first time contributors @omahs and @sukrucildirr for helping make this release happen!
✨ Enhancements
- Support qiskit reset ops in PEC (#2821) [@natestemen]
🐛 Bug fixes
- Move pennylane import and code inside check for module (#2843) [@bdg221]
- Fix typos (#2830) [@omahs]
- chore: fix typos across codebase (#2826) [@sukrucildirr]
- Fix deprecated access to members of CircuitInstruction (#2831) [@maloleroy]
📦 Dependency Updates
- Bump stim from 1.14.0 to 1.15.0 (#2851) [@dependabot]
- bump docs dependencies (#2862) [@natestemen]
- bump dependencies (#2861) [@natestemen]
- pin first-interaction to avoid issue-message breaking change (#2858) [@natestemen]
- Bump pytket-cirq from 0.39.0 to 0.42.0 (#2855) [@dependabot]
- Bump pytest-cov from 6.0.0 to 7.0.0 (#2856) [@dependabot]
- Bump bqskit from 1.1.1 to 1.2.1 (#2845) [@dependabot]
- Bump pyscf from 2.9.0 to 2.11.0 (#2844) [@dependabot]
- Bump openfermion from 1.7.0 to 1.7.1 (#2847) [@dependabot]
- Cirq 1.6 update (#2837) [@bdg221]
- Bump astral-sh/setup-uv from 6 to 7 (#2836) [@dependabot]
🧑🏽💻 Developer Improvements
- Qbraid integration for pyquil - remove cirq-rigetti (#2832) [@bdg221]
- Address CI errors with Windows + tcl/tkinter and Ubuntu + Code Coverage (#2834) [@bdg221]
- Bumped
myst_nbandnbsphinxto try and resolve #2723 . (#2835) [@ACE07-Sev]
v0.47.0
Highlights
mitiq 0.47.0 includes a new utility function was added to help compare the cost of QEM circuits, and we've made some quality-of-life fixes to calibration and documentation.
We also added functions to complete the Probabilistic Error Amplification (PEA) workflow! This module is still being documented, but the main functions are now available:
mitiq.pea.execute_with_peamitiq.pea.construct_circuitsmitiq.pea.combine_results
Give it a shot and let us know if you run into any issues.
Thanks to @q-inho, @bdg221, @natestemen, @Misty-W, and first-time contributor @maloleroy for their work in this release!
✨ Enhancements
- Add
compare_costutility function to show overhead of QEM circuits (#2809) [@q-inho] - Add functions to complete PEA workflow (#2785) [@Misty-W]
🐛 Bug fixes
- Fix typo in error message (#2822) [@maloleroy]
- Sort qubits before measurement in calibrator (#2813) [@natestemen]
- Fix typo (#2811) [@q-inho]
📓 Documentation
- Update calibration screencast in docs (#2823) [@bdg221]
- Update unitary_foundation_logo.png image file (#2810) [@q-inho]
📦 Dependency Updates
- Bump actions/setup-python from 5 to 6 (#2825) [@dependabot]
- Bump actions/checkout from 4 to 5 (#2820) [@dependabot]
- Bump actions/first-interaction from 2 to 3 (#2819) [@dependabot]
- Bump actions/first-interaction from 1 to 2 (#2807) [@dependabot]
v0.46.0
Highlights
Happy solstice season! This release got started with a bang thanks to unitaryHACK 2025 which took place May 28-June 11. We had 5 issues closed by 4 different first time contributors!
- @q-inho added support for custom circuits in the
Calibratorclass, allowing users to specify their own circuits when running calibration experments. They also added a new functionmitiq.zne.visualize_fitsto plot ZNE results with multiple extrapolation techniques, which is useful for comparing the performance of different extrapolation methods. - @MChang360686 added a new page to the user guide showing how to use Mitiq's two-stage technique approach to understand the resources required when running a specific protocol.
- @ACE07-Sev upgraded typehints across the mitiq codebase to remove deprecated features, and use the latest functionality.
- @ahkatlio added a new tutorial demonstrating how to combine Pauli Twirling, Digital Dynamical Decoupling, Zero Noise Extrapolation, and Readout Error Mitigation.
✨ Enhancements
- Create
scale_amplifications.pyfor Probabilistic Error Amplification (PEA) (#2655) [@Misty-W] - add
visualize_fitsto plot ZNE results with multiple extrapolation techniques (#2777) [@q-inho] (unitaryHACK) - add custom circuit support in
Calibrator(#2779) [@q-inho] (unitaryHACK)
🐛 Bug fixes
📓 Documentation
- Tutorial combining 4 QEM techniques (#2803 + #2778) [@ahkatlio]
- Switch order of PT/ZNE in tutorial (#2800) [@natestemen]
- adding a diagram for VD workflow in the docs (#2801) [@FarLab]
- Use qiskit throught layerwise folding tutorial (#2799) [@natestemen]
- added to documentation (#2788) [@MChang360686] (unitaryHACK)
- use latest contributor covenant CoC (#2781) [@natestemen]
🧑🏽💻 Developer Improvements
- Lighter docs build option (#2743) [@natestemen]
- Fix deprecated typings (#2775) [@ACE07-Sev] (unitaryHACK)
- upgrade pypi publish workflow (#2798) [@natestemen + @bdg221]
📦 Dependency Updates
- Bump qibo from 0.2.16 to 0.2.18 (#2753) [@dependabot]
- Bump amazon-braket-sdk from 1.91.2 to 1.93.0 (#2792) [@dependabot]
- Bump astral-sh/setup-uv from 5 to 6 (#2749) [@dependabot]
- Bump setuptools from 80.0.0 to 80.9.0 (#2763) [@dependabot]
v0.45.1
Patch release to fix a packaging issue that caused import mitiq to fail due to missing VERSION.txt in wheel.
Refer to the release notes for 0.45.0 for more details.
v0.45.0
Highlights
- Many tutorials are now updated with modern Qiskit code, ready to run on the latest IBM devices thanks to @bdg221!
- A new tutorial demonstrating how to use UCC in conjunction with Mitiq that shows how compilation and mitigation work well together.
- The Virtual Distillation technique now has a complete user guide along with API-docs.
✨ Enhancements
- Update get_scale_factors for static scale factors (#2727) [@bdg221]
- Use uv and pyproject.toml for dependencies and configs (#2724) [@bdg221] (this will not impact users of
mitiq, but it makes development much easier! Come try it out :))
📓 Documentation
- add Virtual Distillation documentation (#2760) [@FarLab]
- add VD to api-doc (#2761) [@natestemen]
- Update tutorials for IBM hardware (#2759) [@bdg221]
- Add tutorial demonstrating basic usage of mitiq & ucc (#2728) [@natestemen]
- Update README.md (#2718) [@lifechange777]
- fix shadows path (#2717) [@natestemen]
📦 Dependency Updates
- Bump pyscf from 2.8.0 to 2.9.0 (#2725) [@dependabot[bot]]
v0.44.0
Highlights
🚀 This release introduces the first version of the Virtual Distillation (VD) technique in Mitiq, which is now available for use! This technique was prototyped and implemented by a team of students at the University of Amsterdam. VD uses additional qubits to distill a purer version of the quantum state of interest. The implementation is in its early stages so lacks support for all QPROGRAM types. Currently only programs written in cirq are supported. We welcome feedback and suggestions for improvement.
from mitiq import vd
vd.execute_with_vd(circuit, execute)
>>> np.array([0.5, 0.5]) # [<Z_0>, <Z_1>] assuming the circuit acts on 2 qubitsWe've also made further enhancements to the Layerwise Richardson Extrapolation (LRE) technique, including support for observables and the mitiq.Executor class. mitiq.lre also has two new functions mitiq.lre.construct_circuits and mitiq.lre.combine_results that allow users to generate circuits and combine results in a more modular way (bringing this module in line with the other error mitigation techniques). An example workflow for the two step application LRE is shown below:
from mitiq import lre
lre_circuits = lre.construct_circuits(circuit, degree, fold_multiplier)
results = execute(lre_circuits)
lre_result = lre.combine_results(results, circuit, degree, fold_multiplier)🚨 Breaking Changes
For uniformity across modules within Mitiq we have renamed the folowing functions:
mitiq.zne.scaled_circuits->mitiq.zne.construct_circuitsmitiq.ddd.generate_circuits_with_ddd->mitiq.ddd.construct_circuitsmitiq.pec.generate_sampled_circuits->mitiq.pec.construct_circuits
With this change, you will find the function mitiq.<module>.construct_circuits in all of ZNE, PEC, DDD, LRE, and VD.
We've also bound the version of numpy to be less than 2.0.0 due to some conflicts when using this latest major version.
We hope to support numpy 2.0.0 in a coming release.
If you're interested in error mitigation, check out our upcoming error resilience workshop in NYC! WERQSHOP: Workshop on Error Resilience Quantum computing (https://werq.shop).
✨ Enhancements
- Modularization uniformity for ZNE, PEC, DDD, and LRE (#2709) [@bdg221]
- Add main API entry points for virtual distillation (#2658) [@Jegbrz]
- UFund => UFoundation (#2706) [@natestemen]
- allow list/tuple constructor in executor typehints (#2700) [@natestemen]
- Adding utility functions for Virtual Distillation. (#2698) [@FarLab]
- Auxilliary code for VD to apply a Bi matrix on a circuit (#2650) [@khknopp]
- Adding support for observables in LRE executors (#2681) [@Shivansh20128]
- Adding modularized function generate_circuits_with_ddd (#2618) [@Shivansh20128]
- Allow for Executor class and batched Executors for LRE (#2676) [@bdg221]
- Adding modularized function generate_sampled_circuits (#2619) [@Shivansh20128]
- Default scaling method in modularized ZNE function (#2666) [@purva-thakre]
📓 Documentation
- Adding docstrings to Observable class (#2699) [@Shivansh20128]
- add Virtual Distillation rfc to the contributing page and a new row in the error mitigation techniques in the readme. (#2691) [@FarLab]
📦 Dependency Updates
- bound numpy from above (#2712) [@natestemen]
- Update qiskit-ibm-runtime requirement from ~=0.36.1 to ~=0.37.0 (#2693) [@dependabot]
- Update qiskit-aer requirement from ~=0.15.1 to ~=0.17.0 (#2694) [@dependabot]
- Update amazon-braket-sdk requirement from ~=1.90.2 to ~=1.91.0 (#2697) [@dependabot]
- Update qiskit requirement from ~=1.4.1 to ~=1.4.2 (#2696) [@dependabot]
- Bump openfermion from 1.6.1 to 1.7.0 (#2671) [@dependabot]
- Update amazon-braket-sdk requirement from ~=1.69.0 to ~=1.90.2 (#2690) [@dependabot]
- Update qibo requirement from ~=0.2.15 to ~=0.2.16 (#2689) [@dependabot]
- Update qiskit-ibm-runtime requirement from ~=0.20.0 to ~=0.36.1 (#2314) [@dependabot]
- Update scipy requirement from <=1.14.1,>=1.10.1 to >=1.10.1,<=1.15.2 (#2673) [@dependabot]
- Update qiskit requirement from ~=1.3.1 to ~=1.4.1 (#2685) [@dependabot]
- Update pyquil requirement from ~=3.5.4 to ~=4.11.0 (#2063) [@dependabot]
v0.43.0
Highlights
This release marks the first step toward Virtual Distillation (VD) in Mitiq, with an initial helper function that vertically copies a circuit M times. A team of students at the University of Amsterdam worked for the month of January on implementing the technique that will be integrated into Mitiq over the coming releases. We also have a new tutorial thanks to @purva-thakre on combining Pauli Twirling and Zero-Noise Extrapolation!
We are currently testing Layerwise Richardson Extrapolation (LRE) on hardware, and work has begun on Probabilistic Error Amplification (PEA)---stay tuned for more updates in future releases!
✨ Enhancements
- First PR for VD, helper function that copies a circuit M times (#2649) [@chrispy-chicken]
📓 Documentation
- added section on modular functions for ZNE (#2657) [@FarLab + @natestemen]
- PT + ZNE tutorial (#2601) [@purva-thakre]
- Changed the badge to Unitary Foundation (#2645) [@muddi900]
- Typos in PEC User Guide (#2637) [@purva-thakre]
- typo corrected from supeconducting to superconducting (#2617) [@vrajan1996]
- Small fixes in docstrings (#2663) [@cosenal]
🧑🏽💻 Developer Improvements
- LRE failure for chunking (#2608) [@purva-thakre]
- update version, changelog (#2613) [@purva-thakre]
📦 Dependency Updates
- Bump pyscf from 2.7.0 to 2.8.0 (#2633) [@dependabot]
- Update qibo requirement from ~=0.2.13 to ~=0.2.15 (#2643) [@dependabot]