Qiskit-specific CompositeGate emitters.
This package contains emitters for native Qiskit implementations of composite gates like QFT and IQFT.
Note: QPE (PhaseEstimation) is NOT included here because it’s deprecated in Qiskit 2.1 and will be removed in 3.0. QPE uses manual decomposition.
Overview¶
| Class | Description |
|---|---|
QiskitQFTEmitter | Emitter for QFT and IQFT using Qiskit’s native library. |
Classes¶
QiskitQFTEmitter [source]¶
class QiskitQFTEmitterEmitter for QFT and IQFT using Qiskit’s native library.
Uses qiskit.circuit.library.QFTGate which is the recommended API since Qiskit 2.1. This provides optimized implementations that benefit from Qiskit’s circuit optimization passes.
Supports:
CompositeGateType.QFT: Quantum Fourier Transform
CompositeGateType.IQFT: Inverse Quantum Fourier Transform
Methods¶
can_emit¶
def can_emit(self, gate_type: CompositeGateType) -> boolCheck if this emitter can handle the given gate type.
Parameters:
| Name | Type | Description |
|---|---|---|
gate_type | CompositeGateType | The CompositeGateType to check |
Returns:
bool — True for QFT and IQFT, False otherwise
emit¶
def emit(
self,
circuit: 'QuantumCircuit',
op: CompositeGateOperation,
qubit_indices: list[int],
bindings: dict[str, Any],
) -> boolEmit QFT or IQFT to the circuit using Qiskit’s native library.
Parameters:
| Name | Type | Description |
|---|---|---|
circuit | 'QuantumCircuit' | The Qiskit QuantumCircuit to emit to |
op | CompositeGateOperation | The CompositeGateOperation (QFT or IQFT) |
qubit_indices | list[int] | Physical qubit indices for the operation |
bindings | dict[str, Any] | Parameter bindings (unused for QFT/IQFT) |
Returns:
bool — True if emission succeeded, False to fall back to manual
emit_raw_iqft¶
def emit_raw_iqft(self, circuit: 'QuantumCircuit', qubit_indices: list[int]) -> boolEmit IQFT directly without CompositeGateOperation.
Used for recursive native emit within other composite gates (e.g., QPE).
Parameters:
| Name | Type | Description |
|---|---|---|
circuit | 'QuantumCircuit' | The Qiskit QuantumCircuit to emit to |
qubit_indices | list[int] | Physical qubit indices for the IQFT |
Returns:
bool — True if emission succeeded, False to fall back to manual
emit_raw_qft¶
def emit_raw_qft(self, circuit: 'QuantumCircuit', qubit_indices: list[int]) -> boolEmit QFT directly without CompositeGateOperation.
Used for recursive native emit within other composite gates.
Parameters:
| Name | Type | Description |
|---|---|---|
circuit | 'QuantumCircuit' | The Qiskit QuantumCircuit to emit to |
qubit_indices | list[int] | Physical qubit indices for the QFT |
Returns:
bool — True if emission succeeded, False to fall back to manual
qamomile.qiskit.emitters.qft¶
Qiskit QFT/IQFT emitter using native qiskit.circuit.library.QFTGate.
Overview¶
| Class | Description |
|---|---|
CompositeGateOperation | Represents a composite gate (QPE, QFT, etc.) as a single operation. |
CompositeGateType | Registry of known composite gate types. |
QiskitQFTEmitter | Emitter for QFT and IQFT using Qiskit’s native library. |
Classes¶
CompositeGateOperation [source]¶
class CompositeGateOperation(Operation)Represents a composite gate (QPE, QFT, etc.) as a single operation.
CompositeGate allows representing complex multi-gate operations as a single atomic operation in the IR. This enables:
Resource estimation without full implementation
Backend-native conversion (e.g., Qiskit’s QPE)
User-defined complex gates
The operands structure depends on has_implementation:
If has_implementation=True:
operands[0]: BlockValue (the implementation)
operands[1:1+num_control_qubits]: Control qubits (if any)
operands[1+num_control_qubits:1+num_control_qubits+num_target_qubits]: Target qubits
operands[1+num_control_qubits+num_target_qubits:]: Parameters
If has_implementation=False (stub):
operands[0:num_control_qubits]: Control qubits (if any)
operands[num_control_qubits:num_control_qubits+num_target_qubits]: Target qubits
operands[num_control_qubits+num_target_qubits:]: Parameters
The results structure:
results[0:num_control_qubits]: Control qubits (returned)
results[num_control_qubits:]: Target qubits (returned)
Constructor¶
def __init__(
self,
operands: list[Value] = list(),
results: list[Value] = list(),
gate_type: CompositeGateType = CompositeGateType.CUSTOM,
num_control_qubits: int = 0,
num_target_qubits: int = 0,
custom_name: str = '',
resource_metadata: ResourceMetadata | None = None,
has_implementation: bool = True,
composite_gate_instance: Any = None,
strategy_name: str | None = None,
) -> NoneAttributes¶
composite_gate_instance: Anycontrol_qubits: list[‘Value’] Get the control qubit operands.custom_name: strgate_type: CompositeGateTypehas_implementation: boolimplementation: ‘BlockValue | None’ Get the implementation BlockValue, if any.name: str Human-readable name of this composite gate.num_control_qubits: intnum_target_qubits: intoperation_kind: OperationKind Return the operation kind (always QUANTUM).parameters: list[‘Value’] Get the parameter operands (angles, etc.).resource_metadata: ResourceMetadata | Nonesignature: Signature Return the operation signature.strategy_name: str | Nonetarget_qubits: list[‘Value’] Get the target qubit operands.
CompositeGateType [source]¶
class CompositeGateType(enum.Enum)Registry of known composite gate types.
Attributes¶
CUSTOMIQFTQFTQPE
QiskitQFTEmitter [source]¶
class QiskitQFTEmitterEmitter for QFT and IQFT using Qiskit’s native library.
Uses qiskit.circuit.library.QFTGate which is the recommended API since Qiskit 2.1. This provides optimized implementations that benefit from Qiskit’s circuit optimization passes.
Supports:
CompositeGateType.QFT: Quantum Fourier Transform
CompositeGateType.IQFT: Inverse Quantum Fourier Transform
Methods¶
can_emit¶
def can_emit(self, gate_type: CompositeGateType) -> boolCheck if this emitter can handle the given gate type.
Parameters:
| Name | Type | Description |
|---|---|---|
gate_type | CompositeGateType | The CompositeGateType to check |
Returns:
bool — True for QFT and IQFT, False otherwise
emit¶
def emit(
self,
circuit: 'QuantumCircuit',
op: CompositeGateOperation,
qubit_indices: list[int],
bindings: dict[str, Any],
) -> boolEmit QFT or IQFT to the circuit using Qiskit’s native library.
Parameters:
| Name | Type | Description |
|---|---|---|
circuit | 'QuantumCircuit' | The Qiskit QuantumCircuit to emit to |
op | CompositeGateOperation | The CompositeGateOperation (QFT or IQFT) |
qubit_indices | list[int] | Physical qubit indices for the operation |
bindings | dict[str, Any] | Parameter bindings (unused for QFT/IQFT) |
Returns:
bool — True if emission succeeded, False to fall back to manual
emit_raw_iqft¶
def emit_raw_iqft(self, circuit: 'QuantumCircuit', qubit_indices: list[int]) -> boolEmit IQFT directly without CompositeGateOperation.
Used for recursive native emit within other composite gates (e.g., QPE).
Parameters:
| Name | Type | Description |
|---|---|---|
circuit | 'QuantumCircuit' | The Qiskit QuantumCircuit to emit to |
qubit_indices | list[int] | Physical qubit indices for the IQFT |
Returns:
bool — True if emission succeeded, False to fall back to manual
emit_raw_qft¶
def emit_raw_qft(self, circuit: 'QuantumCircuit', qubit_indices: list[int]) -> boolEmit QFT directly without CompositeGateOperation.
Used for recursive native emit within other composite gates.
Parameters:
| Name | Type | Description |
|---|---|---|
circuit | 'QuantumCircuit' | The Qiskit QuantumCircuit to emit to |
qubit_indices | list[int] | Physical qubit indices for the QFT |
Returns:
bool — True if emission succeeded, False to fall back to manual