104 lines
4.5 KiB
Plaintext
104 lines
4.5 KiB
Plaintext
---
|
||
title: expval_meas_mitigator_circuits
|
||
description: API reference for qiskit.ignis.mitigation.expval_meas_mitigator_circuits
|
||
in_page_toc_min_heading_level: 1
|
||
python_api_type: function
|
||
python_api_name: qiskit.ignis.mitigation.expval_meas_mitigator_circuits
|
||
---
|
||
|
||
<span id="qiskit-ignis-mitigation-expval-meas-mitigator-circuits" />
|
||
|
||
# qiskit.ignis.mitigation.expval\_meas\_mitigator\_circuits
|
||
|
||
<Function id="qiskit.ignis.mitigation.expval_meas_mitigator_circuits" isDedicatedPage={true} github="https://github.com/qiskit-community/qiskit-ignis/tree/stable/0.5/qiskit/ignis/mitigation/expval/circuits.py" signature="expval_meas_mitigator_circuits(num_qubits, method='CTMP', labels=None)">
|
||
Generate measurement error mitigator circuits and metadata.
|
||
|
||
Use the [`ExpvalMeasMitigatorFitter`](qiskit.ignis.mitigation.ExpvalMeasMitigatorFitter "qiskit.ignis.mitigation.ExpvalMeasMitigatorFitter") class to fit the execution results to construct a calibrated expectation value measurement error mitigator.
|
||
|
||
**Parameters**
|
||
|
||
* **num\_qubits** (`int`) – the number of qubits to calibrate.
|
||
* **method** (`Optional`\[`str`]) – the mitigation method `'complete'`, `'tensored'`, or `'CTMP'`.
|
||
* **labels** (`Optional`\[`List`\[`str`]]) – Optional, custom labels to run for calibration. If None the method will determine the default label values.
|
||
|
||
**Returns**
|
||
|
||
**(circuits, metadata) the measurement error characterization**
|
||
|
||
circuits, and metadata for the fitter.
|
||
|
||
**Return type**
|
||
|
||
tuple
|
||
|
||
## Mitigation Method:
|
||
|
||
* The `'complete'` method will generate all $2^n$ computational basis states measurement circuits and fitting will return a [`CompleteExpvalMeasMitigator`](qiskit.ignis.mitigation.CompleteExpvalMeasMitigator "qiskit.ignis.mitigation.CompleteExpvalMeasMitigator"). This method should only be used for small numbers of qubits.
|
||
* The `'tensored'` method will generate two input state circuits of the all 0 and all 1 states on number of qubits unless custom labels are specified. Ftting will return a [`TensoredExpvalMeasMitigator`](qiskit.ignis.mitigation.TensoredExpvalMeasMitigator "qiskit.ignis.mitigation.TensoredExpvalMeasMitigator"). This method assumes measurement errors are uncorrelated between qubits.
|
||
* The `'CTMP'` method will generate $n+2$ input state circuits unless custom labels are specified. The default input states are the all 0 state, the all 1 state, and the $n$ state with a single qubit in the 1 state and all others in the 0 state. Ftting will return a [`CTMPExpvalMeasMitigator`](qiskit.ignis.mitigation.CTMPExpvalMeasMitigator "qiskit.ignis.mitigation.CTMPExpvalMeasMitigator").
|
||
|
||
**Example**
|
||
|
||
The following example shows calibrating a 5-qubit expectation value measurement error mitigator using the `'tensored'` method.
|
||
|
||
```python
|
||
from qiskit import execute
|
||
from qiskit.test.mock import FakeVigo
|
||
import qiskit.ignis.mitigation as mit
|
||
|
||
backend = FakeVigo()
|
||
num_qubits = backend.configuration().num_qubits
|
||
|
||
# Generate calibration circuits
|
||
circuits, metadata = mit.expval_meas_mitigator_circuits(
|
||
num_qubits, method='tensored')
|
||
result = execute(circuits, backend, shots=8192).result()
|
||
|
||
# Fit mitigator
|
||
mitigator = mit.ExpvalMeasMitigatorFitter(result, metadata).fit()
|
||
|
||
# Plot fitted N-qubit assignment matrix
|
||
mitigator.plot_assignment_matrix()
|
||
```
|
||
|
||
```python
|
||
<matplotlib.axes._subplots.AxesSubplot at 0x7fc2ddc3c710>
|
||
```
|
||
|
||

|
||
|
||
The following shows how to use the above mitigator to apply measurement error mitigation to expectation value computations
|
||
|
||
```python
|
||
from qiskit import QuantumCircuit
|
||
|
||
# Test Circuit with expectation value -1.
|
||
qc = QuantumCircuit(num_qubits)
|
||
qc.x(range(num_qubits))
|
||
qc.measure_all()
|
||
|
||
# Execute
|
||
shots = 8192
|
||
seed_simulator = 1999
|
||
result = execute(qc, backend, shots=8192, seed_simulator=1999).result()
|
||
counts = result.get_counts(0)
|
||
|
||
# Expectation value of Z^N without mitigation
|
||
expval_nomit, error_nomit = mit.expectation_value(counts)
|
||
print('Expval (no mitigation): {:.2f} ± {:.2f}'.format(
|
||
expval_nomit, error_nomit))
|
||
|
||
# Expectation value of Z^N with mitigation
|
||
expval_mit, error_mit = mit.expectation_value(counts,
|
||
meas_mitigator=mitigator)
|
||
print('Expval (with mitigation): {:.2f} ± {:.2f}'.format(
|
||
expval_mit, error_mit))
|
||
```
|
||
|
||
```python
|
||
Expval (no mitigation): -0.81 ± 0.01
|
||
Expval (with mitigation): -0.99 ± 0.01
|
||
```
|
||
</Function>
|
||
|