quri_parts.circuit.transpile.transpiler module

CircuitTranspiler

CircuitTranspiler Interface. A function or callable object that can map ImmutableQuantumCircuit to ImmutableQuantumCircuit.

alias of Callable[[ImmutableQuantumCircuit], ImmutableQuantumCircuit]

class CircuitTranspilerProtocol(*args, **kwargs)

Bases: Protocol

Protocol of callable class that transpiles ImmutableQuantumCircuit to ImmutableQuantumCircuit.

class SequentialTranspiler(transpilers)

Bases: CircuitTranspilerProtocol

CircuitTranspiler, which applies CircuitTranspilers in sequence.

Parameters:

transpilers (Sequence[CircuitTranspiler]) – Sequence of CircuitTranspilers.

Examples

transpiler = SequentialTranspiler(
    [
        ATranspiler(),
        BTranspiler(arg..),
        ..
    ]
)
circuit = transpiler(circuit)
class GateDecomposer(*args, **kwargs)

Bases: CircuitTranspilerProtocol, ABC

Abstract class that represents CircuitTranspiler, such that target gates are selected by decision function and each target gate is replaced by a sequence of multiple gates.

abstract is_target_gate(gate)

Determine if a given gate is subject to decomposition.

Parameters:

gate (QuantumGate) – Gates in the circuit that are scanned from the front.

Return type:

bool

abstract 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 GateKindDecomposer(*args, **kwargs)

Bases: GateDecomposer, ABC

Abstract class that represents CircuitTranspiler, such that each gate is identified by its gate name and the target gate is replaced by a sequence of multiple gates.

Classes inheriting from this class can be used for ParallelDecomposer.

abstract property target_gate_names: Sequence[str]

Returns the set of gate names to be decomposed.

is_target_gate(gate)

Determine if a given gate is subject to decomposition.

Parameters:

gate (QuantumGate) – Gates in the circuit that are scanned from the front.

Return type:

bool

class ParallelDecomposer(decomposers)

Bases: CircuitTranspilerProtocol

CircuitTranspiler, which executes given GateKindDecomposer within a single loop traversing the gate from the front.

Parameters:

decomposers (Sequence[GateKindDecomposer]) – Sequence of GateKindDecomposer with no duplicate gate types to act on.

ParametricCircuitTranspiler

ParametricCircuitTranspiler Interface. A function or callable object that can map ParametricQuantumCircuit to ParametricQuantumCircuit.

alias of Callable[[ParametricQuantumCircuitProtocol], ParametricQuantumCircuitProtocol]

class ParametricCircuitTranspilerProtocol(*args, **kwargs)

Bases: Protocol

Protocol of callable class that transpiles ParametricQuantumCircuit to ParametricQuantumCircuit.

class ParametricTranspiler(transpiler)

Bases: ParametricCircuitTranspilerProtocol

Circuit transpiler for ParametricQuantumCircuitProtocol, which wraps CircuitTranspiler and allows it to be applied to ParametricQuantumCircuitProtocol.

Each successive QuantumGate sequence in the circuit is transpiled respectively and the results are concatenated. ParametricQuantumGates and parameter mappings are replicated intact.

Parameters:

transpiler (CircuitTranspiler) – CircuitTranspiler to be wrapped.

class ParametricSequentialTranspiler(transpilers)

Bases: ParametricCircuitTranspilerProtocol

Parameters:

transpilers (Sequence[ParametricCircuitTranspiler])