Skip to main content

Faster simulation of fermionic quantum circuits.

Project description

ffsim

ffsim is a software library for simulating fermionic quantum circuits that conserve particle number and the z component of spin. This category includes many quantum circuits used for quantum chemistry simulations. By exploiting the symmetries and using specialized algorithms, ffsim can simulate these circuits much faster than a generic quantum circuit simulator.

Documentation

Documentation is located at the project website. You might also be interested in the paper about ffsim.

Installation

On Linux and macOS, you can install ffsim using pip:

pip install ffsim

See the installation instructions for information about using ffsim on Windows, as well as instructions for installing from source and running ffsim in a container.

Get started

Visit State vectors and gates to start learning ffsim's core concepts, or jump straight into a tutorial. Check out the guides for help with specific tasks, or visit the API reference for detailed documentation of all function and classes available in the library.

Multithreading

Some ffsim functions implemented in Rust use multithreading. The number of threads can be controlled using the environment variable RAYON_NUM_THREADS. For example, to disable multithreading, set this variable as RAYON_NUM_THREADS=1.

Code example

import numpy as np
import pyscf

import ffsim

# Generate the Hamiltonian for an N2 molecule using PySCF and ffsim's wrapper for it
mol = pyscf.gto.Mole()
mol.build(atom=[["N", (0, 0, 0)], ["N", (1.0, 0, 0)]], basis="6-31g", symmetry="Dooh")
scf = pyscf.scf.RHF(mol).run()
mol_data = ffsim.MolecularData.from_scf(scf, active_space=range(4, mol.nao_nr()))
norb, nelec = mol_data.norb, mol_data.nelec
hamiltonian = mol_data.hamiltonian

# Convert the Hamiltonian to a SciPy LinearOperator
linop = ffsim.linear_operator(hamiltonian, norb=norb, nelec=nelec)

# Generate a random orbital rotation
orbital_rotation = ffsim.random.random_unitary(norb, seed=1234)

# Create the Hartree-Fock state and apply the orbital rotation to it
vec = ffsim.hartree_fock_state(norb, nelec)
vec = ffsim.apply_orbital_rotation(vec, orbital_rotation, norb=norb, nelec=nelec)

# Compute the energy of the state
energy = np.vdot(vec, linop @ vec).real
print(energy)  # prints -104.17181289596

Citing ffsim

You can cite ffsim using the following BibTeX:

@misc{sung2026ffsim,
      title={ffsim: Faster simulation of fermionic quantum circuits},
      author={Kevin J. Sung and Inho Choi and Mirko Amico and Bartholomew Andrews and Esra Ayantuna and Yukio Kawashima and Wan-Hsuan Lin and David Omanovic and Samuele Piccinelli and Javier Robledo Moreno and Abdullah Ash Saki and James Shee and Soyoung Shin and Minh C. Tran and Kento Ueda and Haimeng Zhang and Mario Motta},
      year={2026},
      eprint={2605.03123},
      archivePrefix={arXiv},
      primaryClass={quant-ph},
      url={https://arxiv.org/abs/2605.03123},
}

Developer guide

See the developer guide for instructions on contributing code to ffsim.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ffsim-0.0.80.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ffsim-0.0.80-cp310-abi3-manylinux_2_28_x86_64.whl (725.5 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ x86-64

ffsim-0.0.80-cp310-abi3-manylinux_2_28_aarch64.whl (713.6 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

ffsim-0.0.80-cp310-abi3-macosx_11_0_arm64.whl (665.9 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file ffsim-0.0.80.tar.gz.

File metadata

  • Download URL: ffsim-0.0.80.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ffsim-0.0.80.tar.gz
Algorithm Hash digest
SHA256 36720fb8e6c7a7e80641d7b65b8a7eb3f7ac0167cb5196c243ac825b07c7c616
MD5 bbb46a5f12d5028ab5c7dc8534182b60
BLAKE2b-256 a8c367244cbfce87640aabaca788a73d7f373b2943048e87ea11016f0d7f404b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ffsim-0.0.80.tar.gz:

Publisher: build-and-release.yml on qiskit-community/ffsim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ffsim-0.0.80-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ffsim-0.0.80-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7ed67f7f600bddd083d400dae32567ebff5596efe8a5f2ab0264aa6abdf23971
MD5 761bad79861a2d6eb07965987bf270b4
BLAKE2b-256 66ab3d77a700a11c0ec944d32cd581c5e278d592e689e23ec4964e15aad9a290

See more details on using hashes here.

Provenance

The following attestation bundles were made for ffsim-0.0.80-cp310-abi3-manylinux_2_28_x86_64.whl:

Publisher: build-and-release.yml on qiskit-community/ffsim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ffsim-0.0.80-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for ffsim-0.0.80-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 831edbdba71390529ff1dde4f8904f06e1b5fdab1ebc0c64ba12cfdc157da1f8
MD5 edc37ea87adf0ef786f069e7bc9b26f2
BLAKE2b-256 143e70984c3aa9df291023df95bf9c37862c43ddbfe8bc907f587b3d00b5d0b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for ffsim-0.0.80-cp310-abi3-manylinux_2_28_aarch64.whl:

Publisher: build-and-release.yml on qiskit-community/ffsim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ffsim-0.0.80-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ffsim-0.0.80-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae0f6e6f60f148fd1e2ff9c543e239895e4430f648e24288a2ae9d8ff9990809
MD5 f901234ff2218549b5e5d60e7f346bbb
BLAKE2b-256 8d34376d225fdf32ed569130d5f38fa064742d528f0c4ee21f1e6130d51df5c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for ffsim-0.0.80-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: build-and-release.yml on qiskit-community/ffsim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page