# How to get a gate from circuit

**URL:** <https://discuss.pennylane.ai/t/how-to-get-a-gate-from-circuit/3028>\
**Category:** PennyLane Help\
**Created:** [June 9, 2023, 12:56am UTC](https://discuss.pennylane.ai/t/how-to-get-a-gate-from-circuit/3028 "2023-06-09T00:56:14Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![SHAN](https://avatars.discourse-cdn.com/v4/letter/s/7ab992/32.png) [@SHAN](https://discuss.pennylane.ai/u/SHAN)\
**Post date:** [June 9, 2023, 12:56am UTC](https://discuss.pennylane.ai/t/how-to-get-a-gate-from-circuit/3028/1 "2023-06-09T00:56:14Z")

</div>

I want to implement the function of converting a circuit into an operator, and add to a new circuit.  
Qiskit code

```auto
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0,1)
gate1 = qc.to_gate(label="U1")
gate2 = qc.to_gate(label="U2").control(1) #controlled

new = QuantumCircuit(3)
new.append(gate1, [1,2])
new.append(gate2, [0,1,2])

```

How can I achieve the same functionality in pennylane?

I have tried [his](https://pennylane.ai/blog/2021/05/how-to-add-custom-gates-and-templates-to-pennylane/) code but it doesn’t run.(pennylane version == 0.26.0)

```auto
import pennylane as qml
from pennylane.operation import Operation
from pennylane import numpy as np

class RXX(Operation):
    num_params = 1
    num_wires = 2
    par_domain = "R"

    @staticmethod
    def decomposition(theta, wires):
        return [qml.PauliRot(theta, 'XX', wires=wires)]
dev = qml.device('default.qubit', wires=2, shots=100)

@qml.qnode(dev)
def circuit(theta):
    RXX(theta, wires=[0, 1])
    qml.Hadamard(1)
    return qml.expval(qml.PauliZ(0) @ qml.PauliY(1))
print(circuit(0.3))

```

Thank you very much for your help.

---

<div class="post-metadata">

**Author:** ![ludmilaaasb](https://avatars.discourse-cdn.com/v4/letter/l/d78d45/32.png) [@ludmilaaasb](https://discuss.pennylane.ai/u/ludmilaaasb)\
**Post date:** [June 9, 2023, 7:57pm UTC](https://discuss.pennylane.ai/t/how-to-get-a-gate-from-circuit/3028/2 "2023-06-09T19:57:13Z")

</div>

Hello @SHAN !

Thank you for sending your code!

This version works for me:

```auto
import pennylane as qml
from pennylane.operation import Operation
from pennylane import numpy as np

class RXX(Operation):
    num_params = 1
    num_wires = 2
    par_domain = "R"

    @staticmethod
    def compute_decomposition(theta, wires):
        return [qml.PauliRot(theta, 'XX', wires=wires)]
    

```

Instead of `decomposition` just use `compute_decomposition` and it should work. 🙂

---

<div class="post-metadata">

**Author:** ![SHAN](https://avatars.discourse-cdn.com/v4/letter/s/7ab992/32.png) [@SHAN](https://discuss.pennylane.ai/u/SHAN)\
**Post date:** [June 14, 2023, 6:18am UTC](https://discuss.pennylane.ai/t/how-to-get-a-gate-from-circuit/3028/3 "2023-06-14T06:18:46Z")

</div>

Hello @ludmilaaasb ！  
Thanks 😍
