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).

arXiv:1811.11184

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, or DerivativeType.COMPLEX. Defaults to DerivativeType.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 as parameter_values[i].

Raises:

ValueError – Invalid arguments are given.

Return type:

AlgorithmJob

update_default_options(**options)#

Update the gradient’s default options setting.

Parameters:

**options – The fields to update the default options.