mirror of https://github.com/Qiskit/qiskit.git
Add clifford gates to collect_cliffords (#12750)
* add clifford gates to collect_cliffords * replace hard coded clifford names by clifford_circuit names * move import * replace hard coded clifford names in random_clifford_circuit * add release notes * add permutation to collect_clifford gate list
This commit is contained in:
parent
a306cb67c8
commit
41267ecf5d
|
@ -18,6 +18,7 @@ from qiskit.circuit import ClassicalRegister, QuantumCircuit, CircuitInstruction
|
|||
from qiskit.circuit import Reset
|
||||
from qiskit.circuit.library import standard_gates
|
||||
from qiskit.circuit.exceptions import CircuitError
|
||||
from qiskit.quantum_info.operators.symplectic.clifford_circuits import _BASIS_1Q, _BASIS_2Q
|
||||
|
||||
|
||||
def random_circuit(
|
||||
|
@ -312,8 +313,9 @@ def random_clifford_circuit(num_qubits, num_gates, gates="all", seed=None):
|
|||
QuantumCircuit: constructed circuit
|
||||
"""
|
||||
|
||||
gates_1q = ["i", "x", "y", "z", "h", "s", "sdg", "sx", "sxdg"]
|
||||
gates_2q = ["cx", "cz", "cy", "swap", "iswap", "ecr", "dcx"]
|
||||
gates_1q = list(set(_BASIS_1Q.keys()) - {"v", "w", "id", "iden", "sinv"})
|
||||
gates_2q = list(_BASIS_2Q.keys())
|
||||
|
||||
if gates == "all":
|
||||
if num_qubits == 1:
|
||||
gates = gates_1q
|
||||
|
|
|
@ -22,6 +22,7 @@ from qiskit.transpiler.passes.optimization.collect_and_collapse import (
|
|||
)
|
||||
|
||||
from qiskit.quantum_info.operators import Clifford
|
||||
from qiskit.quantum_info.operators.symplectic.clifford_circuits import _BASIS_1Q, _BASIS_2Q
|
||||
|
||||
|
||||
class CollectCliffords(CollectAndCollapse):
|
||||
|
@ -69,21 +70,11 @@ class CollectCliffords(CollectAndCollapse):
|
|||
)
|
||||
|
||||
|
||||
clifford_gate_names = [
|
||||
"x",
|
||||
"y",
|
||||
"z",
|
||||
"h",
|
||||
"s",
|
||||
"sdg",
|
||||
"cx",
|
||||
"cy",
|
||||
"cz",
|
||||
"swap",
|
||||
"clifford",
|
||||
"linear_function",
|
||||
"pauli",
|
||||
]
|
||||
clifford_gate_names = (
|
||||
list(_BASIS_1Q.keys())
|
||||
+ list(_BASIS_2Q.keys())
|
||||
+ ["clifford", "linear_function", "pauli", "permutation"]
|
||||
)
|
||||
|
||||
|
||||
def _is_clifford_gate(node):
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
fixes:
|
||||
- |
|
||||
Add more Clifford gates to the :class:`.CollectCliffords()` transpiler pass.
|
||||
In particular, we have added the gates :class:`ECRGate()`, :class:`DCXGate()`,
|
||||
:class:`iSWAPGate()`, :class:`SXGate()` and :class:`SXdgGate()` to this transpiler pass.
|
Loading…
Reference in New Issue