Skip to content

v0.18

Compare
Choose a tag to compare
@TysonRayJones TysonRayJones released this 29 Feb 00:24
· 22 commits to main since this release

This release adds functionality for computing, visualising, and processing Pauli transfer matrices, as well as some convenience functions for obtaining and reformatting symbolically weighted sums of Pauli strings. Scroll down for some very pretty diagrams! 🎉

This release was supported by the Laboratory of Quantum Information and Computation at EPFL, lead by Zoë Holmes. ❤️

New features

Presented in order of increasing aesthetic value.

  • GetCircuitParameterised[] extracts the parameters of parameterised gates, replacing them with symbols. This is useful for things like finding repeated gate strengths, preparing ansatz circuits, or computing derivatives of circuit properties.
    image

Several new convenience functions make creating and modifying Pauli strings (and weighted sums thereof) less painful.

  • GetPauliString[] generates a Pauli string (or a weighted sum thereof) from basis indices, or digits, or arbitrary matrices, or a list of coefficients and states (in a file or at a URL).

    image
  • GetPauliStringReformatted[] converts a Pauli string into other forms more convenient for interpreting or processing.

    image
  • GetPauliStringRetargeted[] can change the targeted qubits of a Pauli string, analogous to GetCircuitRetargeted[].

    image
  • GetPauliStringOverlap[] finds basis Pauli strings common to given weighted sums, returning their (conjugated) product in a manner analogous to an inner-product.

    image

QuESTlink's recognised operator set now includes PTM and PTMap for representing Pauli transfer matrices, used extensively in tomography and recently in classical simulation of variational quantum algorithms.

  • CalcPauliTransferMatrix[] computes the PTM of an operator or circuit.

    image
  • CalcPauliTransferMap[] computes the operator's PTMap which describes how the operator would modify (when applied in conjugation upon) a Pauli string.

    image
  • DrawPauliTransferMap[] visualises a PTMap as a graph, showing how the equivalent operator would successively modify (when applied in conjugation) Pauli strings.

    image

    This extends QuESTlink's family of methods to visually study quantum circuits.

    image

We also add functions for evolving Pauli strings under the action of these maps.

  • ApplyPauliTransferMap[] modifies a Pauli string under the action of a PTM or circuit (by conjugation).
    image
  • CalcPauliTransferEval[] returns the full evolution history of a Pauli string as it is modified by the successive PTMs of a circuit.
    image
  • DrawPauliTransferEval[] visualises the evolution of the Pauli string.
    image
    This is handy for tracking how amplitudes in the circuit's maps contribute to the coefficients of Pauli strings.
    image

Changes

  • deprecated GetPauliStringFromCoeffs[] (behaviour now merged into GetPauliString[])
  • deprecated GetPauliStringFromMatrix[] (behaviour now merged into GetPauliString[])
  • renamed RetargetCircuit[] to GetCircuitRetargeted[]
  • the output qubits of GetCircuitQubits[] are no longer sorted, and instead match the order that the qubits appear within the circuit.
  • the qubits in (at least the first) gates output by GetCircuitCompacted[] are now strictly increasing (targets then controls).

Bug fixes

  • Pauli operator Id is now recognised by GetCircuitSuperoperator[] (formerly throwing an error).