Quantum computers are susceptible to these errors/noise because of physical disturbances. An example of this is if some molecule in the surrounding air were to bump or approach the qubit it would transfer some kinetic energy and maybe affect the state. Another example is if a qubit interferes with any adjacent qubit, if they "bump" into one another their ...
One simple way to do it is by defining a composite gate, like this:
def _decompose_(self, qubits):
q = qubits
return [MyGate.on(q), cirq.depolarize(p).on(q)]
If you want a depolarizing gate on every qubit at the end of every moment, you can do a noisy simulation:
Yes you can: When you build a noise model the noise is defined with respect to the name or label of gate objects, so you can use the labelto create multiple versions of a single gate but reference different errors in a noise model (NB: the transpiler strips away label information when it unrolls a gate not in the basis gates set).
Selective noise on ...
If you call execute with the parameter optimization_level set to 0, qiskit will not perform any circuit optimizations.
Your call should therefore be
job = execute(circ, simulator,
noise_model = noise_bit_flip)
The optimization level can be 0-3 inclusive depending on how much optimization you would like ...