Random Channels

Measurements

Juqst.fidelityFunction
returns the fidelity of the channel (in PauliLiouville basis)
Juqst.unitarityFunction
returns the unitarity of the channel (PauliLiouville basis)
Juqst.unitarityPercentFunction
A given fidelity has a minimum unitarity that it can have
(so perfect fidelity = 1 = unitarity)
This shows as a percentage how much the unitarity of the channel
lies between the minimum and the maximum (always 1)

Creation

Juqst.genChannelFunction
genChannel(r1,sm,sv,r2)
Rotate the sigma channel randomly to generate an arbitrary channel
r1 represents a rotation. The elements of a vector of three normally distributed elements are multiplied by this and used as an XZX rotation. For high fidelity channels this will be small.
sm, represents the diagonal channel. This is the mean. High fidelity channels will have this close to 1.
sv, represents the variance in the diagonal channel.
r2, like r1.

For example randomFidelityNoise is defined as   genChannel(0.06,0.998,0.04,0.06)
whereas the noisier randomMeasureNoise is       genChannel(0.05,0.98,0.15,0.05)
Juqst.randomPrepNoiseFunction
Helper function to generate typical, lower fidelity channel.
I use it to simulate a state preparation channel.
Juqst.randomMeasureNoiseFunction
Helper function to generate typical, lower fidelity channel.
I typically use it to simulate measurement error.
Juqst.genChannelMapFunction
function genChannelMap(f)
Simple helper function - designed to help generate a map of a specific fidelity (supplied parameter).
Just generates random channels until you get one of the correct fidelity $\pm 0.0001$.
In general though you would want to rewrite this to give genChannel
parameters that will result in random channels that often bracket the desired fidelity
May take a long time if the parameters are far from the types of channels generated
by randomFidelityNoise.