Sampling

SamplingAnalysis analyses measurement distributions.

Inputs

A BackendResult, ExecutionRecord, ExperimentResult, a {bitstring: count} mapping, or a serialized to_dict() dict carrying counts.

Usage

from microquantum import QuantumCircuit, SamplingAnalysis, StatevectorBackend

qc = QuantumCircuit(2).h(0).cx(0, 1)
result = StatevectorBackend().run(qc, shots=4096, seed=1)

analysis = SamplingAnalysis(result)
print(analysis.counts)                    # raw counts
print(analysis.total_shots())             # 4096
print(analysis.unique_outcomes())         # ['00', '11']
print(analysis.probabilities())           # {'00': ~0.5, '11': ~0.5}
print(analysis.most_likely())             # '00' or '11'
print(analysis.entropy())                 # ~1.0 bits

Numeric observable

A documented default maps bitstrings to unsigned-binary integers (MSB first); a caller-supplied value_of overrides it:

analysis.mean()                    # ~1.5 with default mapping
analysis.mean(value_of=str)        # caller-defined observable
analysis.variance()                # population variance
analysis.standard_deviation()
print(analysis.to_dict())
print(analysis.to_json())

Extremes

most_likely() / most_likely_probability() / least_likely() for the distribution extremes. An empty counts set raises ValueError for the extremes and returns 0.0 entropy.