Skip to content

Releases: unitaryfund/mitiq

Release v0.13.0

25 Feb 14:36
c7f7330
Compare
Choose a tag to compare

Changelog

Version 0.13.0 (February 25th, 2022)

Summary

Mitiq is now compatible with the latest version (0.13.1) of Cirq! This update was blocked for a long time because of some technical difficulties. So, many thanks to @vtomole for finding a solution to this issue!
This should solve several dependency conflicts or warnings that you may have got when running pip install mitiq or pip install -U mitiq.

The HTML rendering of all PyQuil examples in our documentation is now fixed. Thanks @astrojuanlu for useful suggestions about readthedocs!

We also thank @Rahul-Mistri for adding GHZ circuits to our benchmarking module and for making Clifford circuits compatible with the Mitiq CDR technique (instead of raising an error as it happened before this release).

We discussed and approved the design documents (RFC) for two new error-mitigation techniques: learning-based PEC and digital dynamical decoupling. You can find them at this link. Special thanks go to @Misty-W and @Aaron-Robertson!

All Changes

Release v0.12.0

21 Jan 19:33
Compare
Choose a tag to compare

Changelog

Version 0.12.0 (January 21st, 2022)

Summary

This release contains a considerable overhaul of the documentation organization and content:

  • The guide is now divided into Core concepts and a new presentation of the quantum errror mitigation techniques (ZNE, PEC and CDR). Each technique contains subsections that explain with code snippets how to use them in Mitiq (gh-1021, gh-1004 gh-1031, gh-1099). Also the API doc has been extended and improved. Many thanks to @purva-thakre @Misty-W for their help on rewriting the documentation and reviewing the pull requests.
  • An example on how to use ZNE to improve the calculations of the energy potential landscape of molecular Hydrogen using VQE was added by @andreamari.

New features

  • GHZ circuits were added to the benchmark subpackage by @Rahul-Mistri.
  • Airspeed-velocity (asv) has been added to the CI by @rmlarose.

All Changes

Release v0.11.1

29 Nov 17:38
337062c
Compare
Choose a tag to compare

Changelog

Version 0.11.1 (November 29th, 2021)

Summary

This patch release fixes two bugs:

  • Bug: PEC could only be used with cirq.Circuits, not mitiq.QPROGRAM, due to a missing conversion.
    • Fix: PEC can now be used with any mitiq.QPROGRAM (gh-1018).
  • Bug: CDR classically simulated the wrong circuits when doing regression.
    • Fix: The correct circuits are now classically simulated (gh-1026).

Also fixes a smaller bug where some tools in mitiq.interface.mitiq_qiskit modified qiskit.QuantumCircuits when they shouldn't.

All Changes

Release v0.11.0

03 Nov 16:54
b1e5cfd
Compare
Choose a tag to compare

Changelog

Version 0.11.0 (November 3rd, 2021)

Summary

This release introduces Observables as a major new feature to the Mitiq workflow and a few breaking changes. Support
for Pennylane has been added by adding pennylane.QuantumTapes to mitiq.QPROGRAM.

New features

  • Specify and use a mitiq.Observable in any error-mitigation technique.

    • This means the executor function does not have to return the expectation value as a float anymore, but rather
      can return a mitiq.QuantumResult - i.e., an object from which the expectation value can be computed provided
      an observable.
    • The executor function can still return a float, in which case the Observable does not need to be specified
      (and should not be specified).
  • All error mitigation techniques can now use batching with the same interface.

  • PEC can be run with only a subset of representations of the gates in a circuit. In other words, if the circuit has
    two gates, H and CNOT, you can run execute_with_pec by only providing an OperationRepresentation for, e.g.,
    the CNOT.

    • Before, you had to provide all representations or an error would be raised.
    • Performance of PEC may be better by providing all OperationRepresentations. This change is only with respect to
      usability and not performance.
  • Circuits written in Pennylane (as QuantumTapes) are now recognized and suppported by Mitiq.

Breaking changes

  • Signatures of execute_with_xxx error-mitigation techniques have changed to include Observables. The default value
    is None, meaning that the executor should return a float as in the old usage, but the additional argument and
    change to keyword-only arguments (see below) may require you to make updates.

  • You must now use provide keywords for technique-specific arguments in error mitigation techniques. Example:

# Example new usage of providing keyword arguments. Do this.
execute_with_pec(circuit, executor, observable, representations=representations)

instead of

# Old usage. Don't do this. Technique-specific arguments like `representations` are now keyword-only.
execute_with_pec(circuit, executor, observable, representations)

