quantum_op_to_qrisp_func

quantum_op_to_qrisp_func#

Module: iqm.qrisp_iqm

iqm.qrisp_iqm.quantum_op_to_qrisp_func(quantum_op: QuantumOp) QrispFunction#

Create a function for appending IQM Pulse quantum operations to a Qrisp quantum circuit.

Returns a callable that can be used to append an IQMPulseOperation for the specified QuantumOp to a Qrisp circuit. The returned function accepts locus qubits as positional arguments and operation parameters as keyword arguments.

In Jasp tracing mode, dynamic (JAX-traced) parameter values are supported: SymPy placeholder symbols are used in the operation definition, while the actual traced values are forwarded via param_tracers.

Parameters:

quantum_op (QuantumOp) – IQM Pulse quantum operation definition.

Returns:

Function for adding the corresponding operation to a Qrisp circuit.

Return type:

QrispFunction

Example

Define a custom delay pulse operation, convert it into a Qrisp gate function, and use it inside a Jasp-traced circuit that is then compiled to an IQM pulse circuit:

from qrisp import QuantumVariable, h, cx, measure
from iqm.pulse.quantum_ops import QuantumOp
from iqm.qrisp_iqm import extract_iqm_pulse, quantum_op_to_qrisp_func

delay_quantum_op = QuantumOp(name="delay", params={"duration": (float,)})
delay = quantum_op_to_qrisp_func(delay_quantum_op)

@extract_iqm_pulse(dqa=...)
def my_circuit():
    qv = QuantumVariable(2)
    h(qv[0])
    delay(qv[0], duration=100e-9)
    cx(qv[0], qv[1])
    return measure(qv)

meas_keys, iqm_circuit = my_circuit()