Example #1
0
def test_measurement_with_output_bit():
    c = circuit.Circuit()
    c.add_qubit("A")

    c.add_qubit("O")
    c.add_qubit("O2")

    c.add_rotate_y("A", time=0, angle=np.pi / 2)

    sampler = circuit.selection_sampler(1)
    c.add_measurement("A", time=1, sampler=sampler, output_bit="O")

    c.add_rotate_y("A", time=3.5, angle=np.pi / 2)

    sampler = circuit.selection_sampler(1)
    c.add_measurement("A", time=4, sampler=sampler, output_bit="O2")

    c.add_rotate_y("A", time=5, angle=np.pi / 2)
    c.order()

    sdm = sparsedm.SparseDM(c.get_qubit_names())

    assert sdm.classical['O'] == 0
    assert sdm.classical['O2'] == 0

    c.apply_to(sdm)

    assert np.allclose(sdm.trace(), 0.25)

    assert sdm.classical == {'O': 1, 'O2': 1}
Example #2
0
 def test_selection_sampler(self):
     s = circuit.selection_sampler(0)
     next(s)
     for _ in range(10):
         pr, dec, prob = s.send((0.5, 0.5))
         assert pr == 0
         assert dec == 0
         assert prob == 1
Example #3
0
    def test_one_sampler_two_measurements(self):
        # Biased sampler
        s = circuit.BiasedSampler(alpha=1, readout_error=0.7)
        m1 = circuit.Measurement("A", 0, sampler=s, output_bit="O")
        m2 = circuit.Measurement("A", 0, sampler=s, output_bit="O")

        # uniform sampler
        s = circuit.uniform_sampler(seed=42)
        m1 = circuit.Measurement("A", 0, sampler=s, output_bit="O")
        m2 = circuit.Measurement("A", 0, sampler=s, output_bit="O")

        # selection sampler
        s = circuit.selection_sampler(result=1)
        m1 = circuit.Measurement("A", 0, sampler=s, output_bit="O")
        m2 = circuit.Measurement("A", 0, sampler=s, output_bit="O")

        m1, m2
Example #4
0
    def test_apply_with_selection_sampler(self):
        m = circuit.Measurement("A", 0, sampler=circuit.selection_sampler(1))

        sdm = MagicMock()
        sdm.peak_measurement = MagicMock(return_value=(0, 1))
        sdm.project_measurement = MagicMock()

        m.apply_to(sdm)

        assert m.measurements == [1]

        sdm.peak_measurement.assert_called_once_with("A")
        sdm.project_measurement.assert_called_once_with("A", 1)

        sdm.peak_measurement = MagicMock(return_value=(1, 0))
        sdm.project_measurement = MagicMock()

        m.apply_to(sdm)

        assert m.measurements == [1, 1]

        sdm.peak_measurement.assert_called_once_with("A")
        sdm.project_measurement.assert_called_once_with("A", 1)