qat.fermion.chemistry.wrapper.MoleculeInfo
- class qat.fermion.chemistry.wrapper.MoleculeInfo(hamiltonian: MolecularHamiltonian, n_electrons: int, noons: Union[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
MolecularHamiltonian
of 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.4096651275295301 * integrals shape ** one_body_integrals : (2, 2) ** two_body_integrals : (2, 2, 2, 2) ) - n_electrons = 4 - noons = [0.2508015021932889, -0.5756450684139017, -0.1606462623557909, -0.05005915198580562, -0.34108752423527294, 4.631947798728623e-05, 0.3820591846665703, 0.4562267235643896, -2.1812835843846727, 0.7305267823964061] - orbital energies = [0.1926751777996219, -0.037325803941252324, 1.0958122591235606, -0.3483155758051236, -0.10065785764858304, 1.0247360240943677, -0.964350940795339, 0.3927438392560454, -0.4565369248855421, -0.4249934831632985] )
- restrict_active_space(threshold_1: Optional[float] = 0.02, threshold_2: Optional[float] = 0.001)
Same method as the
MolecularHamiltonian
methodselect_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.