Selecting Parameters for Error Diagnostics (Advanced)
The introductory Selecting Parameters for Error Diagnostics tutorial covers the basic needs of TrueQ™’s error diagnostics protocols. Here we will explore some of the more advanced customization options for these methods. The table below shows which of TrueQ™’s error diagnostic protocols use which arguments.








Special Arguments 


X 
X 
X 
X 
X 
X 
X 


X 
X 
X 


X 
X 
X 
X 
X 
X 

X 
X 
X 
X 
X 
X 


X 
X 
X 
X 

X 
X 
X 

X 
X 
X 
X 
The n_random_cycles
and n_circuits
arguments
These two parameters are used by every diagnostic protocol and are covered in Selecting Parameters for Error Diagnostics.
The cycles
argument
Many of TrueQ™’s error diagnostic protocols characterize the noise that arises as a
result of implementing a specific Cycle
. For these protocols,
cycles
tells the protocol which cycle to characterize.
The n_decays
argument
The n_decays
argument specifies the number of randomly sampled Paulis for which a
protocol will estimate the expectation value. These expectation values will then be
used to approximate the parameter of interest. Increasing n_decays
improves the
accuracy of the estimated parameter, but also increases the overhead of the protocol.
Note
Setting n_decays
lower than:
\(\textrm{min}(20, 4\: \times\)
n_qubits
\( 1)\) may result in a biased estimate of the process fidelity.\(\textrm{min}(40, 4\: \times\)
n_qubits
\( 1)\) may result in a biased estimate of the probability of nonidentity errors.
The twirl
argument
The twirl
argument accepts a Twirl
object to tell a
diagnostic (or suppression) protocol which twirling group to select random gates from
when constructing circuits to average over. For some protocols, the twirling group is
implicit or irrelevant to the protocol and therefore this argument only pertains to a
subset of TrueQ™’s protocols and is always an optional argument. Below, we give a
breakdown of which protocols use which twirling groups by default and which are
customizable.
Twirling with respect to the Pauli group projects a channel onto the Pauli basis, that is, removes the nonPauli part of the noise. Twirling with respect to the Clifford group results in a depolarizing channel, that is a Pauli channel for which the probability of error is equal for any of the Pauli errors. For this reason, the error diagnostic protocols which return a single parameter of interest in the form of an average fidelity for the twirling group generally use the Clifford group, since twirling by the Clifford group makes the effects from different group elements uniform. By the same reasoning, error diagnostic protocols which are designed to isolate the effects or probabilities of specific errors typically use the Pauli group.
Another common reason to define a custom twirl is to include idling qubits in the analysis, as shown in Example: Running KNR.
The propagate_correction
argument
Some error diagnostic protocols compile gates into the circuit with the aim of
replicating a given effective operation despite the addition of random gates. In these
protocols, additional correction gates are compiled into the circuit to offset the
random gates to ensure that the net effect of the compilation preserves the desired
operation. The propagate_correction
argument tells TrueQ™ whether to propagate
these additional correction gates to the end of the circuit rather than compiling them
into neighbouring cycles. propagate_correction
is set to False
by default.
The compiled_pauli
argument
The compiled_pauli
argument allows users to customize a change of basis that
happens right before measurement. This argument accepts either a string of Paulis to
compile onto each qubit in the cycle preceding a measurement operation or a boolean
value, which tells TrueQ™ whether to compile a random Pauli gate onto each qubit in
the cycle preceding measurement. Applying random Pauli operators to a
CircuitCollection
before measurement effectively applies a Pauli
twirl to any noise on the measurement operations. This has the effect of stabilizing
the statistics of the diagnostic protocols, and thereby improves the accuracy of the
parameter estimates. For this reason, compiled_pauli
is set to True
by
default.
The Paulis that are compiled into the cycle before the measurement are accounted for when results are fitted. That is, if a Pauli is compiled in before the measurement which will change the outcome of the measurement, the fitting function for the diagnostic tool being applied will modify the fitting to offset the change.
The labels
argument
Protocols which do not characterize a specific cycle, but instead an empty cycle or
readout take labels
as an argument to tell the protocol which subsystems to
target. That is, if you want to target the qubit labeled 0, set labels = 0
. To
characterize noise on qubits 0 and 1 independently, set labels = [0, 1]
. If you
want to characterize the joint pair containing qubits 0 and 1, and qubit 2
independently, you would set labels = [[0, 1], 2]
.