Core (Rust extension)#
The ferrmion.core module contains the Rust-accelerated functions that power
the encoding and optimisation pipelines. All functions are compiled via PyO3 and
available directly on the ferrmion namespace through re-exports in
ferrmion/__init__.py.
- class ferrmion.core.FermionHamiltonian(*, terms: dict[str, ndarray[tuple[int, ...], dtype[float64]]] | None = None, constant_energy: float = 0.0)[source]#
Bases:
objectBuilder for fermionic Hamiltonians.
- add_constant(constant_energy: float) FermionHamiltonian[source]#
- annihilation() FermionHamiltonian[source]#
- constant_energy: float#
- creation() FermionHamiltonian[source]#
- property n_modes: int#
- property signatures_and_coefficients: tuple[list[str], list[ndarray[tuple[int, ...], dtype[float64]]]]#
- property terms: dict[str, ndarray[tuple[int, ...], dtype[float64]]]#
- to_majorana_sparse() MajoranaSparse[source]#
- with_coefficients(coefficients: ndarray[tuple[int, ...], dtype[float64]]) FermionHamiltonian[source]#
- class ferrmion.core.MajoranaEncoding(ipowers: ndarray[tuple[int, ...], dtype[uint8]], symplectics: ndarray[tuple[int, ...], dtype[bool]], vacuum_state: ndarray[tuple[int, ...], dtype[bool]] | None = None)[source]#
Bases:
objectA fermion-to-qubit encoding defined by its Majorana operators.
- anneal_enumeration(fham: FermionHamiltonian, temperature: float | None = None, initial_guess: list[int] | None = None, coefficient_weighted: bool = False, seed: int | None = None) float[source]#
- apply_mode_enumeration(mode_op_map: list[int]) MajoranaEncoding[source]#
- batch_pauli_weights(fham: FermionHamiltonian, permutations: ndarray[tuple[int, ...], dtype[uint64]]) tuple[ndarray[tuple[int, ...], dtype[float64]], ndarray[tuple[int, ...], dtype[float64]]][source]#
- static bravyi_kitaev(n_modes: int, n_qubits: int | None = None) MajoranaEncoding[source]#
- decode(states: ndarray[tuple[int, ...], dtype[bool]]) ndarray[tuple[int, ...], dtype[bool]][source]#
- edge_operator(edge_indices: tuple[int, int], coeff: complex = 1.0, with_conjugate: bool = False) QubitHamiltonian[source]#
- encode(fham: FermionHamiltonian) QubitHamiltonian[source]#
- encode_annealed(fham: FermionHamiltonian, temperature: float | None = None, initial_guess: list[int] | None = None, coefficient_weighted: bool = True, seed: int | None = None) QubitHamiltonian[source]#
- encode_fermion_product(signature: str, mode_indices: list[int], coeff: complex = 1.0, with_conjugate: bool = False) QubitHamiltonian[source]#
- static from_flatpack(flatpack: TTFlatpack, n_qubits: int | None = None) MajoranaEncoding[source]#
- static from_json(data: dict) MajoranaEncoding[source]#
- hartree_fock_state(fermionic_hf_state: ndarray[tuple[int, ...], dtype[bool]], mode_op_map: ndarray[tuple[int, ...], dtype[uint64]] | None = None) ndarray[tuple[int, ...], dtype[bool]][source]#
- interaction_operator(mode_indices: tuple[int, int, int, int], coeff: complex = 1.0, physicist_notation: bool = True, with_conjugate: bool = False) QubitHamiltonian[source]#
- property ipowers: ndarray[tuple[int, ...], dtype[uint8]]#
- static jkmn(n_modes: int, n_qubits: int | None = None) MajoranaEncoding[source]#
- static jordan_wigner(n_modes: int, n_qubits: int | None = None) MajoranaEncoding[source]#
- static maxnto(n_modes: int) MajoranaEncoding[source]#
- property n_modes: int#
- property n_qubits: int#
- number_operator(mode: int, coeff: complex = 1.0) QubitHamiltonian[source]#
- static parity(n_modes: int, n_qubits: int | None = None) MajoranaEncoding[source]#
- property symplectic_matrix: ndarray[tuple[int, ...], dtype[bool]]#
- property vacuum_state: ndarray[tuple[int, ...], dtype[bool]]#
- class ferrmion.core.MajoranaSparse[source]#
Bases:
objectA sparse Majorana-operator representation of a Hamiltonian.
- property coefficients: ndarray[tuple[int, ...], dtype[complex128]]#
- property constant: float#
- property indices: list[list[int]]#
- class ferrmion.core.QubitHamiltonian(data: dict[str, complex] | None = None)[source]#
Bases:
objectMapping from Pauli strings to complex coefficients.
- clifford_heuristic(temperature: float | None = None, coefficient_weighted: bool = False, seed: int | None = None, clifford_subset: str = 'chs') QubitHamiltonian[source]#
- property n_qubits: int#
- randomised_subsystem_descent(iterations: int, subsystem_dimension: int, temperature: float | None = None, coefficient_weighted: bool = False, sampler: str = 'hamming', seed: int | None = None, clifford_subset: str = 'chs') QubitHamiltonian[source]#
- ferrmion.core.encode_topphatt(flatpack: TTFlatpack, n_qubits: int, fham: FermionHamiltonian, parallelize: bool = True, heuristic: str = 'min_weight', seed: int | None = None, backend: str = 'dense_transpose') tuple[QubitHamiltonian, MajoranaEncoding][source]#
- ferrmion.core.hatt(fham: FermionHamiltonian, n_modes: int | None = None) tuple[TTFlatpack, int][source]#
- ferrmion.core.pauli_to_symplectic(pauli: str, ipower: int) tuple[ndarray[tuple[int, ...], dtype[bool]], int][source]#
- ferrmion.core.symplectic_product(left: ndarray[tuple[int, ...], dtype[bool]], right: ndarray[tuple[int, ...], dtype[bool]]) tuple[int, ndarray[tuple[int, ...], dtype[bool]]][source]#
- ferrmion.core.symplectic_to_pauli(symplectic: ndarray[tuple[int, ...], dtype[bool]], ipower: int = 0) tuple[str, int][source]#
- ferrmion.core.symplectic_to_sparse(symplectic: ndarray[tuple[int, ...], dtype[bool]], ipower: int) tuple[str, ndarray[tuple[int, ...], dtype[uint64]], complex][source]#
- ferrmion.core.topphatt(flatpack: TTFlatpack, n_qubits: int, hamiltonian: MajoranaSparse, parallelize: bool = True, heuristic: str = 'min_weight', seed: int | None = None, backend: str = 'dense_transpose') MajoranaEncoding[source]#