Example #1
0
def test_measurementregistersresult_frequencies(backend):
    original_backend = qibo.get_backend()
    qibo.set_backend(backend)
    probs = np.random.random(16)
    probs = probs / np.sum(probs)
    result = measurements.MeasurementResult((0, 1, 2, 3),
                                            probs,
                                            nshots=1000000)
    frequencies = result.frequencies()
    qubits = {"a": (0, 1), "b": (2, 3)}
    result = measurements.MeasurementRegistersResult(qubits, result)
    register_frequencies = result.frequencies(registers=True)
    assert register_frequencies.keys() == qubits.keys()
    rkeys = ["00", "01", "10", "11"]
    target_frequencies_a = {
        k: sum(frequencies[f"{k}{l}"] for l in rkeys)
        for k in rkeys
    }
    target_frequencies_b = {
        k: sum(frequencies[f"{l}{k}"] for l in rkeys)
        for k in rkeys
    }
    assert register_frequencies["a"] == target_frequencies_a
    assert register_frequencies["b"] == target_frequencies_b
    qibo.set_backend(original_backend)
Example #2
0
def test_measurementregistersresult_samples(backend):
    samples = np.random.randint(0, 2, (20, 4))
    result = measurements.MeasurementResult((0, 1, 2, 3))
    result.binary = K.cast(samples)
    qubits = {"a": (0, 2), "b": (1, 3)}
    result = measurements.MeasurementRegistersResult(qubits, result)
    register_samples = result.samples(registers=True)
    assert register_samples.keys() == qubits.keys()
    K.assert_allclose(register_samples["a"], samples[:, [0, 2]])
    K.assert_allclose(register_samples["b"], samples[:, [1, 3]])
Example #3
0
def test_measurementregistersresult_samples(backend):
    original_backend = qibo.get_backend()
    qibo.set_backend(backend)
    samples = np.random.randint(0, 2, (20, 4))
    result = measurements.MeasurementResult((0, 1, 2, 3))
    result.binary = samples
    qubits = {"a": (0, 2), "b": (1, 3)}
    result = measurements.MeasurementRegistersResult(qubits, result)
    register_samples = result.samples(registers=True)
    assert register_samples.keys() == qubits.keys()
    np.testing.assert_allclose(register_samples["a"], samples[:, [0, 2]])
    np.testing.assert_allclose(register_samples["b"], samples[:, [1, 3]])
    qibo.set_backend(original_backend)
Example #4
0
 def set_measurements(self, qubits, samples, registers=None):
     self.measurements = measurements.MeasurementResult(qubits)
     self.measurements.decimal = samples
     if registers is not None:
         self.measurements = measurements.MeasurementRegistersResult(
             registers, self.measurements)
Example #5
0
 def measure(self, gate, nshots, registers=None):
     self.measurements = gate(self, nshots)
     if registers is not None:
         self.measurements = measurements.MeasurementRegistersResult(
             registers, self.measurements)