ComputeUncompute¶
- class ComputeUncompute(sampler, *, options=None, local=False, pass_manager=None)[source]¶
Bases:
BaseStateFidelity
This class leverages the sampler primitive to calculate the state fidelity of two quantum circuits following the compute-uncompute method (see [1] for further reference). The fidelity can be defined as the state overlap.
where
and are optional parametrizations of the states and prepared by the circuitscircuit_1
andcircuit_2
, respectively.Reference: [1] Havlíček, V., Córcoles, A. D., Temme, K., Harrow, A. W., Kandala, A., Chow, J. M., & Gambetta, J. M. (2019). Supervised learning with quantum-enhanced feature spaces. Nature, 567(7747), 209-212. arXiv:1804.11326v2 [quant-ph]
- Parameters:
sampler (BaseSampler | BaseSamplerV2) – Sampler primitive instance.
options (Options | None) – Primitive backend runtime options used for circuit execution. The order of priority is: options in
run
method > fidelity’s default options > primitive’s default setting. Higher priority setting overrides lower priority setting.local (bool) –
If set to
True
, the fidelity is averaged over single-qubit projectorsinstead of the global projector
. This coincides with the standard (global) fidelity in the limit of the fidelity approaching 1. Might be used to increase the variance to improve trainability in algorithms such asPVQD
.pass_manager (PassManager | None) – The pass manager to transpile the circuits, if necessary. Defaults to
None
, as some primitives do not need transpiled circuits.
- Raises:
ValueError – If the sampler is not an instance of
BaseSampler
.
Attributes
- options¶
Return the union of estimator options setting and fidelity default options, where, if the same field is set in both, the fidelity’s default options override the primitive’s default setting.
- Returns:
The fidelity default + estimator options.
Methods
- create_fidelity_circuit(circuit_1, circuit_2)[source]¶
Combines
circuit_1
andcircuit_2
to create the fidelity circuit following the compute-uncompute method.- Parameters:
circuit_1 (QuantumCircuit) – (Parametrized) quantum circuit.
circuit_2 (QuantumCircuit) – (Parametrized) quantum circuit.
- Returns:
The fidelity quantum circuit corresponding to circuit_1 and circuit_2.
- Return type:
- run(circuits_1, circuits_2, values_1=None, values_2=None, **options)¶
Runs asynchronously the state overlap (fidelity) calculation between two (parametrized) circuits (first and second) for a specific set of parameter values (first and second). This calculation depends on the particular fidelity method implementation.
- Parameters:
circuits_1 (QuantumCircuit | Sequence[QuantumCircuit]) – (Parametrized) quantum circuits preparing
.circuits_2 (QuantumCircuit | Sequence[QuantumCircuit]) – (Parametrized) quantum circuits preparing
.values_1 (Sequence[float] | Sequence[Sequence[float]] | None) – Numerical parameters to be bound to the first set of circuits.
values_2 (Sequence[float] | Sequence[Sequence[float]] | None) – Numerical parameters to be bound to the second set of circuits.
options – Primitive backend runtime options used for circuit execution. The order of priority is: options in
run
method > fidelity’s default options > primitive’s default setting. Higher priority setting overrides lower priority setting.
- Returns:
Primitive job for the fidelity calculation. The job’s result is an instance of
StateFidelityResult
.- Return type:
AlgorithmJob