# Compact sub-circuit representation

Is it possible to encapsulate a multi-qubit operator (not necessary a unitary, see below) as a new gate, so when I print circuit with qmp.draw() I’d see just big box with incoming & outgoing wires and some title, but no details? Below is an example of a 6-qubit circuit w/ feed forward measurement.
If I add more qubits or concatenate several such circuits it is very hard to see the overall logic.
And displaying circuit is a very good method of debugging. Here is a minimal exmple:

``````import pennylane as qml
from pennylane import numpy as np
num_qubit=6 ; shots=1000
dev = qml.device('default.qubit', wires=num_qubit,shots=shots)

@qml.qnode(dev)
def f3(X):
ninp=X.shape[0]
ang=np.arccos(X)
qout=ninp
mL=[None for i in range(ninp)]
#.... set and measure input qubits
for i in range(ninp):
qml.RX(ang[i],i)
mL[i]=qml.measure(i)
hw=sum(mL)   #... compute hamming weights
qml.cond(hw == 1, qml.PauliX)(qout)  # select 1 value of HW
return qml.probs(ninp)
nSamp=50
X=np.random.uniform(-0.99,0.99,size=(num_qubit-1,nSamp))
print(qml.draw(f3)(X[:,0]))
``````

and the output

``````0: ──RX(2.00)──┤↗├────────────────────────────────────────────────────────────────┤
1: ─────────────║───RX(0.75)──┤↗├─────────────────────────────────────────────────┤
2: ─────────────║──────────────║───RX(2.46)──┤↗├──────────────────────────────────┤
3: ─────────────║──────────────║──────────────║───RX(0.54)──┤↗├───────────────────┤
4: ─────────────║──────────────║──────────────║──────────────║───RX(1.84)──┤↗├────┤
5: ─────────────║──────────────║──────────────║──────────────║──────────────║───X─┤  Probs
╚══════════════║══════════════║══════════════║══════════════║═══╣
╚══════════════║══════════════║══════════════║═══╣
╚══════════════║══════════════║═══╣
╚══════════════║═══╣
╚═══╝
``````

I’d like to see just a box with 6 wires of length ~5 character, no classical (black) wires.
Is there a trick to do this in PennyLane?

Hey @Jan_Balewski,

Good question! The answer is yes, but I think the way to do it isn’t as “nice” as you’d think. I’ll double check internally here, but you’ll probably have to create your own operator and create a custom label. I’ll get back to you!