Skip to content

Releases: unitaryfund/mitiq

v0.29.0

09 Sep 00:22
ee85edf
Compare
Choose a tag to compare

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

Dependency updates

v0.28.0

02 Aug 01:20
703fe7f
Compare
Choose a tag to compare

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:

  1. Calibration experiments now represent all two-qubit gates by default (previously this was just $\mathrm{C}X$ and $\mathrm{C}Z$ gates.)
  2. 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

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

06 Jul 12:09
8180b50
Compare
Choose a tag to compare

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

v0.26.0

10 May 23:28
58dfd2d
Compare
Choose a tag to compare

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

v0.25.0

03 Apr 20:31
c849314
Compare
Choose a tag to compare

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

v0.24.0

02 Mar 22:02
6587982
Compare
Choose a tag to compare

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.

v0.23.0

01 Feb 15:43
bc4c0ca
Compare
Choose a tag to compare

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 of BenchmarkProblem objects (wrapping circuits and ideal results) and a list of Strategy objects
    representing the error mitigation strategies to compare. We also improved how the optimal Strategy is determined. Specifically, we now average over BenchmarkProblems to reduce fluctuations and spurious results.
    We remark that the mitiq.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 raw MeasurementResult 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

v0.22.0

31 Jan 16:48
55481c7
Compare
Choose a tag to compare

Changelog

Summary

In this release we focused on improving our documentation with three new examples, new REM docs, and navigation improvements, along with some bug fixes. This release also adds a new module calibration which allows one to run a series of experiments to see what error mitigation parameters will work best for their particular setup. This feature is still under active development.

Many thanks to @amirebrahimi for his continued work on making readout error mitigation available, and usable in Mitiq.

Thanks to everyone who contributed to Mitiq this year! It's been a great time for error mitigation, and we look forward to continuing to grow Mitiq in the new year! Happy holidays! 🎄🎉🎊

All changes

v0.21.0

30 Nov 20:17
2b9a5db
Compare
Choose a tag to compare

Summary

This release officially adds support for the learning-based PEC sub-technique which is now fully documented and ready to be applied by Mitiq users. We are still assessing the stability of this new sub-technique, so if you notice any bugs, please let us know by opening issues on GitHub.

Functions to apply Readout Error Mitigation (REM) are also introduced in this release, special thanks to Amir Ebrahimi for this contribution!

Also, the noise scaling by identity insertion method is included in the ZNE section of the user guide. Special thanks to Purva Thakre for this contribution!

During the release cycle we accepted the RFC for implementation of calibration tools (Solution 1). We also completed a prototype of this approach, which will be released in a future version of Mitiq.

In addition, this release adds support for qubit-independent representations for PEC, along with bug fixes and minor dependency upgrades.

What's Changed

Full Changelog: v0.20.0...v0.21.0

v0.20.0

31 Oct 22:35
aed2b15
Compare
Choose a tag to compare

Summary

This milestone focused on updating our support for numpy (1.23), adding a tutorial demonstrating the learning-based PEC workflow, and scoping out what device/noise calibration might look like as part of Mitiq. Additionally identity insertion has been added as a noise-scaling technique available for mitigation protocols such as zero-noise extrapolation. Expect more documentation of this feature in future releases. Big thanks to @purva-thakre for getting this in Mitiq!

There are also some minor bug fixes, documentation updates, and a new example contributed by @nickdgardner as well!

All changes