Skip to main content
IBM Quantum Platform

Qiskit mitigation release notes


0.2.0

New Features

  • Gate folding now supports most two-qubit gates.

  • Allow filter box types in the find_unique_layers function of the various mitigation classes.

  • Add new functions to the PEC class - PEC.generate_slc_bounds_computation_input() and PEC.set_slc_local_scales(), which allow integrating shaded light-cones bounds into the PEC mitigation in order to reduce the sampling overhead of the mitigation in the price of tolerating some pre-determined bias in the result.

  • Added the trim_measurements argument to the prepare methods of MitigationTask, PEC, PEA and GateFolding. When it is True, the task measures only the qubits that have instructions on them or are in the support of the observables, and the measured qubits are stored in the meas_qubits attribute of the task. Every task finds its own measured qubits, so tasks with different support can be combined in one program. The default is False, which keeps measuring all the qubits of the circuit as before.

    When several trimmed tasks share a TREX instance, the TREX calibration measures the union of the qubits measured by the tasks. A task that does not trim its measurements contributes all of its qubits. The calibration register spans the qubits 0 to the highest measured qubit, so that column i is always circuit qubit i, but qubits that no task measures are not measured.

    When twirling_strategy="all" is combined with trim_measurements=True, a UserWarning is issued because all qubits are active under that strategy and trimming therefore has no effect.

  • Added the observables argument to find_combined_unique_layers() and to find_unique_layers of the mitigation tasks, to find the unique layers of circuits with trimmed measurements. Trimming changes the boxing of the circuit, so pass observables to the layer finder if and only if trim_measurements=True is passed to prepare, and pass the same observables. Noise learned with a different choice is not found by PEC.prepare and PEA.prepare, which raise a ValueError about the missing layer.

  • Added the trex argument to find_combined_unique_layers() and to find_unique_layers of the mitigation tasks. It controls whether the boxing options that prepare adds when a TREX is used (measurement boxes annotated for all qubits) are added when finding the layers. In find_unique_layers the default trex=None adds them if and only if the task has a TREX. In find_combined_unique_layers(), trex is a bool (default False) that finds the layers as if all the tasks share a TREX, ignoring the TREX of the given tasks. With trex=True the measurement layer of the TREX calibration circuit is also returned, exactly as TREX.prepare creates it (without noise injection), in addition to the measurement layers of the individual circuits. The boxing options of the calibration circuit are given by the new trex_custom_boxing_options argument, which are the options passed to TREX.prepare, and are independent of the custom_boxing_options of the tasks.

  • find_combined_unique_layers() issues a UserWarning when box_types is "measurement" or "all", trex is False and at least one of the tasks in mitigation_types has a TREX. The measurement boxes are then found without the boxing options that prepare adds when a TREX is used, so they do not match the measurement boxes of the tasks prepared with TREX.

Upgrade Notes

  • The programs created by MitigationTask, PEC, PEA and GateFolding now save the version "0.2" in their passthrough data, together with meas_qubits and circuit_num_qubits. Older versions of the library cannot post-process them. Programs created with version "0.1" can still be loaded and post-processed.

  • TREX now registers a task only at the end of the task’s prepare, so a task whose preparation failed no longer remains connected to the TREX instance and no longer widens its calibration.

Deprecation Notes

  • Support for Python 3.10 will be dropped in the next release since it reached its end-of-life.

Bug Fixes

  • Fixed a bug in the commutation check between observable terms and measurement bases (notably for terms containing Y) which caused incorrect computations in some scenarios.

  • Fixed PEC.postprocess() failing with Results must contain 'pauli_signs' for a circuit with no noisy layers, such as one without entangling gates. Such a circuit has no noise to cancel, so its gamma factor is 1 and its result has no pauli_signs; it is now post-processed as a regular twirled result. A missing pauli_signs with any other gamma still raises. See #33.


0.1.1

Prelude

This is the first release of Qiskit Mitigation, a package for handling noise in quantum computations. It contains a set of techniques that can be used to build advanced or customized error mitigation pipelines directly with samplomatic.

Deprecation Notes

  • Post processing TREX calibration circuit with a register name of _trex_cal is deprecated and will not be supported in future versions.

Bug Fixes

  • Fixed issue where applying TREX on multiple tasks with different number of qubits raised an error.

Other Notes

  • The classical register name of the TREX calibration circuit was changed from _trex_cal to _meas to align with the register names of the rest of the mitigation methods.
Was this page helpful?
Report a bug, typo, or request content on GitHub.