qat.plugins

Plugins are objects to manipulate quantum jobs (circuits, observables) prior to execution and post-process the results.

Currently, the following plugins are offered to the users in Qaptiva™.

Circuit rewriting plugins

qat.plugins.BaseChanger

Split observable job into smaller diagonal observable jobs

qat.plugins.CausalConesSplitter

Transform job to batch by generating circuits corresponding to each term in the observable

qat.plugins.CircuitInliner

Inlining circuit inside a stack

qat.plugins.FusionPlugin

Merge quantum gates together to reduce the number of gates

qat.plugins.GateRewriter

Replace some gates by a pattern in a circuit

qat.plugins.Graphopt

Automated optimization of large quantum circuits with continuous parameters

qat.plugins.KAKCompression

Compress sequences of consecutive single qubit gates into a fixed universal pattern

qat.plugins.Nnizer

Plugin solving the SWAP insertion problem

qat.plugins.ObservableSplitter

Turning observable sampling into qubit sampling

qat.plugins.PatternManager

High-level plugin applying rewriting rules following a meta-heuristic

qat.plugins.Remap

Unused qubits remover

Circuit synthesis plugins

qat.plugins.InitialMapping

Plugin wrapping various remapping methods

qat.plugins.LazySynthesis

Lazy circuit synthesis based on nnization algorithm

qat.plugins.NISQCompiler

Generic compiler for NISQ quantum circuits

Variational optimization plugins

qat.plugins.CostFunctionPlugin

Perform variational optimization without observable

qat.plugins.PSOMinimizePlugin

Minimizer based on the Particle Swarm Optimization (PSO) algorithm

qat.plugins.ScipyMinimizePlugin

Hybrid quantum classical optimization based on the Scipy

qat.plugins.SPSAMinimizePlugin

Minimizer based on Simultaneous Perturbation Stochastic Approximation (SPSA) algorithm

Plugin for fermionic systems

qat.plugins.AdaptVQEPlugin

Plugin building iteratively efficient ansatze

qat.plugins.GradientDescentOptimizer

Natural gradient descent optimizer

qat.plugins.MultipleLaunchesAnalyzer

Plugin running several optimizations and keeping the best one

qat.plugins.SeqOptim

Iteratively transform into Natural Orbitals basis

qat.plugins.TransformObservable

Plugin performing a transformation on the Observable

qat.plugins.ZeroNoiseExtrapolator

Plugin performing Zero-Noise Extrapolation

Plugins for projective quantum eigensolver

These plugins allow performing projective quantum eigensolving (PQE, Stair et al. ) on Qaptiva. PQE is an alternative to variational quantum eigensolving (VQE) that, instead of minimizing a variational energy, attempts to find the zeros of the “residues” of the parametric wavefunction. By so doing, one hopes to get a faster and more noise-robust convergence to the ground state of the problem.

PQE is implemented through two plugins: the first plugin iteratively generates the ansatz, while the second performs the quasi-Newton optimization of the parameters:

qat.plugins.PQEOptimizationPlugin

PQE plugin for quasi-Newton optimization

qat.plugins.SPQEPlugin

PQE plugin for ansatz preparation

Plugin utilities

qat.plugins.AbstractPlugin

Abstract class of all plugins

qat.plugins.Display

Display a quantum circuit in a terminal

qat.plugins.Junction

Specialized abstract plugin allowing iterations inside a Qaptiva stack

qat.plugins.Optimizer

Specialized abstract junction performing variational optimization

qat.plugins.QuameleonPlugin

Plugin emulating hardware constraints

qat.plugins.RemotePlugin

Connect to a plugin running in a remote server

qat.plugins.UploadedPlugin

Plugin than can be uploaded with Qaptiva Access