# qml.qchem.obs.one_particle¶

one_particle(matrix_elements, core=None, active=None, cutoff=1e-12)[source]

Generates the FermionOperator representing a given one-particle operator required to build many-body qubit observables.

Second quantized one-particle operators are expanded in the basis of single-particle states as

$\hat{T} = \sum_{\alpha, \beta} \langle \alpha \vert \hat{t} \vert \beta \rangle [\hat{c}_{\alpha\uparrow}^\dagger \hat{c}_{\beta\uparrow} + \hat{c}_{\alpha\downarrow}^\dagger \hat{c}_{\beta\downarrow}].$

In the equation above the indices $$\alpha, \beta$$ run over the basis of spatial orbitals $$\phi_\alpha(r)$$. Since the operator $$\hat{t}$$ acts only on the spatial coordinates, the spin quantum numbers are indicated explicitly with the up/down arrows. The operators $$\hat{c}^\dagger$$ and $$\hat{c}$$ are the particle creation and annihilation operators, respectively, and $$\langle \alpha \vert \hat{t} \vert \beta \rangle$$ denotes the matrix elements of the operator $$\hat{t}$$

$\langle \alpha \vert \hat{t} \vert \beta \rangle = \int dr ~ \phi_\alpha^*(r) \hat{t}(r) \phi_\beta(r).$

If an active space is defined (see active_space()), the summation indices run over the active orbitals and the contribution due to core orbitals is computed as $$t_\mathrm{core} = 2 \sum_{\alpha\in \mathrm{core}} \langle \alpha \vert \hat{t} \vert \alpha \rangle$$.

Parameters
• matrix_elements (array[float]) – 2D NumPy array with the matrix elements $$\langle \alpha \vert \hat{t} \vert \beta \rangle$$

• core (list) – indices of core orbitals, i.e., the orbitals that are not correlated in the many-body wave function

• active (list) – indices of active orbitals, i.e., the orbitals used to build the correlated many-body wave function

• cutoff (float) – Cutoff value for including matrix elements. The matrix elements with absolute value less than cutoff are neglected.

Returns

an instance of OpenFermion’s FermionOperator representing the one-particle operator $$\hat{T}$$.

Return type

FermionOperator

Example

>>> matrix_elements = np.array([[-1.27785301e+00,  0.00000000e+00],
...                             [ 1.52655666e-16, -4.48299696e-01]])
>>> t_op = one_particle(matrix_elements)
>>> print(t_op)
-1.277853006156875 [0^ 0] +
-1.277853006156875 [1^ 1] +
-0.44829969610163756 [2^ 2] +
-0.44829969610163756 [3^ 3]