qml.transforms

This subpackage contains QNode, quantum function, device, and tape transforms.

Transforms

Transforms that act on QNodes

Thes transforms accept QNodes, and return new transformed functions that compute the desired quantity.

classical_jacobian(qnode)

Returns a function to extract the Jacobian matrix of the classical part of a QNode.

draw(qnode[, charset, wire_order, …])

Create a function that draws the given qnode.

metric_tensor(qnode[, diag_approx, …])

Returns a function that returns the value of the metric tensor of a given QNode.

specs(qnode[, max_expansion])

Resource information about a quantum circuit.

Transforms that act on quantum functions

These transforms accept quantum functions (Python functions containing quantum operations) that are used to construct QNodes.

adjoint(fn)

Create a function that applies the adjoint (inverse) of the provided operation or template.

ctrl(fn, control)

Create a method that applies a controlled version of the provided method.

invisible(fn)

A transform to make a quantum function non-recordable or invisible within a QNode or quantum tape context.

apply_controlled_Q(fn, wires, target_wire, …)

Provides the circuit to apply a controlled version of the \(\mathcal{Q}\) unitary defined in this paper.

quantum_monte_carlo(fn, wires, target_wire, …)

Provides the circuit to perform the quantum Monte Carlo estimation algorithm.

Transforms that act on tapes

These transforms accept quantum tapes, and return one or more tapes as well as a classical processing function.

measurement_grouping(tape, obs_list, coeffs_list)

Returns a list of measurement optimized tapes, and a classical processing function, for evaluating the expectation value of a provided Hamiltonian.

metric_tensor_tape(tape[, diag_approx, wrt])

Returns a list of tapes, and a classical processing function, for computing the block diagonal metric tensor approximation of an input tape on hardware.

hamiltonian_expand(tape)

Returns a list of tapes, and a classical processing function, for computing the expectation value of a Hamiltonian.

Decorators and utility functions

The following decorators and convenience functions are provided to help build custom QNode, quantum function, and tape transforms:

single_tape_transform(transform_fn)

For registering a tape transform that takes a tape and outputs a single new tape.

qfunc_transform(tape_transform)

Given a function which defines a tape transform, convert the function into one that applies the tape transform to quantum functions (qfuncs).

make_tape(fn)

Returns a function that generates the tape from a quantum function without any operation queuing taking place.