uniqc.algorithms.core.measurement.pauli_expectation module¶
Pauli string expectation value measurement via basis rotation.
- class uniqc.algorithms.core.measurement.pauli_expectation.PauliExpectation(circuit, pauli_string, shots=None)[source]¶
Bases:
objectClass-based interface for Pauli-string expectation measurement.
Convention: the constructor accepts a clean state-preparation
Circuit(no measurement instructions). The class adds basis rotations and measurements internally; the input circuit is not mutated.Example:
from uniqc.circuit_builder import Circuit from uniqc.algorithms.core.measurement import PauliExpectation c = Circuit() c.h(0); c.cx(0, 1) meas = PauliExpectation(c, "ZZ", shots=10000) readouts = meas.get_readout_circuits() # list[Circuit] value = meas.execute("statevector") # float in [-1, 1]
- uniqc.algorithms.core.measurement.pauli_expectation.pauli_expectation(circuit, pauli_string, shots=None)[source]¶
Measure the expectation value of a Pauli string on a circuit.
For each qubit i, the measurement basis is determined by the operator assigned to that qubit:
'I': trace out (identity, contributes trivially)'Z': measure in the computational (Z) basis — no rotation needed'X': apply Hadamard before Z measurement'Y': apply Sdag then Hadamard before Z measurement
When
shotsisNone, the statevector simulator is used to compute the exact expectation analytically. Whenshotsis given, the circuit is simulatedshotstimes and the empirical frequency is used.- Parameters:
circuit (Circuit) – Quantum circuit. Must contain only gates supported by
Simulatorand end with measurement instructions.pauli_string (str | list[tuple]) –
Pauli string in any of three accepted forms (case- insensitive):
Compact (length == n_qubits):
"XYZ","IZI".Indexed (
"Z0Z1"): operator-index pairs; any qubit not listed is identity. Matches the convention ofuniqc.algorithms.core.ansatz.qaoa_ansatz.cost_hamiltonian().Tuple list:
[("Z", 0), ("Z", 1)]— same semantics as the indexed form.
shots (int | None) – Number of measurement shots.
Noneuses statevector mode for the exact analytical value.
- Returns:
Expectation value ⟨psi|P|psi⟩ as a float in the interval
[-1, 1].- Raises:
ValueError –
pauli_stringis malformed, contains invalid characters, or its length / qubit indices do not fit the circuit.ValueError –
shotsis not a positive integer.
- Return type:
Example
>>> from uniqc.circuit_builder import Circuit >>> from uniqc.algorithms.core.measurement import pauli_expectation >>> c = Circuit() >>> c.h(0) >>> c.cx(0, 1) # Bell state (|00⟩+|11⟩)/√2 >>> c.measure(0, 1) >>> pauli_expectation(c, "ZZ") # compact form 1.0 >>> pauli_expectation(c, "Z0Z1") # indexed form 1.0 >>> pauli_expectation(c, [("Z", 0), ("Z", 1)]) # tuple-list form 1.0