uniqc.algorithmics.measurement.basis_rotation module#
Basis-rotation measurement for arbitrary single-qubit measurement bases.
- uniqc.algorithmics.measurement.basis_rotation.basis_rotation_measurement(circuit, qubits=None, basis=None, shots=None)[source]#
Measure a circuit by applying basis-rotation gates and then measuring in the computational (Z) basis.
For each qubit, the rotation applied before measurement is determined by the corresponding entry in
basis:"Z"— no rotation (Z basis, default)"X"— Hadamard gate (H), measures X basis"Y"—S^dagger H, measures Y basis"I"— no rotation (Z basis, identity)
When
shotsisNone, the statevector simulator is used to return the exact probability distribution. Whenshotsis given, the distribution is estimated from that many samples.- Parameters:
circuit (Circuit) – Quantum circuit (must contain MEASURE instructions).
qubits (List[int] | None) – Indices of qubits to include.
Nonemeans all qubits.basis (str | List[str] | None) – Per-qubit measurement basis. Accepts a single string such as
"XYZ"(applied left-to-right toqubits, with each character one of"I"/"X"/"Y"/"Z"), a list of strings such as["X", "Y", "Z"], orNone(default, Z basis for all qubits).shots (int | None) – Number of measurement shots.
Nonereturns the exact probability vector from the statevector simulator.
- Returns:
When
shotsisNone, adictmapping each computational-basis outcome string (e.g."01") to its probability. Whenshotsis given, adictmapping outcome strings to integer counts (frequency).- Raises:
ValueError –
len(basis)does not matchlen(qubits).ValueError –
shotsis not a positive integer.ValueError –
basiscontains invalid characters.
- Return type:
Example
>>> from uniqc.circuit_builder import Circuit >>> from uniqc.algorithmics.measurement import basis_rotation_measurement >>> c = Circuit() >>> c.h(0) # |0⟩ → (|0⟩+|1⟩)/√2 >>> c.cx(0, 1) # Bell state (|00⟩+|11⟩)/√2 >>> c.measure(0, 1) >>> # Measure qubit 0 in X basis, qubit 1 in Z basis >>> probs = basis_rotation_measurement(c, basis="XZ") >>> abs(probs["00"] - 0.5) < 1e-6 # P(0) in X basis for |+⟩ is 0.5 True