quri_parts.circuit.transpile.fuse module#

class AdjacentGateFuser(*args, **kwargs)#

Bases: CircuitTranspilerProtocol, ABC

Abstract base class of adjacent gates fusing transpilers.

abstract property target_gate_count: int#
abstract is_target_sequence(seq)#
Parameters:

seq (Sequence[QuantumGate]) –

Return type:

bool

abstract fuse(seq)#
Parameters:

seq (Sequence[QuantumGate]) –

Return type:

Sequence[QuantumGate]

class CNOTHCNOTFusingTranspiler(*args, **kwargs)#

Bases: AdjacentGateFuser

A CircuitTranspiler that reduces the number of CNOT gates by replacing partial circuits that satisfy certain conditions with equivalent circuits.

The number of Clifford gates (here H, S, Sdag) and the circuit depth will increase, but the number of CNOT gates will decrease, which is expected to help reduce the error rate of the circuit in typical NISQ devices.

Ref:

Joshua Goings, et al., Molecular Symmetry in VQE: A Dual Approach for Trapped-Ion Simulations of Benzene, arXiv:2308.00667v1, pp.3-4, (2023).

property target_gate_count: int#
is_target_sequence(seq)#
Parameters:

seq (Sequence[QuantumGate]) –

Return type:

bool

fuse(seq)#
Parameters:

seq (Sequence[QuantumGate]) –

Return type:

Sequence[QuantumGate]

class FuseRotationTranspiler(*args, **kwargs)#

Bases: AdjacentGateFuser

CircuitTranspiler, which fuses consecutive rotation gates of the same kind acting on the same qubit.

property target_gate_count: int#
is_target_sequence(seq)#
Parameters:

seq (Sequence[QuantumGate]) –

Return type:

bool

fuse(seq)#
Parameters:

seq (Sequence[QuantumGate]) –

Return type:

Sequence[QuantumGate]

class NormalizeRotationTranspiler(cycle_range=(0.0, 6.283185307179586), epsilon=1e-09)#

Bases: GateKindDecomposer

Normalize the parameters of the rotation gates (RX, RY, and RZ) so that they are in the specified range (0 to 2PI by default).

Parameters:
  • cycle_range (tuple[float, float]) – Specify a range of width 2PI in the form of (lower limit,

  • exclusive. (upper limit). Lower limit is inclusive and upper limit is) –

  • epsilon (float) –

property target_gate_names: Sequence[str]#

Returns the set of gate names to be decomposed.

decompose(gate)#

Describe the specific decomposition process. Only the target gates satisfying is_target_gate() method are passed.

Parameters:

gate (QuantumGate) – The gates to be decomposed.

Return type:

Sequence[QuantumGate]

class RX2NamedTranspiler(epsilon=1e-09)#

Bases: GateKindDecomposer

Convert RX gate to Identity or X gate if it is equivalent to Identity, X, SqrtX, or SqrtXdag gate.

Parameters:

epsilon (float) –

property target_gate_names: Sequence[str]#

Returns the set of gate names to be decomposed.

decompose(gate)#

Describe the specific decomposition process. Only the target gates satisfying is_target_gate() method are passed.

Parameters:

gate (QuantumGate) – The gates to be decomposed.

Return type:

Sequence[QuantumGate]

class RY2NamedTranspiler(epsilon=1e-09)#

Bases: GateKindDecomposer

Convert RY gate to Identity or Y gate if it is equivalent to Identity, Y, SqrtY, or SqrtYdag gate.

Parameters:

epsilon (float) –

property target_gate_names: Sequence[str]#

Returns the set of gate names to be decomposed.

decompose(gate)#

Describe the specific decomposition process. Only the target gates satisfying is_target_gate() method are passed.

Parameters:

gate (QuantumGate) – The gates to be decomposed.

Return type:

Sequence[QuantumGate]

class RZ2NamedTranspiler(epsilon=1e-09)#

Bases: GateKindDecomposer

Convert RZ gate to Identity, Z, S, Sdag, T, or Tdag gate if it is equivalent to a sequence of these gates.

Parameters:

epsilon (float) –

property target_gate_names: Sequence[str]#

Returns the set of gate names to be decomposed.

decompose(gate)#

Describe the specific decomposition process. Only the target gates satisfying is_target_gate() method are passed.

Parameters:

gate (QuantumGate) – The gates to be decomposed.

Return type:

Sequence[QuantumGate]