Skip to content

v0.32.0

Compare
Choose a tag to compare
@github-actions github-actions released this 19 Dec 19:11
3733bec

Version 0.32.0

Happy holidays, and happy (almost) new year!! ❄️☃️🎄🎊 This will be our last release of the year, and we'd like to thank everyone who has contributed to Mitiq over the past 12 months. We've accomplished so much in the way of error mitigation this year, and we couldn't have done it without the support and time given by the volunteers.
Thank you!

The calibrator logs have been revamped for to support result discovery and analysis. The Calibrator.run method now support two options: flat and cartesian to display the experiment results in either a linear fashion, or grid-like. Results here have been truncated for brevity.

>>> calibrator.run(log="flat")
┌──────────────────────────┬────────────────────────────────────┬────────────────────────────┐
│ benchmarkstrategyperformance                │
├──────────────────────────┼────────────────────────────────────┼────────────────────────────┤
│ Type: ghzTechnique: ZNE                     │ ✔                          │
│ Num qubits: 2Factory: LinearNoisy error: 0.04          │
│ Circuit depth: 2Scale factors: 1.0, 2.0, 3.0Mitigated error: 0.02      │
│ Two qubit gate count: 1Scale method: fold_gates_at_randomImprovement factor: 2.0    │
├──────────────────────────┼────────────────────────────────────┼────────────────────────────┤
│ Type: ghzTechnique: ZNE                     │ ✘                          │
│ Num qubits: 2Factory: LinearNoisy error: 0.04          │
│ Circuit depth: 2Scale factors: 1.0, 3.0, 5.0Mitigated error: 0.0658    │
│ Two qubit gate count: 1Scale method: fold_globalImprovement factor: 0.6076 │
├──────────────────────────┼────────────────────────────────────┼────────────────────────────┤
│ Type: ghzTechnique: ZNE                     │ ✘                          │
│ Num qubits: 2Factory: RichardsonNoisy error: 0.98          │
│ Circuit depth: 33Scale factors: 1.0, 3.0, 5.0Mitigated error: 1.03      │
│ Two qubit gate count: 14Scale method: fold_globalImprovement factor: 0.9515 │
└──────────────────────────┴────────────────────────────────────┴────────────────────────────┘
>>> calibrator.run(log="cartesian")
┌────────────────────────────────────┬────────────────────────────┬────────────────────────────┐
│ strategy\benchmarkType: ghzType: mirror               │
│                                    │ Num qubits: 2Num qubits: 2              │
│                                    │ Circuit depth: 2Circuit depth: 33          │
│                                    │ Two qubit gate count: 1Two qubit gate count: 14   │
├────────────────────────────────────┼────────────────────────────┼────────────────────────────┤
│ Technique: ZNE                     │ ✘                          │ ✘                          │
│ Factory: RichardsonNoisy error: 0.03Noisy error: 1.0           │
│ Scale factors: 1.0, 2.0, 3.0Mitigated error: 0.09Mitigated error: 1.03      │
│ Scale method: fold_globalImprovement factor: 0.3333Improvement factor: 0.9709 │
├────────────────────────────────────┼────────────────────────────┼────────────────────────────┤
│ Technique: ZNE                     │ ✘                          │ ✔                          │
│ Factory: RichardsonNoisy error: 0.03Noisy error: 1.0           │
│ Scale factors: 1.0, 3.0, 5.0Mitigated error: 0.0563Mitigated error: 0.97      │
│ Scale method: fold_globalImprovement factor: 0.5333Improvement factor: 1.0309 │
├────────────────────────────────────┼────────────────────────────┼────────────────────────────┤
│ Technique: ZNE                     │ ✘                          │ ✔                          │
│ Factory: LinearNoisy error: 0.03Noisy error: 1.0           │
│ Scale factors: 1.0, 3.0, 5.0Mitigated error: 0.0417Mitigated error: 0.9975    │
│ Scale method: fold_globalImprovement factor: 0.72Improvement factor: 1.0025 │
└────────────────────────────────────┴────────────────────────────┴────────────────────────────┘

New benchmarking circuits: mitiq.benchmarks now contains a function generate_random_clifford_t_circuit which does what it says on the tin. Special shoutout to new UF team member Farrokh Labib (@FarLab) for this contribution.

from mitiq.benchmarks import generate_random_clifford_t_circuit

clifft = generate_random_clifford_t_circuit(
    num_qubits=2,
    num_oneq_cliffords=5,
    num_twoq_cliffords=5,
    num_t_gates=5
)
print(clifft)
# 0: ───────────@───S───T───@───H───T───X───T───T───@───@───────
#               │           │           │           │   │
# 1: ───S───T───@───────────X───────────@───S───────@───X───S───

The Executor.run method now supports a single circuit instance in addition to a list for ease of use when working with a single circuit.

- executor.run([circuit])
+ executor.run(circuit)

Faster Tests! Working on Mitiq has never been easier to develop with a faster (by 36%) test suite.

📓 Documentation

This release contains quite a few documentation improvements, including

  1. New workflow images to elucidate the workflow for for using the mitiq.shadows module (available here)
  2. A reorganized API-doc which should be easier to navigate
  3. General clean up of the CDR user guide pages

Commits

📦 Dependency updates

🧑‍💻 Dev Dependency updates