qiskit-ignis
qiskit-ignis copied to clipboard
Error mitigation using multiple gates
Based on https://arxiv.org/abs/1801.03897
With open pulse we should eventually implement https://arxiv.org/abs/1805.04492
Oak Ridge agreed to tackle this
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).
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])
Ok this is good. We're on the same page and essentially are producing a module under that model.