Skip to content

UCL-CCS/ferrmion

Repository files navigation

Release CICD Documentation Status DOI

ferrmion

This codebase contains methods to generate qubit Hamiltonians from fermionic Hamiltonians.

Interop

Most quantum SDKs will have methods to convert common python types to native objects, so it's usually possible to create an operator using the .edge_operator and number_operator functions of a FermionQubitEncoding.

Please open an issue or pull request on github if you would like to suggest a documented interop.

Qiskit

ferrmion provides a method to convert its narive encoding class FermionQubitencoding to a qiskit_nature.QubitMapper.

To use this feature, you'll need to install optional dependencies with:

pip install ferrmion[qiskit]

For more details, see the interop documentation.

Encodings

  • Ternary Tree encodings

    Any ternary tree can be generated by adding nodes to a tree structure, and functions exist to easily create standard encodings including: Jordan-Wigner, Parity, Bravyi-Kitaev and JKMN

  • MaxNTO encodings

    A non-ternary-tree majorana string encoding with the maximal non-trivial overlap possible. Only works for systems with even numbers of modes (i.e. all spin-orbit Hamiltonians)

Optimizations

Enumeration Scheme

Ternary Trees

Hamiltonians

Functions to produce Hamiltonian templates and enumerated encodings are available in ferrmion.hamiltonians

  • Molecular Hamiltonian (Born-Oppenheimer Approximation)
  • Hubbard Hamiltonian (3D Square lattice)

Development

For information on development, check out the project documentation.

If you find an error in the code or documentation, please raise an issue on the GitHub Repo.