コード例 #1
0
def test_happy_case(qubits):
    criteria = QubitInitializationCriteria(qubits=qubits)
    assert criteria.applicable_key_types() == [CriteriaKey.QUBIT]
    if qubits is None:
        assert CriteriaKeyResult.ALL == criteria.get_keys(CriteriaKey.QUBIT)
    else:
        assert 1 in criteria.get_keys(CriteriaKey.QUBIT)
コード例 #2
0
def test_serialization(qubits):
    test_criteria = QubitInitializationCriteria(qubits=qubits)
    serialized_criteria = test_criteria.to_dict()
    assert serialized_criteria["__class__"] == "QubitInitializationCriteria"
    assert "qubits" in serialized_criteria
    deserialized_criteria = QubitInitializationCriteria.from_dict(
        serialized_criteria)
    assert test_criteria == deserialized_criteria
コード例 #3
0
def test_apply():
    noise_model = (NoiseModel().add_noise(PauliChannel(
        0.01, 0.02, 0.03), GateCriteria(Gate.I, [0, 1])).add_noise(
            Depolarizing(0.04), GateCriteria(Gate.H)).add_noise(
                TwoQubitDepolarizing(0.05),
                GateCriteria(Gate.CNot, [0, 1])).add_noise(
                    PauliChannel(0.06, 0.07, 0.08),
                    GateCriteria(Gate.H, [0, 1])).add_noise(
                        Depolarizing(0.10),
                        UnitaryGateCriteria(h_unitary(), 0)).add_noise(
                            Depolarizing(0.06),
                            ObservableCriteria(Observable.Z, 0)).add_noise(
                                Depolarizing(0.09),
                                QubitInitializationCriteria(0)))
    layer1 = Circuit().h(0).cnot(0, 1).sample(Observable.Z(), 0)
    layer2 = Circuit().unitary([0], h_unitary().to_matrix())
    circuit = layer1 + layer2
    noisy_circuit_from_circuit = noise_model.apply(circuit)
    expected_circuit = (Circuit().depolarizing(0, 0.09).h(0).depolarizing(
        0, 0.04).pauli_channel(0, 0.06, 0.07, 0.08).cnot(
            0, 1).two_qubit_depolarizing(0, 1, 0.05).unitary(
                [0],
                h_unitary().to_matrix()).depolarizing(
                    0, 0.10).apply_readout_noise(Depolarizing(0.06),
                                                 0).sample(Observable.Z(), 0))
    assert noisy_circuit_from_circuit == expected_circuit
コード例 #4
0
def test_filter(gate, qubit, noise, noise_type, expected_length):
    noise_model = (NoiseModel().add_noise(PauliChannel(
        0.01, 0.02, 0.03), GateCriteria(Gate.I, [0, 1])).add_noise(
            Depolarizing(0.04), GateCriteria(Gate.H)).add_noise(
                Depolarizing(0.05), GateCriteria(Gate.CNot, [0, 1])).add_noise(
                    PauliChannel(0.06, 0.07, 0.08),
                    GateCriteria(Gate.H, [0, 1])).add_noise(
                        Depolarizing(0.09), GateCriteria(None, 0)).add_noise(
                            Depolarizing(0.10),
                            QubitInitializationCriteria([0, 1])))
    result_model = noise_model.from_filter(qubit=qubit, gate=gate, noise=noise)
    assert len(result_model.instructions) == expected_length
コード例 #5
0
                                  0, 0.01).cnot(0, 1),
        ),
    ],
)
def test_gate_noise(noise_model, input_circuit, expected_circuit):
    result_circuit = noise_model.apply(input_circuit)
    assert result_circuit == expected_circuit


@pytest.mark.parametrize(
    "noise_model, input_circuit, expected_circuit",
    [
        (
            # model
            NoiseModel().add_noise(Depolarizing(0.01),
                                   QubitInitializationCriteria()),
            # input circuit
            Circuit().h(0).cnot(0, 1),
            # expected circuit has noise on both qubits
            Circuit().depolarizing(0, 0.01).depolarizing(1, 0.01).h(0).cnot(
                0, 1),
        ),
        (
            # model
            NoiseModel().add_noise(Depolarizing(0.01),
                                   QubitInitializationCriteria(range(4))),
            # input circuit
            Circuit().h(0).cnot(0, 1),
            # expected circuit has noise on both qubits
            Circuit().depolarizing(0, 0.01).depolarizing(1, 0.01).h(0).cnot(
                0, 1),
コード例 #6
0
def test_representation():
    criteria = QubitInitializationCriteria(qubits=range(4))
    str_representation = criteria.__repr__()
    assert str_representation == "QubitInitializationCriteria(qubits={0, 1, 2, 3})"
コード例 #7
0
def test_invalid_params(qubits):
    QubitInitializationCriteria(qubits=qubits)
コード例 #8
0
def test_matcher(qubits, input_qubits, expected_result):
    criteria = QubitInitializationCriteria(qubits=qubits)
    result = criteria.qubit_intersection(input_qubits)
    assert result == expected_result
コード例 #9
0
def test_get_keys_for_unknown_keytypes():
    criteria = QubitInitializationCriteria(qubits=0)
    result = criteria.get_keys(CriteriaKey.UNITARY_GATE)
    assert len(result) == 0