Enhanced quantum circuit execution results with comprehensive result types.
This namespace provides a systematic way to extract different types of results from quantum circuit executions, supporting both hardware and simulation backends with QASM 3 and Amazon Braket compatible result types.
Design Philosophy:
Result Types Supported:
Future Extensions:
The result specification format is flexible, allowing users to request multiple result types in a single execution. Each result type is extracted using dedicated functions that utilize existing domain logic, ensuring consistency and maintainability.
Example Result Spec:
{:measurements {:shots 1000 :qubits [0 1]}
:expectation {:observables [obs/pauli-z obs/pauli-x] :targets [0]}
:variance {:observables [obs/pauli-z] :targets [0]}
:hamiltonian my-hamiltonian
:probabilities {:targets [[1 0] [0 1]] :qubits [0 1]}
:amplitudes {:basis-states [0 1 2 3]}
:state-vector true
:density-matrix true
:fidelity {:references [|0⟩ |1⟩]}
:sample {:observables [obs/pauli-z] :shots 1000 :targets [0]}
Enhanced quantum circuit execution results with comprehensive result types. This namespace provides a systematic way to extract different types of results from quantum circuit executions, supporting both hardware and simulation backends with QASM 3 and Amazon Braket compatible result types. Design Philosophy: - Leverage existing functions from state, observables, and hamiltonian namespaces - Support QASM 3.0 and Amazon Braket result type specifications - Provide both simulation-only and hardware-compatible result types - Enable systematic extraction without code duplication Result Types Supported: - Measurement results (sample outcomes and probabilities) - Expectation values for observables - Variance values for observables - Hamiltonian energy measurements - Probability distributions for specific basis states - Amplitude extraction for basis states - Complete state vector (simulation only) - Density matrix representation (simulation only) - Fidelity measurements against reference states - Sample results for observables (hardware measurement simulation) Future Extensions: - Adjoint gradient computations (for parameterized circuits) (TODO) The result specification format is flexible, allowing users to request multiple result types in a single execution. Each result type is extracted using dedicated functions that utilize existing domain logic, ensuring consistency and maintainability. Example Result Spec: {:measurements {:shots 1000 :qubits [0 1]} :expectation {:observables [obs/pauli-z obs/pauli-x] :targets [0]} :variance {:observables [obs/pauli-z] :targets [0]} :hamiltonian my-hamiltonian :probabilities {:targets [[1 0] [0 1]] :qubits [0 1]} :amplitudes {:basis-states [0 1 2 3]} :state-vector true :density-matrix true :fidelity {:references [|0⟩ |1⟩]} :sample {:observables [obs/pauli-z] :shots 1000 :targets [0]}
(calculate-approximation-ratio qaoa-solution classical-optimum problem-type)
Calculate approximation ratio for optimization problems.
Parameters:
Returns: Approximation ratio (for maximization: qaoa/classical, for minimization: classical/qaoa)
Calculate approximation ratio for optimization problems. Parameters: - qaoa-solution: Solution value from QAOA - classical-optimum: Known or estimated classical optimum - problem-type: Type of problem (:max-cut, :max-sat, :tsp) Returns: Approximation ratio (for maximization: qaoa/classical, for minimization: classical/qaoa)
(extract-amplitude-results final-state basis-states)
Extract amplitude results for specific computational basis states.
Leverages: qs/state-vector (direct access to amplitudes)
Parameters:
Returns: Map with complex amplitudes (Braket Amplitude format)
Extract amplitude results for specific computational basis states. Leverages: qs/state-vector (direct access to amplitudes) Parameters: - final-state: Final quantum state after circuit execution - basis-states: Vector of basis state indices to extract amplitudes for Returns: Map with complex amplitudes (Braket Amplitude format)
(extract-best-solution solutions problem-type)
Extract the best solution from a collection of decoded solutions.
Parameters:
Returns: Best solution according to the problem objective
Extract the best solution from a collection of decoded solutions. Parameters: - solutions: Collection of solution maps with objective values - problem-type: Type of problem to determine maximization vs minimization Returns: Best solution according to the problem objective
(extract-density-matrix-result final-state)
Extract density matrix representation (simulation only).
Leverages: qs/density-matrix, qs/trace-one?
Parameters:
Returns: Density matrix representation (Braket style)
Extract density matrix representation (simulation only). Leverages: qs/density-matrix, qs/trace-one? Parameters: - final-state: Final quantum state after circuit execution Returns: Density matrix representation (Braket style)
(extract-expectation-results final-state observables & {:keys [target-qubits]})
Extract expectation value results for observables.
Leverages: obs/expectation-value, obs/tensor-product, obs/identity-op
Parameters:
Returns: Vector of expectation value results (Braket Expectation format)
Extract expectation value results for observables. Leverages: obs/expectation-value, obs/tensor-product, obs/identity-op Parameters: - final-state: Final quantum state after circuit execution - observables: Collection of observables to measure - target-qubits: (optional) Specific qubits for each observable Returns: Vector of expectation value results (Braket Expectation format)
(extract-fidelity-result final-state reference-states)
Extract fidelity between final state and reference states.
Leverages: qs/state-fidelity
Parameters:
Returns: Map with fidelity values for each reference state
Extract fidelity between final state and reference states. Leverages: qs/state-fidelity Parameters: - final-state: Final quantum state after circuit execution - reference-states: Vector of reference states to compare against Returns: Map with fidelity values for each reference state
(extract-hamiltonian-expectation final-state hamiltonian)
Extract expectation value for a Hamiltonian (energy measurement).
Leverages: ham/hamiltonian-expectation, ham/group-commuting-terms
Parameters:
Returns: Map with energy expectation value and measurement optimization info
Extract expectation value for a Hamiltonian (energy measurement). Leverages: ham/hamiltonian-expectation, ham/group-commuting-terms Parameters: - final-state: Final quantum state after circuit execution - hamiltonian: Hamiltonian to measure Returns: Map with energy expectation value and measurement optimization info
(extract-measurement-results final-state
&
{:keys [measurement-qubits shots] :or {shots 1}})
Extract measurement results from circuit execution using existing state functions.
Leverages: qs/measure-state, qs/measurement-probabilities
Parameters:
Returns: Map with measurement outcomes and probabilities (Braket Sample format)
Extract measurement results from circuit execution using existing state functions. Leverages: qs/measure-state, qs/measurement-probabilities Parameters: - final-state: Final quantum state after circuit execution - measurement-qubits: Qubits that were measured (optional, defaults to all) - shots: Number of measurement shots (default 1) Returns: Map with measurement outcomes and probabilities (Braket Sample format)
(extract-noisy-results base-result result-specs circuit)
Extract comprehensive results from noisy simulation data.
This function processes the raw simulation results and extracts various result types based on the result specifications, similar to the ideal simulator but adapted for noisy hardware simulation with trajectories.
Parameters:
Returns: Map of extracted results based on requested types
Extract comprehensive results from noisy simulation data. This function processes the raw simulation results and extracts various result types based on the result specifications, similar to the ideal simulator but adapted for noisy hardware simulation with trajectories. Parameters: - base-result: Raw simulation result from hardware simulator - result-specs: Map specifying what types of results to extract - circuit: Original circuit for context Returns: Map of extracted results based on requested types
(extract-probability-results final-state
&
{:keys [target-qubits target-states]})
Extract probability results for specific computational basis states.
Leverages: qs/probability, qs/measurement-probabilities
Parameters:
Returns: Map with probabilities (Braket Probability format)
Extract probability results for specific computational basis states. Leverages: qs/probability, qs/measurement-probabilities Parameters: - final-state: Final quantum state after circuit execution - target-qubits: (optional) Specific qubits to measure (defaults to all) - target-states: (optional) Specific target basis state indices or bit patterns Returns: Map with probabilities (Braket Probability format)
(extract-results result result-specs)
Extract specified results from the final quantum state after circuit execution.
Parameters:
Result specs format (all optional):
{:measurements {:shots 1000 :qubits [0 1]}
:expectation {:observables [pauli-z pauli-x] :targets [0]}
:variance {:observables [pauli-z] :targets [0]}
:hamiltonian my-hamiltonian
:probabilities {:targets [[1 0] [0 1]] :qubits [0 1]}
:amplitudes {:basis-states [0 1 2 3]}
:state-vector true
:density-matrix true
:fidelity {:references [|0⟩ |1⟩]}
:sample {:observables [pauli-z] :shots 1000 :targets [0]}}
Returns: Map of extracted results based on requested types
Extract specified results from the final quantum state after circuit execution. Parameters: - result: Result map containing :final-state (the final quantum state after executinga circuit) - result-specs: Map specifying which results to extract Result specs format (all optional): {:measurements {:shots 1000 :qubits [0 1]} :expectation {:observables [pauli-z pauli-x] :targets [0]} :variance {:observables [pauli-z] :targets [0]} :hamiltonian my-hamiltonian :probabilities {:targets [[1 0] [0 1]] :qubits [0 1]} :amplitudes {:basis-states [0 1 2 3]} :state-vector true :density-matrix true :fidelity {:references [|0⟩ |1⟩]} :sample {:observables [pauli-z] :shots 1000 :targets [0]}} Returns: Map of extracted results based on requested types
(extract-sample-results final-state observables shots & {:keys [target-qubits]})
Extract sample results for observables (hardware measurement simulation).
Leverages: obs/measurement-probabilities, simulated sampling
Parameters:
Returns: Vector of sample results (Braket Sample format)
Extract sample results for observables (hardware measurement simulation). Leverages: obs/measurement-probabilities, simulated sampling Parameters: - final-state: Final quantum state after circuit execution - observables: Collection of observables to sample - shots: Number of measurement shots - target-qubits: (optional) Specific qubits for each observable Returns: Vector of sample results (Braket Sample format)
(extract-state-vector-result final-state)
Extract complete state vector (simulation only).
Leverages: qs/state-vector, qs/basis-labels
Parameters:
Returns: Complete state vector representation (Braket StateVector format)
Extract complete state vector (simulation only). Leverages: qs/state-vector, qs/basis-labels Parameters: - final-state: Final quantum state after circuit execution Returns: Complete state vector representation (Braket StateVector format)
(extract-variance-results final-state observables & {:keys [target-qubits]})
Extract variance results for observables.
Leverages: obs/variance
Parameters:
Returns: Vector of variance results (Braket Variance format)
Extract variance results for observables. Leverages: obs/variance Parameters: - final-state: Final quantum state after circuit execution - observables: Collection of observables to measure - target-qubits: (optional) Specific qubits for each observable Returns: Vector of variance results (Braket Variance format)
(summarize-results results)
Create a human-readable summary of execution results.
Create a human-readable summary of execution results.
cljdoc builds & hosts documentation for Clojure/Script libraries
Ctrl+k | Jump to recent docs |
← | Move to previous article |
→ | Move to next article |
Ctrl+/ | Jump to the search field |