qdk_chemistry.algorithms.circuit_mapper package
QDK/Chemistry circuit mapper module.
- class qdk_chemistry.algorithms.circuit_mapper.CircuitMapperFactory
Bases:
AlgorithmFactoryFactory class for creating CircuitMapper instances.
- class qdk_chemistry.algorithms.circuit_mapper.PSPMapper
Bases:
CircuitMapperCircuit mapper using the PREPARE-SELECT-PREPARE pattern.
Composes a block encoding from:
PREPARE — amplitude-loading into the ancilla register, resolved via the
preparesetting. Defaults toDensePureStatePreparation.SELECT — Pauli SELECT oracle applied on the system register, constructed directly from the block-encoding container’s SELECT data.
The two callables are stitched together by the Q#
PrepSelPrepoperation:\[B[H] = \mathrm{PREPARE}^\dagger \cdot \mathrm{SELECT} \cdot \mathrm{PREPARE}\]When the input is an
LCUWalkContainer, the block encoding is additionally wrapped with the reflection operator to form a quantum walk:\[W = (2|0\rangle\langle 0| - I) \cdot B[H]\]- __init__()
Initialize the PSPMapper.
- resolve_lcu(container)
Unwrap a container into its LCU data and whether it is a quantum walk.
- Parameters:
container (
UnitaryContainer) – The container held by the unitary representation.- Return type:
- Returns:
The LCU data and whether the container is a quantum walk.
- Raises:
ValueError – If the container is neither an LCU nor an LCU walk.
- build_prepare_select_ops(container)
Return the PREPARE and SELECT Q# oracles and the system register size.
- Parameters:
container (
UnitaryContainer) – The container held by the unitary representation.- Return type:
- Returns:
The PREPARE Q# callable, the SELECT Q# callable, and the system register size.
- class qdk_chemistry.algorithms.circuit_mapper.PSPMapperSettings
Bases:
SettingsSettings for the PSPMapper.
- prepare
Algorithm reference for the PREPARE oracle state preparation. Defaults to
DensePureStatePreparation.
- __init__()
Initialize the settings for PSPMapper.
- class qdk_chemistry.algorithms.circuit_mapper.PauliSequenceMapper
Bases:
CircuitMapperCircuit mapper using Pauli product formula term sequences.
Given a unitary expressed as a Pauli product formula \(U \approx \left[ \prod_j e^{-i\theta_j P_j} \right]^{r}\), this mapper constructs a circuit for \(U\) using the following pattern:
Each Pauli operator \(P_j\) is basis-rotated into the \(Z\) basis.
Qubits involved in \(P_j\) are entangled into a sequence using CNOT gates.
- A \(R_z\) rotation implements
\(e^{-i\,\theta_j\,P_j} \;\rightarrow\; R_z(2 \theta_j)\).
The basis rotations and entangling operations are uncomputed.
Notes
Requires a
PauliProductFormulaContainerfor the unitary representation.
- __init__()
Initialize the PauliSequenceMapper.
- class qdk_chemistry.algorithms.circuit_mapper.PauliSequenceMapperSettings
Bases:
SettingsSettings for PauliSequenceMapper.
- __init__()
Initialize PauliSequenceMapperSettings with default values.