Base

class slowquant.qiskit_interface.base.FermionicOperator(annihilation_operator: dict[str, list[a_op]] | a_op, factor: dict[str, float] | float)

Initialize fermionic operator class.

Parameters:
  • annihilation_operator – Annihilation operator.

  • factor – Factor in front of operator.

property dagger: FermionicOperator

Complex conjugation of fermionic operator.

Returns:

New fermionic operator.

get_folded_operator(num_inactive_orbs: int, num_active_orbs: int, num_virtual_orbs: int) FermionicOperator

Get folded operator.

Warning, multiplication of folded operators, might give wrong operators. (I have not quite figured out a good programming structure that will not allow multiplication after folding)

Note, that the indicies of the folded operator is remapped, such that idx=0 is the first index in the active space.

Parameters:
  • num_inactive_orbs – Number of spatial inactive orbitals.

  • num_active_orbs – Number of spatial active orbitals.

  • num_virtual_orbs – Number of spatial virtual orbitals.

Returns:

Folded fermionic operator.

get_info() tuple[list[list[int]], list[list[int]], list[float]]

Return operator excitation in ordered strings with coefficient.

get_qiskit_form(num_orbs: int) dict[str, float]

Get fermionic operator on qiskit form.

Parameters:

num_orbs – Number of spatial orbitals.

Returns:

Fermionic opetaros on qiskit form.

property operator_count: dict[int, int]

Count number of operators of different lengths.

Returns:

Number of operators of every length.

class slowquant.qiskit_interface.base.a_op(spinless_idx: int, spin: str, dagger: bool)

Initialize fermionic annihilation operator.

Parameters:
  • spinless_idx – Spatial orbital index.

  • spin – Alpha or beta spin.

  • dagger – If creation operator.

slowquant.qiskit_interface.base.do_extended_normal_ordering(fermistring: FermionicOperator) tuple[dict[str, list[a_op]], dict[str, float]]

Reorder fermionic operator string.

The string will be ordered such that all creation operators are first, and annihilation operators are second. Within a block of creation or annihilation operators the largest spin index will be first and the ordering will be descending.

Returns:

Reoreder operator dict and factor dict.

slowquant.qiskit_interface.base.operator_string_to_key(operator_string: list[a_op]) str

Make key string to index a fermionic operator in a dict structure.

Parameters:

operator_string – Fermionic opreators.

Returns:

Dictionary key.

slowquant.qiskit_interface.base.operator_to_qiskit_key(operator_string: list[a_op], remapping: dict[int, int]) str

Make key string to index a fermionic operator in a dict structure.

Parameters:
  • operator_string – Fermionic opreators.

  • remapping – Map that takes indices from alpha,beta,alpha,beta to alpha,alpha,beta,beta ordering.

Returns:

Dictionary key.