Description
Is your feature request related to a problem? Please describe.
We often like to test new protocols or features with random noise to see how it performs in simulation. It is fairly straightforward to generate realistic random noise for full/TP parameterized operations, using the depolarize
, rotate
, or kick
functions. However, we currently don't have a good tool for generating random CPTP operations that are parameterized by error generators.
Describe the solution you'd like
A function (maybe in lindbladtools
?) which can generate valid random CPTP maps parameterized by error generators. Ideal features include:
- being able to specify noise strengths for H, S, C, A sectors (CA may have to be tied together, and even SCA being tied together would be a start)
- what kind of distribution they are drawn from (normal makes sense for H, uniform makes more sense for SCA)
- different noise strengths based on weight or qubit support (maybe weight-2 should be smaller than weight-1, maybe one qubit is particularly bad)
Of course, the challenge is being able to provide these sorts of tunable parameters and ensuring that the SCA matrix is PSD such that the map is CPTP overall...
Describe alternatives you've considered
We've tried variants of this in the past, normally by sampling some matrices and using A@A.T
tricks to enforce the PSD constraint. Let's do this once correctly and put it in pyGSTi so we can stop rediscovering this every few months. :)