qiskit-community / qiskit-ignis

Ignis (deprecated) provides tools for quantum hardware verification, noise characterization, and error correction.
Apache License 2.0
168 stars 160 forks source link

Error mitigation using multiple gates #192

Open dcmckayibm opened 5 years ago

dcmckayibm commented 5 years ago

Based on https://arxiv.org/abs/1801.03897

With open pulse we should eventually implement https://arxiv.org/abs/1805.04492

dcmckayibm commented 5 years ago

Oak Ridge agreed to tackle this

samanthavbarron commented 5 years ago

Regarding the Richardson extrapolation technique, my first thought was that it would be a part of Aqua instead of Ignis. But based on discussion with @rpooser it sounds like the idea was to have something like a RichardsonMitigator class inside of Ignis that can be passed to Aqua algorithms (or maybe even quantum instances in the same way measurement error mitigation is dealt with as per https://github.com/Qiskit/qiskit-aqua/blob/master/qiskit/aqua/quantum_instance.py#L66).

dcmckayibm commented 5 years ago

The ignis architecture is based on a module that creates circuits and then a class that fits the results of those circuits.

In this case, similar to tomography, you would pass in your circuit (that you want to perform error mitigation on) and then the ignis code would generate a new list of circuits with the appropriately repeated gates. Then the results of that would be be passed onto a fitter which would return the zero noise results.

Pseudo-code might look like my_err_mit_circuits = ignis.error_mit_circuits(my_circ, r=[1,3,5,7]) results = backend.execute(my_error_mit_circuits).results() err_mit_result = ignis.ErrMitFitter(results, r=[1,3,5,7])

rpooser commented 5 years ago

Ok this is good. We're on the same page and essentially are producing a module under that model.