Exemplo n.º 1
0
def test_init_with_cirq_circuit():
    qreg = cirq.LineQubit.range(2)
    circ = cirq.Circuit(cirq.H.on(qreg[0]), cirq.CNOT.on(*qreg))
    real = np.zeros(shape=(16, 16))
    noisy_op = NoisyOperation(circ, real)

    assert isinstance(noisy_op._ideal, cirq.Circuit)
    assert _equal(noisy_op.ideal_circuit(), circ, require_qubit_equality=True)
    assert set(noisy_op.qubits) == set(qreg)
    assert np.allclose(noisy_op.ideal_unitary, cirq.unitary(circ))
    assert np.allclose(noisy_op.real_matrix, real)
    assert noisy_op.real_matrix is not real
Exemplo n.º 2
0
def test_init_with_pyquil_program():
    circ = pyquil.Program(pyquil.gates.H(0), pyquil.gates.CNOT(0, 1))

    cirq_qreg = cirq.LineQubit.range(2)
    cirq_circ = cirq.Circuit(cirq.H.on(cirq_qreg[0]), cirq.CNOT.on(*cirq_qreg))

    real = np.zeros(shape=(16, 16))
    noisy_op = NoisyOperation(circ, real)
    assert isinstance(noisy_op._ideal, cirq.Circuit)
    assert _equal(noisy_op._ideal, cirq_circ)

    assert noisy_op.ideal_circuit() == circ
    assert noisy_op._native_ideal == circ
    assert noisy_op._native_type == "pyquil"

    assert np.allclose(noisy_op.ideal_unitary, cirq.unitary(cirq_circ))
    assert np.allclose(noisy_op.real_matrix, real)
    assert noisy_op.real_matrix is not real
Exemplo n.º 3
0
def test_unknown_real_matrix():
    qreg = qiskit.QuantumRegister(2)
    circ = qiskit.QuantumCircuit(qreg)
    _ = circ.h(qreg[0])
    _ = circ.cnot(*qreg)

    cirq_qreg = cirq.LineQubit.range(2)
    cirq_circ = cirq.Circuit(cirq.H.on(cirq_qreg[0]), cirq.CNOT.on(*cirq_qreg))

    noisy_op = NoisyOperation(circ)
    assert isinstance(noisy_op._ideal, cirq.Circuit)
    assert _equal(noisy_op._ideal, cirq_circ)

    assert noisy_op.ideal_circuit() == circ
    assert noisy_op._native_ideal == circ
    assert noisy_op._native_type == "qiskit"

    assert np.allclose(noisy_op.ideal_unitary, cirq.unitary(cirq_circ))

    with pytest.raises(ValueError, match="Real matrix is unknown."):
        _ = noisy_op.real_matrix
Exemplo n.º 4
0
def test_init_with_qiskit_circuit():
    qreg = qiskit.QuantumRegister(2)
    circ = qiskit.QuantumCircuit(qreg)
    _ = circ.h(qreg[0])
    _ = circ.cnot(*qreg)

    cirq_qreg = cirq.LineQubit.range(2)
    cirq_circ = cirq.Circuit(cirq.H.on(cirq_qreg[0]), cirq.CNOT.on(*cirq_qreg))

    real = np.zeros(shape=(16, 16))
    noisy_op = NoisyOperation(circ, real)
    assert isinstance(noisy_op._ideal, cirq.Circuit)
    assert _equal(noisy_op._ideal, cirq_circ)

    assert noisy_op.ideal_circuit() == circ
    assert noisy_op._native_ideal == circ
    assert noisy_op._native_type == "qiskit"

    assert np.allclose(noisy_op.ideal_unitary, cirq.unitary(cirq_circ))
    assert np.allclose(noisy_op.real_matrix, real)
    assert noisy_op.real_matrix is not real