コード例 #1
0
ファイル: noise_models_test.py プロジェクト: vtomole/Cirq
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)
コード例 #2
0
ファイル: noise_models_test.py プロジェクト: vtomole/Cirq
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)
コード例 #3
0
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)
コード例 #4
0
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,