0
$\begingroup$

I am trying to play with NoiseModel of qiskit, and I noticed that error on id gate is not giving any error results, while error on the measurement (or other gates) does give an error:

def get_noise_model(p_err):
    error_gate1 = pauli_error([("X", p_err / 2), ("Z", p_err / 2), ("I", 1 - p_err)])
    noise_model = NoiseModel()
    noise_model.add_all_qubit_quantum_error(error_gate1, "id")
    print(error_gate1)
    return noise_model

qc = QuantumCircuit(2, 2)
qc.id(0)
qc.measure([0, 1], [0, 1])

results = (execute(qc,Aer.get_backend("aer_simulator"),noise_model=get_noise_model(0.2),shots=2048).result().get_counts())

plot_histogram(results)

Histogram: enter image description here

And changing to :

noise_model.add_all_qubit_quantum_error(error_gate1, "measure")

gives that: enter image description here

Why is that happening? If I perform noisy id gate

imports needed:

from qiskit.visualization import plot_histogram
from qiskit.providers.aer.noise import NoiseModel
from qiskit.providers.aer.noise.errors import pauli_error
from qiskit import QuantumCircuit, execute , Aer
$\endgroup$

1 Answer 1

1
$\begingroup$

By default execute function sets optimization_level value to $1$ which leads to some optimizations such as removing ID gates.

Just set optimization_level to $0$ to override this behavior:

results = (execute(qc,Aer.get_backend("aer_simulator"),noise_model=get_noise_model(0.2),optimization_level=0,shots=2048).result().get_counts())

The result should look like:

enter image description here

$\endgroup$
1
  • $\begingroup$ Thank you so much! It worked $\endgroup$
    – Ron Cohen
    Jan 24, 2022 at 8:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.