def test_readout_noise_after_moment(): program = cirq.Circuit() qubits = cirq.LineQubit.range(3) program.append([ cirq.H(qubits[0]), cirq.CNOT(qubits[0], qubits[1]), cirq.CNOT(qubits[1], qubits[2]) ]) program.append( [ cirq.measure(qubits[0], key='q0'), cirq.measure(qubits[1], key='q1'), cirq.measure(qubits[2], key='q2'), ], strategy=cirq.InsertStrategy.NEW_THEN_INLINE, ) # Use noise model to generate circuit depol_noise = ccn.DepolarizingNoiseModel(depol_prob=0.01) readout_noise = ccn.ReadoutNoiseModel(bitflip_prob=0.05) noisy_circuit = cirq.Circuit(depol_noise.noisy_moments(program, qubits)) noisy_circuit = cirq.Circuit( readout_noise.noisy_moments(noisy_circuit, qubits)) # Insert channels explicitly true_noisy_program = cirq.Circuit() true_noisy_program.append([cirq.H(qubits[0])]) true_noisy_program.append( [ cirq.DepolarizingChannel(0.01).on(q).with_tags(ops.VirtualTag()) for q in qubits ], strategy=cirq.InsertStrategy.NEW_THEN_INLINE, ) true_noisy_program.append([cirq.CNOT(qubits[0], qubits[1])]) true_noisy_program.append( [ cirq.DepolarizingChannel(0.01).on(q).with_tags(ops.VirtualTag()) for q in qubits ], strategy=cirq.InsertStrategy.NEW_THEN_INLINE, ) true_noisy_program.append([cirq.CNOT(qubits[1], qubits[2])]) true_noisy_program.append( [ cirq.DepolarizingChannel(0.01).on(q).with_tags(ops.VirtualTag()) for q in qubits ], strategy=cirq.InsertStrategy.NEW_THEN_INLINE, ) true_noisy_program.append([ cirq.BitFlipChannel(0.05).on(q).with_tags(ops.VirtualTag()) for q in qubits ]) true_noisy_program.append([ cirq.measure(qubits[0], key='q0'), cirq.measure(qubits[1], key='q1'), cirq.measure(qubits[2], key='q2'), ]) assert_equivalent_op_tree(true_noisy_program, noisy_circuit)
def test_depol_noise_prepend(): noise_model = ccn.DepolarizingNoiseModel(depol_prob=0.005, prepend=True) qubits = cirq.LineQubit.range(2) moment = cirq.Moment([cirq.X(qubits[0]), cirq.Y(qubits[1])]) noisy_mom = noise_model.noisy_moment(moment, system_qubits=qubits) assert len(noisy_mom) == 2 assert noisy_mom[1] == moment for g in noisy_mom[0]: assert isinstance(g.gate, cirq.DepolarizingChannel)
def test_depol_noise(): noise_model = ccn.DepolarizingNoiseModel(depol_prob=0.005) qubits = cirq.LineQubit.range(2) moment = cirq.Moment([ cirq.X(qubits[0]), cirq.Y(qubits[1]), ]) noisy_mom = noise_model.noisy_moment(moment, system_qubits=qubits) assert len(noisy_mom) == 2 assert noisy_mom[0] == moment for g in noisy_mom[1]: assert cirq.op_gate_of_type(g, cirq.DepolarizingChannel)
import cirq import cirq.contrib.noise_models as ccn import recirq.quantum_chess.enums as enums import recirq.quantum_chess.move as move import recirq.quantum_chess.quantum_board as qb import recirq.quantum_chess.bit_utils as u from recirq.quantum_chess.test_utils import ( assert_sample_distribution, assert_samples_in, assert_this_or_that, assert_prob_about, assert_fifty_fifty, ) NOISY_SAMPLER = cirq.DensityMatrixSimulator(noise=ccn.DepolarizingNoiseModel( depol_prob=0.002)) BIG_CIRQ_BOARDS = ( qb.CirqBoard(0, error_mitigation=enums.ErrorMitigation.Error), qb.CirqBoard(0, device=cirq.google.Sycamore, error_mitigation=enums.ErrorMitigation.Error), ) ALL_CIRQ_BOARDS = BIG_CIRQ_BOARDS + ( qb.CirqBoard(0, device=cirq.google.Sycamore23, error_mitigation=enums.ErrorMitigation.Error), qb.CirqBoard(0, sampler=NOISY_SAMPLER, device=cirq.google.Sycamore,