If we want to model crosstalk in a QEC circuit using the leaky simulator and need to apply a generalized Pauli channel (GPC) to pairs of neighboring qubits. The idea would be to bind the channel to a two-qubit identity gate, for example:
"""
s = leaky.Simulator(4)
channel_2q = leaky.LeakyPauliChannel(is_single_qubit_channel=False)
channel_2q.add_transition(0x00, 0x10, 0, 1.0)
s.bind_leaky_channel(leaky.Instruction("I2", [0,1]), channel_2q)
s.do(leaky.Instruction("I2", [0, 1]))
"""
However, Stim does not recognize the "I2" instruction (two-qubit identity) and throws an error.
My Questions:
-
Is there a natural way to define a two-qubit identity gate in Stim that would serve as a dummy operation to attach the GPC?
-
Alternatively, we could directly apply " s.apply_2q_leaky_pauli_channel([0, 1], channel_2q)". But this doesn't support parallel application of channels on disjoint qubit pairs, which limits running speed in larger circuits. How to solve this problem ?
If we want to model crosstalk in a QEC circuit using the leaky simulator and need to apply a generalized Pauli channel (GPC) to pairs of neighboring qubits. The idea would be to bind the channel to a two-qubit identity gate, for example:
"""
s = leaky.Simulator(4)
channel_2q = leaky.LeakyPauliChannel(is_single_qubit_channel=False)
channel_2q.add_transition(0x00, 0x10, 0, 1.0)
s.bind_leaky_channel(leaky.Instruction("I2", [0,1]), channel_2q)
s.do(leaky.Instruction("I2", [0, 1]))
"""
However, Stim does not recognize the "I2" instruction (two-qubit identity) and throws an error.
My Questions:
Is there a natural way to define a two-qubit identity gate in Stim that would serve as a dummy operation to attach the GPC?
Alternatively, we could directly apply " s.apply_2q_leaky_pauli_channel([0, 1], channel_2q)". But this doesn't support parallel application of channels on disjoint qubit pairs, which limits running speed in larger circuits. How to solve this problem ?