コード例 #1
0
def test_estimate_parallel_readout_errors_zero_batch():
    qubits = cirq.LineQubit.range(10)
    with pytest.raises(ValueError, match='non-zero trials_per_batch'):
        _ = cirq.estimate_parallel_single_qubit_readout_errors(
            cirq.ZerosSampler(),
            qubits=qubits,
            repetitions=1000,
            trials=10,
            trials_per_batch=0)
コード例 #2
0
def test_estimate_parallel_readout_errors_bad_bit_string():
    qubits = cirq.LineQubit.range(4)
    with pytest.raises(ValueError, match='but was None'):
        _ = cirq.estimate_parallel_single_qubit_readout_errors(
            cirq.ZerosSampler(),
            qubits=qubits,
            repetitions=1000,
            trials=35,
            trials_per_batch=10,
            bit_strings=[[1] * 4],
        )
    with pytest.raises(ValueError, match='0 or 1'):
        _ = cirq.estimate_parallel_single_qubit_readout_errors(
            cirq.ZerosSampler(),
            qubits=qubits,
            repetitions=1000,
            trials=2,
            bit_strings=np.array([[12, 47, 2, -4], [0.1, 7, 0, 0]]),
        )
コード例 #3
0
def test_estimate_parallel_readout_errors_no_noise():
    qubits = cirq.LineQubit.range(10)
    sampler = cirq.Simulator()
    repetitions = 1000
    result = cirq.estimate_parallel_single_qubit_readout_errors(
        sampler, qubits=qubits, repetitions=repetitions)
    assert result.zero_state_errors == {q: 0 for q in qubits}
    assert result.one_state_errors == {q: 0 for q in qubits}
    assert result.repetitions == repetitions
    assert isinstance(result.timestamp, float)
コード例 #4
0
def test_estimate_parallel_readout_errors_batching():
    qubits = cirq.LineQubit.range(5)
    sampler = cirq.ZerosSampler()
    repetitions = 1000
    result = cirq.estimate_parallel_single_qubit_readout_errors(
        sampler, qubits=qubits, repetitions=repetitions, trials=35, trials_per_batch=10
    )
    assert result.zero_state_errors == {q: 0.0 for q in qubits}
    assert result.one_state_errors == {q: 1.0 for q in qubits}
    assert result.repetitions == repetitions
    assert isinstance(result.timestamp, float)
コード例 #5
0
def test_estimate_parallel_readout_errors_with_noise():
    qubits = cirq.LineQubit.range(5)
    sampler = NoisySingleQubitReadoutSampler(p0=0.1, p1=0.2, seed=1234)
    repetitions = 1000
    result = cirq.estimate_parallel_single_qubit_readout_errors(
        sampler, qubits=qubits, repetitions=repetitions, trials=40)
    for error in result.one_state_errors.values():
        assert 0.17 < error < 0.23
    for error in result.zero_state_errors.values():
        assert 0.07 < error < 0.13
    assert result.repetitions == repetitions
    assert isinstance(result.timestamp, float)
コード例 #6
0
def test_estimate_parallel_readout_errors_missing_qubits():
    qubits = cirq.LineQubit.range(4)

    result = cirq.estimate_parallel_single_qubit_readout_errors(
        cirq.ZerosSampler(),
        qubits=qubits,
        repetitions=2000,
        trials=1,
        bit_strings=np.array([[0] * 4]),
    )
    assert result.zero_state_errors == {q: 0 for q in qubits}
    # Trial did not include a one-state
    assert all(np.isnan(result.one_state_errors[q]) for q in qubits)
    assert result.repetitions == 2000
    assert isinstance(result.timestamp, float)