The latter will raise # TypeError: execute_with_pec() missing 1 required keyword-only argument: 'representations'.

  • The first argument of execute_with_zne is now circuit instead of qp to match signatures of other
    execute_with_xxx functions.

All Changes

Huge thanks to all contributors on this release! @Misty-W, @AkashNarayanan, @purva-thakre, @trbromley, @nathanshammah,
@crazy4pi314, @andreamari, and @rmlarose.

Release v0.10.0

21 Sep 21:46
63cd394
Compare
Choose a tag to compare

Version 0.10.0 (September 17, 2021)

This release adds a ton of new stuff, both error mitigation tools as well as infrastructure upgrades.
Some highlights:

  • New integration with AWS Braket
  • A new pyQuil example by @Misty-W and lots of pyQuil debugging.
  • Support for mirror circuits by @DSamuel1.
  • Dependabot is now helping us keep our dependencies up to date.
  • Lots of documentation fixes and features like a gallery view of the examples and mybinder.org support.
  • New Observable and MeasurementResult dataclass.

Thanks to @Misty-W and @DSamuel1 for their great contributions this release! 🎉

All Changes

v0.9.3

07 Jul 09:42
Compare
Choose a tag to compare

Version 0.9.3 (July 7th, 2021)

This primary reason for this patch release is to fix a bug interfacing with Qiskit circuits (gh-802).

All Changes

  • [Docs] Add CDR to README and braket to Overview (@rmlarose, gh-778).
  • Rename parameter calibration function and make it visible (@rmlarose, gh-780).
  • Allow adding qubits when transforming registers in a Qiskit circuit (@rmlarose, gh-803).

v0.9.2

30 Jun 21:00
e5fd404
Compare
Choose a tag to compare

Version 0.9.2 (June 30th, 2021)

This patch release fixes a Braket integration bug (gh-767).
It also adds an example about Clifford data regression in the documentation.

All Changes

v0.9.1

24 Jun 10:13
704ba56
Compare
Choose a tag to compare

Version 0.9.1 (June 24th, 2021)

This is a patch release to fix two bugs (gh-736, gh-737) related to the integration with optional packages.
It also fixes other minor problems (see the list of changes below).

All Changes

v0.9.0

17 Jun 17:16
75b89ca
Compare
Choose a tag to compare

Version 0.9.0 (June 17th, 2021)

Summary

The main addition introduced in this release is the implementation of a new error mitigation technique: (variable-noise) Clifford data regression (arXiv:2005.10189, arXiv:2011.01157). This is structured as a Mitiq module called mitiq.cdr.

Another important change is the integration with Amazon Braket, such that Mitiq is now compatible with circuits of type braket.circuits.Circuit. Moreover all the existing Mitiq integrations are now organized into unique module called mitiq.interface.

In the context of probabilistic error cancellation, the sub-module mitiq.pec.representations has been significantly improved. Now one can easily compute the optimal quasi-probabiliy representation of an ideal gate as a linear combination of NoisyOperation objects.

Thanks to all contributors (@L-P-B, @Aaron-Robertson, @francespoblete, @LaurentAjdnik, @maxtremblay, @andre-a-alves, @paniash, @purva-thakre) and in particular to the participants of unitaryHACK!

All Changes

v0.8.0

06 May 15:52
9fa23ad
Compare
Choose a tag to compare

Version 0.8.0 (May 6th, 2021)

Summary

This release has the following major components:

  • Re-implements local folding functions (zne.scaling.fold_gates_from_left, zne.scaling.fold_gates_from_right and zne.scaling.fold_gates_at_random) to make them more uniform at large scale factors and match how they were defined in Digital zero-noise extrapolation for quantum error mitigation.
  • Adds a new noise scaling method, zne.scaling.fold_all, which locally folds all gates. This can be used, e.g., to "square CNOTs," a common literature technique, by calling fold_all and excluding single-qubit gates.
  • Adds functionality for the training portion of Clifford data regression, specifically to map an input (pre-compiled) circuit to a set of (near) Clifford circuits which are used as training data for the method. The full CDR technique is still in development and will be complete with the addition of regression methods.
  • Improves the (sampling) performance of PEC (by a lot!) via fewer circuit conversions.
  • Adds PauliString object, the first change of several in the generalization of executors. This object is not yet used in any error mitigation pipelines but can be used as a stand-alone.

Additionally, this release

  • Fixes some CI components including uploading coverage from master and suppressing nightly Test PyPI uploads on forks.
  • Adds links to GitHub on README and RTD.

Special thanks to all contributors - @purva-thakre, @Aaron-Robertson, @andre-a-alves, @mstechly, @ckissane, @HaoTy, @briancylui, and @L-P-B - for your work on this release!

All Changes