Skip to content

Releases: unitaryfoundation/mitiq

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 25 Mar 13:24
15bfc9d

Version 1.0.0

(Full Changelog)

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, and mitiq.vd are no longer accessible from
    the top-level mitiq namespace. Code using from mitiq import pea (or
    shadows/vd) will raise an ImportError and 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. A FutureWarning is emitted on import.

  • Move less tested techniques to experimental module (#2966) [@natestemen]

✨ Enhancements

🐛 Bug Fixes

📓 Documentation

🧑🏽‍💻 Developer Improvements

📦 Dependency Updates

🙌 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

Choose a tag to compare

@github-actions github-actions released this 08 Mar 15:31
1d597d6

(Full Changelog)

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

📓 Documentation

🧑🏽‍💻 Developer Improvements

📦 Dependency Updates

v0.48.1

Choose a tag to compare

@github-actions github-actions released this 14 Nov 18:40
6abefc5

(Full Changelog)

Highlights

This release adds support for the latest major versions of Qiskit (2.0) and PennyLane (0.43)!

All changes

v0.48.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 21:33
6af98b5

(Full Changelog)

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

🐛 Bug fixes

📦 Dependency Updates

🧑🏽‍💻 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_nb and nbsphinx to try and resolve #2723 . (#2835) [@ACE07-Sev]

v0.47.0

Choose a tag to compare

@github-actions github-actions released this 09 Sep 00:08
cb7ead7

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_pea
  • mitiq.pea.construct_circuits
  • mitiq.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_cost utility function to show overhead of QEM circuits (#2809) [@q-inho]
  • Add functions to complete PEA workflow (#2785) [@Misty-W]

🐛 Bug fixes

📓 Documentation

  • Update calibration screencast in docs (#2823) [@bdg221]
  • Update unitary_foundation_logo.png image file (#2810) [@q-inho]

📦 Dependency Updates

(Full Changelog)

v0.46.0

Choose a tag to compare

@github-actions github-actions released this 09 Jul 19:01
1f3cecf

(Full Changelog)

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 Calibrator class, allowing users to specify their own circuits when running calibration experments. They also added a new function mitiq.zne.visualize_fits to 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.py for Probabilistic Error Amplification (PEA) (#2655) [@Misty-W]
  • add visualize_fits to plot ZNE results with multiple extrapolation techniques (#2777) [@q-inho] (unitaryHACK)
  • add custom circuit support in Calibrator (#2779) [@q-inho] (unitaryHACK)

🐛 Bug fixes

📓 Documentation

🧑🏽‍💻 Developer Improvements

📦 Dependency Updates

v0.45.1

Choose a tag to compare

@github-actions github-actions released this 29 May 20:28
567bbd9

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

Choose a tag to compare

@github-actions github-actions released this 29 May 00:44
215e48b

(Full Changelog)

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

📦 Dependency Updates

v0.44.0

Choose a tag to compare

@github-actions github-actions released this 03 Apr 22:01
44b9763

(Full Changelog)

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 qubits

We'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:

  1. mitiq.zne.scaled_circuits -> mitiq.zne.construct_circuits
  2. mitiq.ddd.generate_circuits_with_ddd -> mitiq.ddd.construct_circuits
  3. mitiq.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

v0.43.0

Choose a tag to compare

@github-actions github-actions released this 12 Feb 02:37
4e1996a

(Full Changelog)

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

📓 Documentation

🧑🏽‍💻 Developer Improvements

📦 Dependency Updates