LinCombQGT#
- class LinCombQGT(estimator, phase_fix=True, derivative_type=DerivativeType.COMPLEX, options=None)[source]#
Bases:
BaseQGT
Computes the Quantum Geometric Tensor (QGT) given a pure, parameterized quantum state.
This method employs a linear combination of unitaries [1].
Reference:
- [1]: Schuld et al., “Evaluating analytic gradients on quantum hardware” (2018).
- Parameters:
estimator (BaseEstimator) – The estimator used to compute the QGT.
phase_fix (bool) – Whether to calculate the second term (phase fix) of the QGT, which is \(\langle\partial_i \psi | \psi \rangle \langle\psi | \partial_j \psi \rangle\). Default to
True
.derivative_type (DerivativeType) –
The type of derivative. Can be either
DerivativeType.REAL
DerivativeType.IMAG
, orDerivativeType.COMPLEX
. Defaults toDerivativeType.REAL
.DerivativeType.REAL
computes
\[\mathrm{Re(QGT)}_{ij}= \mathrm{Re}[\langle \partial_i \psi | \partial_j \psi \rangle - \langle\partial_i \psi | \psi \rangle \langle\psi | \partial_j \psi \rangle].\]DerivativeType.IMAG
computes
\[\mathrm{Re(QGT)}_{ij}= \mathrm{Im}[\langle \partial_i \psi | \partial_j \psi \rangle - \langle\partial_i \psi | \psi \rangle \langle\psi | \partial_j \psi \rangle].\]DerivativeType.COMPLEX
computes
\[\mathrm{QGT}_{ij}= [\langle \partial_i \psi | \partial_j \psi \rangle - \langle\partial_i \psi | \psi \rangle \langle\psi | \partial_j \psi \rangle].\]options (Options | None) – Backend runtime options used for circuit execution. The order of priority is: options in
run
method > QGT’s default options > primitive’s default setting. Higher priority setting overrides lower priority setting.
Attributes
- SUPPORTED_GATES = ['rx', 'ry', 'rz', 'rzx', 'rzz', 'ryy', 'rxx', 'cx', 'cy', 'cz', 'ccx', 'swap', 'iswap', 'h', 't', 's', 'sdg', 'x', 'y', 'z']#
- derivative_type#
The derivative type.
- options#
Return the union of estimator options setting and QGT default options, where, if the same field is set in both, the QGT’s default options override the primitive’s default setting.
- Returns:
The QGT default + estimator options.
Methods
- run(circuits, parameter_values, parameters=None, **options)#
Run the job of the QGTs on the given circuits.
- Parameters:
circuits (Sequence[QuantumCircuit]) – The list of quantum circuits to compute the QGTs.
parameter_values (Sequence[Sequence[float]]) – The list of parameter values to be bound to the circuit.
parameters (Sequence[Sequence[Parameter] | None] | None) – The sequence of parameters to calculate only the QGTs of the specified parameters. Each sequence of parameters corresponds to a circuit in
circuits
. Defaults to None, which means that the QGTs of all parameters in each circuit are calculated.options – Primitive backend runtime options used for circuit execution. The order of priority is: options in
run
method > QGT’s default options > primitive’s default setting. Higher priority setting overrides lower priority setting.
- Returns:
The job object of the QGTs of the expectation values. The i-th result corresponds to
circuits[i]
evaluated with parameters bound asparameter_values[i]
.- Raises:
ValueError – Invalid arguments are given.
- Return type:
- update_default_options(**options)#
Update the gradient’s default options setting.
- Parameters:
**options – The fields to update the default options.