Skip to content

Releases: unitaryfoundation/mitiq

v0.48.1

14 Nov 18:40
6abefc5

Choose a tag to compare

(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

03 Nov 21:33
6af98b5

Choose a tag to compare

(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

09 Sep 00:08
cb7ead7

Choose a tag to compare

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

09 Jul 19:01
1f3cecf

Choose a tag to compare

(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

29 May 20:28
567bbd9

Choose a tag to compare

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

29 May 00:44
215e48b

Choose a tag to compare

(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

03 Apr 22:01
44b9763

Choose a tag to compare

(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

📓 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

12 Feb 02:37
4e1996a

Choose a tag to compare

(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

v0.42.0

20 Dec 19:09
0fe60b8

Choose a tag to compare

(Full Changelog)

Highlights

🎊 Thanks for a great 2024! Our end of the year recap should be out soon. Subscribe here to get the newsletter in your mailbox.

🚀 Many thanks to first time contributors @gluonhiggs, @JMuff22, @sanketsharma and @Shivansh20128!

  • @gluonhiggs added support for some additional Qiskit gates through using gate decomposition for gates that are unavailable
    in Cirq. A similar idea was applied to gates not recognized by QASM.
  • @Shivansh20128 added a new page in the documentation for benchmarking circuits.
  • @JMuff22 and @sanketsharma corrected typos in the documentation.

💡 A new error-mitigation technique is on its way. Thanks to @Misty-W for the Probabilistic Error Amplification RFC!

🎏 Modular functions are now available for both PEC and DDD, courtesy of @natestemen and @bdg221! These functions allow a user to generate intermediary circuits and combine the results in a two step process. E.g. in PEC:

from mitiq import pec

circuits = pec.intermediary_sampled_circuits(circuit, representations)

sampled_circuit_results = ...  # execute the circuits on a simulator/hardware/toothbrush/etc

pec_estimate = pec.combine_results(sampled_circuit_results, ...)

✨ Enhancements

🧑🏽‍💻 Developer Improvements

  • Fix flaky ZNE factory + observable test (#2602) [@natestemen]
  • Ensure further LRE compatibility with non-Cirq circuits (#2599) [@natestemen]
  • Throw Erorr on Multiple Measurements per Qubit with Observables (#2593) [@bdg221]

📓 Documentation

📦 Dependency Updates

v0.41.0

07 Nov 15:23
45778e8

Choose a tag to compare

(Full Changelog)

Highlights

📓 The Layerwise Richardson Extrapolation (LRE) user guide is complete! The user guide contains information about both the ins and outs of using the implementation, as well as covering the theory behind the technique so you can make judgements about when to apply the technique. In addition to finishing the user guide, we also have a new tutorial comparing both the performance and overhead needed for LRE and ZNE. Big thanks to @purva-thakre and @FarLab for the documentation!

📹 As part of launching LRE we made a short tutorial video to showcase the technique, along with how to use it. Check it out here!

🧑‍🔬 First time contributor @jpacold recreated results from a paper on phase transitions in the Ising model. Both the paper authors, and @jpacold both used Mitiq's ZNE module to apply error mitigation. This is both an informative tutorial on turning physics problems into something amenable on a quantum computer, and a class in applying error-mitigation.

✨ Enhancements

🧑🏽‍💻 Developer Improvements

📞 Call for ideas

We're currently looking into what features we could add to make Mitiq more noise-aware. If you have ideas and features requests in this area, do make a post on the GitHub discussion here!