Skip to main content

Mitiq is an open source toolkit for implementing error mitigation techniques on most current intermediate-scale quantum computers.

Project description

Mitiq logo

build Documentation Status codecov PyPI version arXiv Downloads Repository Unitary Fund Discord Chat

Mitiq is a Python toolkit for implementing error mitigation techniques on quantum computers.

Current quantum computers are noisy due to interactions with the environment, imperfect gate applications, state preparation and measurement errors, etc. Error mitigation seeks to reduce these effects at the software level by compiling quantum programs in clever ways.

Want to know more? Check out our documentation and chat with us on Discord.

Quickstart

Installation

pip install mitiq

Example

Define a function which inputs a circuit and returns an expectation value you want to compute, then use Mitiq to mitigate errors.

import cirq
from mitiq import zne, benchmarks


def execute(circuit, noise_level=0.005):
    """Returns Tr[ρ |0⟩⟨0|] where ρ is the state prepared by the circuit
    with depolarizing noise."""
    noisy_circuit = circuit.with_noise(cirq.depolarize(p=noise_level))
    return (
        cirq.DensityMatrixSimulator()
        .simulate(noisy_circuit)
        .final_density_matrix[0, 0]
        .real
    )


circuit = benchmarks.generate_rb_circuits(n_qubits=1, num_cliffords=50)[0]

true_value = execute(circuit, noise_level=0.0)      # Ideal quantum computer
noisy_value = execute(circuit)                      # Noisy quantum computer
zne_value = zne.execute_with_zne(circuit, execute)  # Noisy quantum computer + Mitiq

print(f"Error w/o  Mitiq: {abs((true_value - noisy_value) / true_value):.3f}")
print(f"Error w Mitiq:    {abs((true_value - zne_value) / true_value):.3f}")

Sample output:

Error w/o  Mitiq: 0.264
Error w Mitiq:    0.073

Calibration

Unsure which error mitigation technique or parameters to use? Try out the calibration module demonstrated below to help find the best parameters for your particular backend!

See our guides and examples for more explanation, techniques, and benchmarks.

Quick Tour

Error mitigation techniques

Technique Documentation Mitiq module Paper Reference(s)
Zero-noise extrapolation ZNE mitiq.zne 1611.09301
1612.02058
1805.04492
Probabilistic error cancellation PEC mitiq.pec 1612.02058
1712.09271
1905.10135
(Variable-noise) Clifford data regression CDR mitiq.cdr 2005.10189
2011.01157
Digital dynamical decoupling DDD mitiq.ddd 9803057
1807.08768
Readout-error mitigation REM mitiq.rem 1907.08518
2006.14044

See our roadmap for additional candidate techniques to implement. If there is a technique you are looking for, please file a feature request.

Interface

We refer to any programming language you can write quantum circuits in as a frontend, and any quantum computer / simulator you can simulate circuits in as a backend.

Supported frontends

Cirq Qiskit pyQuil Braket PennyLane Qibo
Cirq logo Qiskit logo Rigetti logo AWS logo    PennyLane logo    Qibo logo

Note: Cirq is a core requirement of Mitiq and is installed when you pip install mitiq.

Supported backends

You can use Mitiq with any backend you have access to that can interface with supported frontends.

Citing Mitiq

If you use Mitiq in your research, please reference the Mitiq whitepaper using the bibtex entry found in CITATION.bib.

A list of papers citing Mitiq can be found on Google Scholar / Semantic Scholar.

License

GNU GPL v.3.0.

Contributing

We welcome contributions to Mitiq including bug fixes, feature requests, etc. To get started, check out our contribution guidelines and/or documentation guidelines.

Contributors ✨

Thank you to all of the wonderful people that have made this project possible. Non-code contributors are also much appreciated, and are listed here. Thank you to

Contributions of any kind are welcome!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mitiq-0.35.0.tar.gz (129.5 kB view details)

Uploaded Source

Built Distribution

mitiq-0.35.0-py3-none-any.whl (167.2 kB view details)

Uploaded Python 3

File details

Details for the file mitiq-0.35.0.tar.gz.

File metadata

  • Download URL: mitiq-0.35.0.tar.gz
  • Upload date:
  • Size: 129.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.8

File hashes

Hashes for mitiq-0.35.0.tar.gz
Algorithm Hash digest
SHA256 cac188fac79dde2cd9b86b0ae284905b7522d3e6febf8c4d60a5ff715f0b45db
MD5 09ae35cbc9d39b441538705600320d81
BLAKE2b-256 b62f6d064cf2eb187caaff99cf3726be7a7293819fd6eb2d41ef838c1d95c72e

See more details on using hashes here.

File details

Details for the file mitiq-0.35.0-py3-none-any.whl.

File metadata

  • Download URL: mitiq-0.35.0-py3-none-any.whl
  • Upload date:
  • Size: 167.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.8

File hashes

Hashes for mitiq-0.35.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0499092d24067611f48655affa536b25aac162fc910960bb66bed69230f23685
MD5 5aa80a1e2727ca0675aacd6cf39ffa04
BLAKE2b-256 755e17f2231189e5f89e62f3d22b3bf93748c03ea42791f4fb247140ccf5cd64

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page