qdk_chemistry.plugins.openfermion.conversion module
Conversion utilities for QDK Chemistry to OpenFermion interoperability.
This module provides functions to convert between QDK/Chemistry data structures and OpenFermion operator representations:
Hamiltonian to InteractionOperator / FermionOperator
QubitOperator to/from QubitHamiltonian
- qdk_chemistry.plugins.openfermion.conversion.hamiltonian_to_fermion_operator(hamiltonian)[source]
Convert a QDK/Chemistry Hamiltonian to an OpenFermion FermionOperator.
This is a convenience function that first creates an
InteractionOperatorand then converts it to aFermionOperatorusingopenfermion.transforms.get_fermion_operator.- Return type:
FermionOperator- Parameters:
hamiltonian (Hamiltonian) – The QDK/Chemistry Hamiltonian to convert.
- Returns:
The electronic Hamiltonian as a FermionOperator.
- Return type:
openfermion.FermionOperator
Examples
>>> from qdk_chemistry.plugins.openfermion.conversion import hamiltonian_to_fermion_operator >>> fop = hamiltonian_to_fermion_operator(hamiltonian) >>> print(f"Number of terms: {len(fop.terms)}")
- qdk_chemistry.plugins.openfermion.conversion.hamiltonian_to_interaction_operator(hamiltonian)[source]
Convert a QDK/Chemistry Hamiltonian to an OpenFermion InteractionOperator.
Handles both restricted (RHF) and unrestricted (UHF) Hamiltonians. For restricted Hamiltonians, uses
openfermion.chem.molecular_data.spinorb_from_spatialfor efficient conversion. For unrestricted Hamiltonians, explicitly constructs spin-orbital integrals from all spin channels.The resulting operator uses OpenFermion’s interleaved spin-orbital ordering: spin-orbital
2p= spatial orbitalpalpha,2p+1= spatial orbitalpbeta.- Return type:
InteractionOperator- Parameters:
hamiltonian (Hamiltonian) – The QDK/Chemistry Hamiltonian to convert.
- Returns:
The electronic Hamiltonian as an InteractionOperator.
- Return type:
openfermion.InteractionOperator
Examples
>>> from qdk_chemistry.plugins.openfermion.conversion import hamiltonian_to_interaction_operator >>> iop = hamiltonian_to_interaction_operator(hamiltonian) >>> print(f"Number of spin-orbitals: {iop.n_qubits}")
- qdk_chemistry.plugins.openfermion.conversion.qubit_hamiltonian_to_qubit_operator(qubit_hamiltonian)[source]
Convert a QDK/Chemistry QubitHamiltonian to an OpenFermion QubitOperator.
Translates the dense Pauli string format (e.g.,
"XZII") to OpenFermion’s sparse tuple format (e.g.,((0, 'X'), (1, 'Z'))).- Return type:
QubitOperator- Parameters:
qubit_hamiltonian (QubitHamiltonian) – The QDK/Chemistry QubitHamiltonian to convert.
- Returns:
The equivalent OpenFermion QubitOperator.
- Return type:
openfermion.QubitOperator
Examples
>>> qop = qubit_hamiltonian_to_qubit_operator(qubit_hamiltonian) >>> print(qop)
- qdk_chemistry.plugins.openfermion.conversion.qubit_operator_to_qubit_hamiltonian(qubit_op, encoding=None, fermion_mode_order=None)[source]
Convert an OpenFermion QubitOperator to a QDK/Chemistry QubitHamiltonian.
Translates OpenFermion’s Pauli term format (e.g.,
((0, 'X'), (1, 'Z'))) to the dense Pauli string format used by QDK/Chemistry (e.g.,"XZI...").- Return type:
- Parameters:
qubit_op (openfermion.QubitOperator) – The OpenFermion QubitOperator to convert.
encoding (str | None) – Optional encoding label (e.g.,
"jordan-wigner") to attach to the resulting QubitHamiltonian.fermion_mode_order (FermionModeOrder | str | None) – Fermion mode ordering (
"blocked"or"interleaved") for theQubitHamiltonian.
- Returns:
A QDK/Chemistry QubitHamiltonian.
- Return type:
- Raises:
ValueError – If the QubitOperator has no terms.
Examples
>>> import openfermion as of >>> qop = of.QubitOperator("X0 Z1", 0.5) + of.QubitOperator("Y0 Y1", 0.3) >>> qh = qubit_operator_to_qubit_hamiltonian(qop, encoding="jordan-wigner")