Ejemplo n.º 1
0
    def test_apply_to(self):
        sdm = MagicMock()
        sdm.hadamard = MagicMock()
        sdm.amp_ph_damping = MagicMock()
        sdm.apply_ptm = MagicMock()
        sdm.peak_measurement = MagicMock(return_value=(1, 0))
        sdm.project_measurement = MagicMock()

        c = circuit.Circuit()

        c.add_qubit(circuit.Qubit("A", 10, 20))
        c.add_gate(circuit.Hadamard("A", 0))
        c.add_gate(circuit.Hadamard("A", 10))

        with pytest.warns(UserWarning):
            c.add_gate(circuit.Measurement("A", 20, sampler=None))

        c.add_waiting_gates()

        c.order()

        c.apply_to(sdm)

        sdm.assert_has_calls([call.apply_ptm("A", ptm=ANY),
                              call.apply_ptm("A", ptm=ANY),
                              call.apply_ptm("A", ptm=ANY),
                              call.apply_ptm("A", ptm=ANY),
                              call.peak_measurement("A"),
                              call.project_measurement("A", 0)])
Ejemplo n.º 2
0
    def test_order_no_meas(self):
        c = circuit.Circuit()

        qb = circuit.Qubit("A", t1=10, t2=0)
        c.add_qubit(qb)

        c.add_gate(circuit.Hadamard("A", time=1))
        c.add_gate(circuit.Hadamard("A", time=0))

        c.order()

        assert len(c.gates) == 2
        assert c.gates[0].time == 0
Ejemplo n.º 3
0
def BellStateInitialize(qcirc):
    # Circuit for preparing the bell state.
    qcirc.add_qubit('0')
    qcirc.add_qubit('1')
    qcirc.add_qubit('2')
    qcirc.add_qubit('0p')
    qcirc.add_qubit('1p')
    qcirc.add_qubit('2p')

    qcirc.add_gate(qc.Hadamard('0', time=0))
    qcirc.add_gate(qc.Hadamard('1', time=0))
    qcirc.add_gate(qc.Hadamard('2', time=0))

    qcirc.add_gate(qc.CNOT('0p', '0', time=0.5))
    qcirc.add_gate(qc.CNOT('1p', '1', time=0.5))
    qcirc.add_gate(qc.CNOT('2p', '2', time=0.5))
    return None
Ejemplo n.º 4
0
    def test_add_waiting_full(self):
        c = circuit.Circuit()

        qb = circuit.Qubit("A", t1=10, t2=0)
        c.add_qubit(qb)

        c.add_gate(circuit.Hadamard("A", time=1))
        c.add_gate(circuit.Hadamard("A", time=0))

        assert len(c.gates) == 2

        c.add_waiting_gates()

        assert len(c.gates) == 3

        c.order()

        assert c.gates[1].time == 0.5
        assert c.gates[1].duration == 1.0
Ejemplo n.º 5
0
    def test_add_gates(self):
        c = circuit.Circuit()

        qb = circuit.VariableDecoherenceQubit(
            "A", base_t1=10, base_t2=10, t1s=[
                (10, 20, 10)], t2s=[
                (10, 20, 10)])
        c.add_qubit(qb)

        c.add_gate(circuit.Hadamard("A", time=10))
        c.add_gate(circuit.Hadamard("A", time=0))
        c.add_gate(circuit.Hadamard("A", time=20))

        c.add_waiting_gates()
        c.order()

        assert c.gates[1].time == 5
        assert c.gates[1].duration == 10

        assert c.gates[1].t1 == 10
        assert c.gates[3].t1 == 5
Ejemplo n.º 6
0
 def test_apply(self):
     sdm = MagicMock()
     sdm.apply_ptm = MagicMock()
     h = circuit.Hadamard("A", 7)
     h.apply_to(sdm)
     sdm.apply_ptm.assert_called_once_with("A", ptm=ANY)
Ejemplo n.º 7
0
 def test_init(self):
     h = circuit.Hadamard("A", 7)
     assert h.time == 7
     assert h.involves_qubit("A")
     assert not h.involves_qubit("B")
     assert not h.is_measurement