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}
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
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
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)