First Measurement

Measurement turns a quantum state into a classical sample. In MicroQuantum you either let a backend sample the output distribution, or you measure the state directly.

Sampling with a backend

from microquantum import QuantumCircuit, StatevectorBackend

qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)

result = StatevectorBackend().run(qc, shots=1024, seed=1)
print(result.counts)                    # {'00': ~512, '11': ~512}
print(result.probabilities)             # {'00': 0.5, '11': 0.5}
print(result.most_frequent())           # '00' or '11'

Direct measurement

from microquantum import sample_state

state = qc.run()
sample = sample_state(state, shots=8, seed=1)   # MeasurementResult
print(sample.counts)                            # {'00': ~4, '11': ~4}
print(sample.most_frequent())

from microquantum import StateAnalysis
analysis = StateAnalysis(state)
print(analysis.probabilities())               # {'00': 0.5, '11': 0.5}
print(analysis.most_probable_bitstring())     # '00' or '11'

The BackendResult keeps the raw counts, probabilities and (for statevector backends) the state. See Measurement for the full measurement model and Sampling for analysing measurement distributions.

Partial measurement collapses only the measured qubits; see measure_qubits() and measure_and_collapse().

Next: First Problem.