v0.18
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.
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). -
GetPauliStringReformatted[]
converts a Pauli string into other forms more convenient for interpreting or processing. -
GetPauliStringRetargeted[]
can change the targeted qubits of a Pauli string, analogous toGetCircuitRetargeted[]
. -
GetPauliStringOverlap[]
finds basis Pauli strings common to given weighted sums, returning their (conjugated) product in a manner analogous to an inner-product.
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. -
CalcPauliTransferMap[]
computes the operator'sPTMap
which describes how the operator would modify (when applied in conjugation upon) a Pauli string. -
DrawPauliTransferMap[]
visualises aPTMap
as a graph, showing how the equivalent operator would successively modify (when applied in conjugation) Pauli strings.This extends QuESTlink's family of methods to visually study quantum circuits.
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).CalcPauliTransferEval[]
returns the full evolution history of a Pauli string as it is modified by the successive PTMs of a circuit.DrawPauliTransferEval[]
visualises the evolution of the Pauli string.
Changes
- deprecated
GetPauliStringFromCoeffs[]
(behaviour now merged intoGetPauliString[]
) - deprecated
GetPauliStringFromMatrix[]
(behaviour now merged intoGetPauliString[]
) - renamed
RetargetCircuit[]
toGetCircuitRetargeted[]
- 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 byGetCircuitSuperoperator[]
(formerly throwing an error).