Skip to main content

Faster simulations 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.

Installation

We recommend installing ffsim using pip when possible:

pip install ffsim

This method won't work natively on Windows, however. Refer to the installation instructions for information about using ffsim on Windows, as well as instructions for installing from source and running ffsim in a container.

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

Multithreading

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

Citing ffsim

You can cite ffsim using the following BibTeX:

@misc{ffsim,
  author = {{The ffsim developers}},
  title = {ffsim: Faster simulations of fermionic quantum circuits},
  howpublished = {\url{https://github.com/qiskit-community/ffsim}},
}

Developer guide

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

Project details


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.66.tar.gz (1.6 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.66-cp310-abi3-manylinux_2_28_x86_64.whl (12.7 MB view details)

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

ffsim-0.0.66-cp310-abi3-manylinux_2_28_aarch64.whl (5.6 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

ffsim-0.0.66-cp310-abi3-macosx_11_0_arm64.whl (645.7 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for ffsim-0.0.66.tar.gz
Algorithm Hash digest
SHA256 f51f53f28ca859ad604db50ae5c191df85a761ee4aba613ff77fb53312639d7d
MD5 026dcb840f15081d9514fe6f43b47eeb
BLAKE2b-256 85f714fbfebb8b3a5bac9cba83ee869fb9754e0b789470e6836833ed545ea7c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for ffsim-0.0.66.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.66-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ffsim-0.0.66-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2b98ba63ee377fc8d927a29ae51fcd7aed14005611e2cdc199d81b2e74cee3ae
MD5 1dd5bc49da317b94f33cd523504a6fb9
BLAKE2b-256 c72e2c8ce7136a9e3af5b2c53c1391074cdd48b446e26cdca26c402f265336aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for ffsim-0.0.66-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.66-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for ffsim-0.0.66-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f83e24df36376b8d80716f87445230a55f2850b1b36cd012e1815937417db189
MD5 9d814bf3e619e1267b13082297b2b2b7
BLAKE2b-256 6dc1b917576564ea2eaa0ab58a2e1d8952fde836e17d50310e27bd9d5c8a090f

See more details on using hashes here.

Provenance

The following attestation bundles were made for ffsim-0.0.66-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.66-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ffsim-0.0.66-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6bbb3deedfa00529a5301aff3e0de2c9339e87ce34c5b196df176419d780f467
MD5 5281cd9aa8bef2018f5d2b558d0fb1da
BLAKE2b-256 a2c3eb9c15382312cb7c4079be5253f7bce92c36336230fc70278a8274478904

See more details on using hashes here.

Provenance

The following attestation bundles were made for ffsim-0.0.66-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