qat.fermion

qat.fermion module aims at providing tools for describing and solving spin and fermionic problems. The code of qat.fermion is open-source and part of the myQLM suite. The source code can be found here.

Hamiltonians constructors

To help you write your own Hamiltonian for various spin and fermionic systems, we provide various Hamiltonian classes.

qat.fermion.hamiltonians.ElectronicStructureHamiltonian

Electronic structure hamiltonian constructor

qat.fermion.hamiltonians.SpinHamiltonian

Spin hamiltonian constructor

Common many-body Hamiltonians

Some of the most common models have their own Hamiltonian generators.

qat.fermion.hamiltonians.make_anderson_model()

The single-impurity Anderson Model

qat.fermion.hamiltonians.make_embedded_model()

The generalized impurity Hamiltonian

qat.fermion.hamiltonians.make_hubbard_model()

Hubbard model hamiltonian

The spin-fermion transforms

Various fermionic-to-spin transforms are provided.

qat.fermion.transforms.transform_to_bk_basis()

Fermionic to spin using Bravyi-Kitaev encoding

qat.fermion.transforms.transform_to_jw_basis()

Fermionic to spin using Jordan-Wigner encoding

qat.fermion.transforms.transform_to_parity_basis()

Fermionic to spin using parity encoding

Fermionic ansatz circuits

We provide various common ansatz generators.

qat.fermion.circuits.make_compressed_ldca_circ()

Constructs a compressed version of the LDCA ansatz circuit (only for Qaptiva™ users)

qat.fermion.circuits.make_general_hwe_circ()

Constructs a hardware efficient ansatz

qat.fermion.circuits.make_ldca_circ()

Constructs a LDCA circuit

qat.fermion.circuits.make_mr_circ()

Constructs a small one-parameter Multi-Reference (MR) circuit on 4 qubits

qat.fermion.circuits.make_mrep_circ()

Constructs the 8-qubit Multi-Reference Excitation Preserving (MREP) ansatz

qat.fermion.circuits.make_shallow_circ()

Constructs the 8-parameter circuit proposed in Keen et al. article (2019)

Atomic and molecular studies

We provide helper classes aimed at automating various aspects of atomic and molecular studies.

qat.fermion.chemistry.wrapper.MolecularHamiltonian

Molecular hamiltonian helper class

qat.fermion.chemistry.wrapper.MoleculeInfo

Helper class for handling molecular systems computations

Unitary Coupled-Cluster (UCC)

We provide various tools specific to UCC.

qat.fermion.chemistry.ucc.compute_active_space_integrals()

Restrict one- and two-body integrals for given list of active indices

qat.fermion.chemistry.ucc.construct_ucc_ansatz()

Builds the parametric state preparation circuit implementing the provided cluster operator

qat.fermion.chemistry.ucc.convert_to_h_integrals()

Converts one and two-body integrals to electronic structure hamiltonian terms

qat.fermion.chemistry.ucc.get_cluster_ops()

Compute the cluster operators

qat.fermion.chemistry.ucc.get_hf_ket()

Get Hartree-Fock state stored as a vector with right-to-left orbitals indexing

qat.fermion.chemistry.ucc.guess_init_params()

Find initial parameters using Møller-Plesset perturbation theory

qat.fermion.chemistry.ucc.select_active_orbitals()

Selects the right active space and freezes core electrons according to their natural orbitals occupation numbers

qat.fermion.chemistry.ucc.transform_integrals_to_new_basis()

Change one and two-body integrals to new basis

Quantum subspace expansion

An implementation of the quantum subspace expansion is available.

qat.fermion.chemistry.qse.apply_quantum_subspace_expansion()

Apply quantum subspace expansion to a given Hamiltonian

Quantum phase estimation

An implementation of the quantum phase estimation algorithm is available.

qat.fermion.phase_estimation.perform_phase_estimation()

Perform quantum phase estimation on an ElectronicStructureHamiltonian

Utility functions

Two utility functions may be used to speed up your own implementations.

qat.fermion.trotterisation.make_trotterisation_routine()

Trotterizes (first order) the evolution operator of a Hamiltonian

qat.fermion.chemistry.pyscf_tools.perform_pyscf_computation()

Helper function to perform various calculations using PySCF