Closed rmlarose closed 4 years ago
We could create a mitiq.noise.NoiseModel
or mitiq.converters.NoiseModel
or mitiq.simulators.NoiseModel
class that would mainly dispatch noise models and convert them, if the circuit type is changed during mitigation.
If we want to avoid adding extra layers, NoiseModel
would not be interacted with by the user directly, but he/she would change the underlying circuit properties.
Currently, noise models are contained in qiskit, cirq, pyquil. We could begin by focusing on the noise models that are supported by most and create an infrastructure that ports the noise together with the circuit. While the OSS landscape is full of intermediate representation converters, this feature is not present, that I am aware of.
noise.depolarizing_error
to begin with. While supporting noise models could be tricky and too cumbersome, what I'd support is anything that fits in a conversion table. Some care would need to be paid with regards to converting processes with the exact coupling constants, but this would be very useful as a user. We could begin with a conversion table between Depolarizing noise/channel and Amplitude noise. Happy to take this on me if we want to proceed.
Examples of how to do this could be added to the documentation of executors with #229
From one of the alpha workshop survey responses:
I agree supporting additional noise models beyond depolarizing would be convenient. If we agree, we can discuss how to organize this within the library. I haven't thought much about it, but it should be fairly easy by mimicing the way it is done for depolarizing noise with other channels.