Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

qamomile.qiskit

Overview

FunctionDescription
hamiltonian_to_sparse_pauli_opConvert qamomile.observable.Hamiltonian to Qiskit SparsePauliOp.
ClassDescription
QiskitExecutorQiskit quantum executor using AerSimulator or other backends.
QiskitTranspilerQiskit backend transpiler.

Functions

hamiltonian_to_sparse_pauli_op [source]

def hamiltonian_to_sparse_pauli_op(hamiltonian: qm_o.Hamiltonian) -> 'SparsePauliOp'

Convert qamomile.observable.Hamiltonian to Qiskit SparsePauliOp.

Parameters:

NameTypeDescription
hamiltonianqm_o.HamiltonianThe qamomile.observable.Hamiltonian to convert

Returns:

'SparsePauliOp' — Qiskit SparsePauliOp representation

Example:

import qamomile.observable as qm_o
from qamomile.qiskit.observable import hamiltonian_to_sparse_pauli_op

# Build Hamiltonian
H = qm_o.Z(0) * qm_o.Z(1) + 0.5 * (qm_o.X(0) + qm_o.X(1))

# Convert to Qiskit
sparse_pauli_op = hamiltonian_to_sparse_pauli_op(H)

Classes

QiskitExecutor [source]

class QiskitExecutor(QuantumExecutor['QuantumCircuit'])

Qiskit quantum executor using AerSimulator or other backends.

Example:

executor = QiskitExecutor()  # Uses AerSimulator by default
counts = executor.execute(circuit, shots=1000)
# counts: {"00": 512, "11": 512}

# With expectation value estimation
from qamomile.qiskit.observable import QiskitExpectationEstimator
executor = QiskitExecutor(estimator=QiskitExpectationEstimator())
exp_val = executor.estimate(circuit, observable)

Constructor

def __init__(self, backend = None, estimator = None)

Initialize executor with backend and optional estimator.

Parameters:

NameTypeDescription
backend``Qiskit backend (defaults to AerSimulator if available)
estimator``Optional QiskitExpectationEstimator for expectation values

Attributes

Methods

bind_parameters
def bind_parameters(
    self,
    circuit: 'QuantumCircuit',
    bindings: dict[str, Any],
    parameter_metadata: ParameterMetadata,
) -> 'QuantumCircuit'

Bind parameter values to the Qiskit circuit.

Parameters:

NameTypeDescription
circuit'QuantumCircuit'The parameterized circuit
bindingsdict[str, Any]Dict mapping parameter names (indexed format) to values
parameter_metadataParameterMetadataMetadata about circuit parameters

Returns:

'QuantumCircuit' — New circuit with parameters bound

estimate
def estimate(
    self,
    circuit: 'QuantumCircuit',
    hamiltonian: 'qm_o.Hamiltonian',
    params: Sequence[float] | None = None,
) -> float

Estimate the expectation value of a Hamiltonian.

Parameters:

NameTypeDescription
circuit'QuantumCircuit'Qiskit QuantumCircuit (state preparation ansatz)
hamiltonian'qm_o.Hamiltonian'The qamomile.observable.Hamiltonian to measure
paramsSequence[float] | NoneOptional parameter values for parametric circuits

Returns:

float — The estimated expectation value

Raises:

execute
def execute(self, circuit: 'QuantumCircuit', shots: int) -> dict[str, int]

Execute circuit and return bitstring counts.

Parameters:

NameTypeDescription
circuit'QuantumCircuit'The quantum circuit to execute
shotsintNumber of measurement shots

Returns:

dict[str, int] — Dictionary mapping bitstrings to counts (e.g., {“00”: 512, “11”: 512})


QiskitTranspiler [source]

class QiskitTranspiler(Transpiler['QuantumCircuit'])

Qiskit backend transpiler.

Converts Qamomile QKernels into Qiskit QuantumCircuits.

Parameters:

NameTypeDescription
use_native_compositeboolIf True (default), use native Qiskit library implementations for QFT/IQFT. If False, use manual decomposition for all composite gates.

Example:

from qamomile.qiskit import QiskitTranspiler
import qamomile as qm

@qm.qkernel
def bell_state(q0: qm.Qubit, q1: qm.Qubit) -> tuple[qm.Bit, qm.Bit]:
    q0 = qm.h(q0)
    q0, q1 = qm.cx(q0, q1)
    return qm.measure(q0), qm.measure(q1)

transpiler = QiskitTranspiler()
circuit = transpiler.to_circuit(bell_state)
print(circuit.draw())

Constructor

def __init__(self, use_native_composite: bool = True)

Initialize the Qiskit transpiler.

Parameters:

NameTypeDescription
use_native_compositeboolIf True, use native Qiskit implementations for QFT/IQFT. If False, use manual decomposition.

Methods

executor
def executor(self, backend = None) -> QiskitExecutor

Create a Qiskit executor.

Parameters:

NameTypeDescription
backend``Qiskit backend (defaults to AerSimulator)

Returns:

QiskitExecutor — QiskitExecutor configured with the backend

Submodules