uniqc.circuit_builder.named_circuit module#
Named circuit definitions for reusable quantum subroutines.
This module provides: - @circuit_def: Decorator to create named circuit definitions - NamedCircuit: Reusable circuit definition with signature
Named circuits can be applied to parent circuits with qubit mapping and parameter binding, similar to QASM3 gate definitions.
Example usage:
@circuit_def(name="bell_pair", qregs={"q": 2})
def bell_pair(circ, q):
circ.h(q[0])
circ.cnot(q[0], q[1])
return circ
# Apply to parent circuit
c = Circuit(qregs={"data": 4})
bell_pair(c, qreg_mapping={"q": [c.get_qreg("data")[0], c.get_qreg("data")[1]]})
- class uniqc.circuit_builder.named_circuit.NamedCircuit(name, qregs=None, params=None, builder=None)[source]#
Bases:
objectReusable circuit definition with named qregs and parameters.
A NamedCircuit is a template for a quantum subroutine that can be instantiated multiple times with different qubit mappings and parameter values.
- Variables:
name – Circuit definition name
qregs – Dictionary mapping qreg names to sizes
params – List of parameter names
builder – Function that builds the circuit body
- Parameters:
Example
>>> @circuit_def(name="u3", qregs={"q": 1}, params=["theta", "phi", "lam"]) ... def u3_gate(circ, q, theta, phi, lam): ... circ.rz(q[0], phi) ... circ.ry(q[0], theta) ... circ.rz(q[0], lam) ... return circ ... >>> u3_gate.num_qubits # 1 >>> u3_gate.num_parameters # 3
- uniqc.circuit_builder.named_circuit.circuit_def(name, qregs=None, params=None)[source]#
Decorator to create a NamedCircuit definition.
- Parameters:
- Returns:
Decorator that wraps a function into a NamedCircuit
- Return type:
Example
>>> @circuit_def(name="bell_pair", qregs={"q": 2}) ... def bell_pair(circ, q): ... circ.h(q[0]) ... circ.cnot(q[0], q[1]) ... return circ ... >>> c = Circuit(2) >>> bell_pair(c, qreg_mapping={"q": [0, 1]})