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


Transforms that act on QNodes

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


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.


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.


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.


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:


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


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


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