環境
- qiskit-terra 0.20.1
- qiskit 0.36.1
- Python version 3.10.4
本題
以下のコードを実行すると、表題のエラーが発生します。
from qiskit import QuantumCircuit qc = QuantumCircuit(1) qc.x(0) qc.barrier() gate = qc.to_gate()
--------------------------------------------------------------------------- QiskitError Traceback (most recent call last) 4 qc.x(0) 5 qc.barrier() ----> 6 gate = qc.to_gate() ...(略) QiskitError: 'One or more instructions cannot be converted to a gate. "barrier" is not a gate instruction'
このエラーは回路にto_gate()
で変換することができない命令がある場合に発生します。今回の場合、barrier()
のせいで発生しています。
barrier()
は回路の見た目をきれいにするためだけのもので、回路の本質ではないので削除してOKです。
以下のコードで削除することができます。
from qiskit.transpiler.passes import RemoveBarriers new_qc = RemoveBarriers()(qc)
これでエラーが発生しなくなります。
from qiskit import QuantumCircuit qc = QuantumCircuit(1) qc.x(0) qc.barrier() # 境界を削除してゲート化 new_qc = RemoveBarriers()(qc) gate = new_qc.to_gate()