FermionicGaussianState#

class FermionicGaussianState(transformation_matrix, occupied_orbitals=None, qubit_mapper=None, *, validate=True, rtol=1e-05, atol=1e-08, **circuit_kwargs)[source]#

Bases: QuantumCircuit

A circuit that prepares a fermionic Gaussian state.

A fermionic Gaussian state is a state of the form

\[b^\dagger_1 \cdots b^\dagger_{N_p} \lvert \overline{\text{vac}} \rangle,\]

where

\[\begin{split}\begin{pmatrix} b^\dagger_1 \\ \vdots \\ b^\dagger_N \\ \end{pmatrix} = W \begin{pmatrix} a^\dagger_1 \\ \vdots \\ a^\dagger_N \\ a_1 \\ \vdots \\ a_N \end{pmatrix}.\end{split}\]
  • \(a^\dagger_1, \ldots, a^\dagger_{N}\) are the fermionic creation operators.

  • \(W\) is an \(N \times 2N\) matrix such that \(b^\dagger_1, \ldots, b^\dagger_{N}\) also satisfy the fermionic anticommutation relations.

  • \(\lvert \overline{\text{vac}} \rangle\) is the mutual 0-eigenvector of the operators \(\{b_j^\dagger b_j\}\).

The matrix \(W\) has the block form

\[\begin{pmatrix} W_1 & W_2 \end{pmatrix},\]

where \(W_1\) and \(W_2\) must satisfy

\[\begin{split}W_1 W_1^\dagger + W_2 W_2^\dagger = I \\ W_1 W_2^T + W_2 W_1^T = 0.\end{split}\]

The matrix \(W\) is commonly obtained by calling the diagonalizing_bogoliubov_transform() method of the QuadraticHamiltonian class. This matrix is used to create circuits that prepare eigenstates of the quadratic Hamiltonian.

Currently, only the Jordan-Wigner transformation is supported.

Reference: arXiv:1711.05395

Parameters:
  • transformation_matrix (np.ndarray) – The matrix \(W\) that specifies the coefficients of the new creation operators in terms of the original creation and annihilation operators. This matrix must satisfy special constraints, as detailed above.

  • occupied_orbitals (Sequence[int] | None) – The pseudo-particle orbitals to fill. These refer to the indices of the operators \(\{b^\dagger_j\}\) from the main body of the docstring of this function. The default behavior is to use the empty set of orbitals, which corresponds to a state with zero pseudo-particles.

  • qubit_mapper (QubitMapper | None) – The QubitMapper. The default behavior is to create one using the call JordanWignerMapper().

  • validate (bool) – Whether to validate the inputs.

  • rtol (float) – Relative numerical tolerance for input validation.

  • atol (float) – Absolute numerical tolerance for input validation.

  • circuit_kwargs – Keyword arguments to pass to the QuantumCircuit initializer.

Raises:
  • ValueError – transformation_matrix must be a 2-dimensional array.

  • ValueError – transformation_matrix must have shape (n_orbitals, 2 * n_orbitals).

  • ValueError – transformation_matrix does not describe a valid transformation of fermionic ladder operators. A valid matrix has the block form \((W_1 \quad W_2)\) where \(W_1 W_1^\dagger + W_2 W_2^\dagger = I\) and \(W_1 W_2^T + W_2 W_1^T = 0\).

  • NotImplementedError – Currently, only the Jordan-Wigner Transform is supported. Please use the qiskit_nature.second_q.mappers.JordanWignerMapper.

Attributes

Methods