Describe the bug
Zero Noise Extrapolation (ZNE) is a quantum error mitigation technique that creates a few circuits with increasing amounts of noise in each circuit. Then it computes the expectation value of the observable and extrapolates backwards to the zero-noise limit.
I have noticed that the function get_noisy_circuit is used to artificially create noisy circuits by repeating some (U * U^dagger) pairs. It looks like this get_noisy_circuit(circuit, num_insertions, insertion_gate). The insertion_gate can either be RX or CNOT while num_insertion >= 1.
I've ran various scenarios:
When the circuit contains n number of CNOT gates, and we have insertion_gate = CNOT, each of the nCNOTs has an extra num_insertion (CNOT * CNOT)s appended. This is ok.
When the circuit contains n number of RX gates, and we have insertion_gate = RX, we expect to see num_insertion (RX * RX`^dagger) gates being appended. However, none appears.
When the circuit contains no RX or CNOT gates and insertion_gate = RX or insertion_gate = CNOT, we do not see num_insertion (RXRX^dagger) or num_insertion (CNOTCNOT) gates being appended.
Describe the bug Zero Noise Extrapolation (ZNE) is a quantum error mitigation technique that creates a few circuits with increasing amounts of noise in each circuit. Then it computes the expectation value of the observable and extrapolates backwards to the zero-noise limit.
I have noticed that the function
get_noisy_circuit
is used to artificially create noisy circuits by repeating some (U * U^dagger) pairs. It looks like thisget_noisy_circuit(circuit, num_insertions, insertion_gate)
. Theinsertion_gate
can either beRX
orCNOT
whilenum_insertion >= 1
.I've ran various scenarios:
n
number ofCNOT
gates, and we haveinsertion_gate = CNOT
, each of then
CNOTs
has an extranum_insertion
(CNOT
*CNOT
)s appended. This is ok.n
number ofRX
gates, and we haveinsertion_gate = RX
, we expect to seenum_insertion
(RX
* RX`^dagger) gates being appended. However, none appears.RX
orCNOT
gates andinsertion_gate = RX
orinsertion_gate = CNOT
, we do not seenum_insertion
(RX
RX
^dagger) ornum_insertion
(CNOT
CNOT
) gates being appended.Scenarios 2 and 3 appear to have some issue.
Code to reproduce scenarios 1, 2
Running this code gives this output:
Code to reproduce scenario 3
Running this code gives: