qml.tape.make_qscript

make_qscript(fn, shots=None)[source]

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

This is useful when you would like to manipulate or transform the qscript created by a quantum function without evaluating it.

Parameters:
  • fn (function) – the quantum function to generate the qscript from

  • shots (None, int, Sequence[int], Shots) – number and/or batches of executions

Returns:

The returned function takes the same arguments as the quantum function. When called, it returns the generated quantum script without any queueing occurring.

Return type:

function

Example

Consider the following quantum function:

def qfunc(x):
    qml.Hadamard(wires=0)
    qml.CNOT(wires=[0, 1])
    qml.RX(x, wires=0)

We can use make_qscript to extract the qscript generated by this quantum function, without any of the operations being queued by any existing queuing contexts:

>>> with qml.queuing.AnnotatedQueue() as active_queue:
...     _ = qml.RY(1.0, wires=0)
...     qs = make_qscript(qfunc)(0.5)
>>> qs.operations
[H(0), CNOT(wires=[0, 1]), RX(0.5, wires=[0])]

Note that the currently recording queue did not queue any of these quantum operations:

>>> active_queue.queue
[RY(1.0, wires=[0])]