qat.fermion.chemistry.wrapper.MoleculeInfo
- class qat.fermion.chemistry.wrapper.MoleculeInfo(hamiltonian: MolecularHamiltonian, n_electrons: int, noons: ndarray | List[float], orbital_energies: ndarray)
 MoleculeInfo helper class. This class is a even higher level version of the
MolecularHamiltonian.- Parameters:
 hamiltonian (MolecularHamiltonian) – The MolecularHamiltonian of the studied molecule.
n_electrons (int) – Number of electrons.
noons (Union[np.ndarray, List[float]]) – Natural orbital occupation number.
orbital_energies (np.ndarray) – Orbital energies.
- nqbits
 The total number of qubits.
- Type:
 int
- one_body_integrals
 One-body integrals \(I_{uv}\).
- Type:
 np.ndarray
- two_body_integrals
 Two-body integrals \(I_{uvwx}\).
- Type:
 np.ndarray
- constant_coeff
 Constant coefficient \(r\) (core repulsion).
- Type:
 np.ndarray
- hamiltonian
 The
MolecularHamiltonianof the studied molecule.- Type:
 
- n_electrons
 Number of electrons.
- Type:
 int
- noons
 Natural orbital occupation number.
- Type:
 Union[np.ndarray, List[float]]
- orbital_energies
 Orbital energies.
- Type:
 np.ndarray
Example
import numpy as np from qat.fermion.chemistry import MolecularHamiltonian, MoleculeInfo # For illustration purpose, initialize random one- and two-body integrals, and a constant one_body_integral = np.random.randn(2, 2) two_body_integral = np.random.randn(2, 2, 2, 2) constant = np.random.rand() noons = list(np.random.randn(10)) orbital_energies = list(np.random.randn(10)) # Define the MolecularHamiltonian mol_h = MolecularHamiltonian(one_body_integral, two_body_integral, constant) # Define MoleculeInfo molecule = MoleculeInfo( mol_h, n_electrons=4, noons=noons, orbital_energies=orbital_energies ) print(molecule)
MoleculeInfo( - MolecularHamiltonian( * constant_coeff : 0.3830829050648431 * integrals shape ** one_body_integrals : (2, 2) ** two_body_integrals : (2, 2, 2, 2) ) - n_electrons = 4 - noons = [np.float64(-0.2629883968205699), np.float64(2.4672980648102563), np.float64(-0.14363186890530552), np.float64(-0.29371889156583225), np.float64(-0.018108089967379514), np.float64(-0.24324309581170064), np.float64(0.13012680179209296), np.float64(0.3125783464483872), np.float64(1.607647850010723), np.float64(1.0232799292190877)] - orbital energies = [np.float64(-1.220686791933535), np.float64(0.37410883997591604), np.float64(0.3241568744399122), np.float64(0.16301822459902035), np.float64(1.595414313183352), np.float64(0.04229373041629565), np.float64(1.2925170548790181), np.float64(0.31139943928461206), np.float64(-0.8579308860990174), np.float64(0.7906172308148431)] )
- restrict_active_space(threshold_1: float | None = 0.02, threshold_2: float | None = 0.001)
 Same method as the
MolecularHamiltonianmethodselect_active_space(), except it also modifies all the molecule parameters accordingly (NOONs, orbital energies, and number of electrons).For more information, see
select_active_space()documentation.- Parameters:
 threshold_1 (Optional[float]) – The upper threshold \(\varepsilon_1\) on the NOON of an active orbital.
threshold_2 (Optional[float]) – The lower threshold \(\varepsilon_2\) on the NOON of an active orbital.