Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

ferric

A quantum chemistry engine written in Rust, with Python bindings and a TOML-driven command line. libint2 supplies the integrals and libxc the functionals.

Documentation: https://matthew.thegoldeys.com/ferric/

Install

pip install ferric      # Linux x86_64, CPython 3.10–3.13

The wheel needs no compiler. To change ferric itself or to use MPI, build from source; see Installation.

Platform Wheel on PyPI Source build
Linux x86_64 (manylinux_2_28), CPython 3.10–3.13 yes yes, the only tested platform
Linux aarch64 no not tested
macOS (x86_64, arm64) not yet (wanted; no wheel is built) not tested
Windows no not supported

Each release also publishes an sdist, but it is not a self-contained build: it compiles only where libint2 (2.13.1 or the 2.7.2 export the wheels use), OpenBLAS/LAPACK, libxc, Eigen3 and a Rust toolchain are already installed (LIBINT2_PREFIX points at libint2). pip install on a platform without a wheel falls back to the sdist and fails without them. Details: Installation.

Starting with 0.1.0rc8, each GitHub release also carries a large-libint wheel per CPython (ferric-<version>-1largeam-cp3NN-...whl): the same version and commit, built against conda-forge's libint2 2.13.1 (l = 7 shells, analytic 3- and 2-centre second derivatives, G12/F12 integrals) instead of the PyPI wheel's smaller libint2. It is not a strict superset (the PyPI wheel goes higher in one-electron second derivatives), and RI Hessians do not need it. ferric.build_info()["libint_max_am"] shows which one is loaded. Details: Installation.

A first calculation

import ferric

water = ferric.Molecule.from_xyz_string(
    """3
water
O   0.000000   0.000000   0.117790
H   0.000000   0.755453  -0.471161
H   0.000000  -0.755453  -0.471161
""",
    0,
    1,
)  # charge, multiplicity

rhf = ferric.run_rhf(water, ferric.BasisSet.bundled("sto-3g"))
print(rhf.converged, f"{rhf.energy:.10f}")  # True -74.9631468000

The same calculation from the command line (ferric is installed with the wheel):

# water-rhf.toml
[molecule]
xyz = "water.xyz"

[basis]
name = "sto-3g"

[method]
kind = "rhf"
printf '3\nwater\nO 0.000000 0.000000 0.117790\nH 0.000000 0.755453 -0.471161\nH 0.000000 -0.755453 -0.471161\n' > water.xyz
OPENBLAS_NUM_THREADS=1 ferric water-rhf.toml

Continue with Your first calculation and the Sharp bits.

What it does

Family Examples Page
SCF and DFT RHF/UHF/ROHF, RKS/UKS/ROKS via libxc (LDA to meta-GGA, range-separated hybrids, VV10, D3(BJ)), analytic gradients, optimization, frequencies (analytic Hessian for RHF/UHF/ROHF and closed-shell KS LDA/GGA; finite differences otherwise), PCM/COSMO solvation SCF and DFT
MP2 family RI-MP2, attenuated MP2, SCS-MP2 and SCS-MP2(2terfc), OO-MP2, Laplace and SOS-MP2, MP3, local MP2, MP2-V The MP2 family
Coupled cluster CCD, CCSD, CCSD(T), LinLCCD, double hybrids Coupled cluster
Response PDEP-RPA, GW (G0W0, COHSEX, evGW), BSE-TDA, TDDFT/TDA, polarizabilities and C6 RPA and GW
Constrained DFT charge/spin constraints, electron-transfer couplings Constrained DFT
Embedding QM/MM with link atoms, smeared and polarizable charges QM/MM

Which of these run from the CLI, which are Python-only, and which support open shells or gradients is tabulated in Capabilities and validation.

Implemented ≠ validated. Working code is not a checked number. Each capability is graded (Proven / Smoke / Spike) against independent references on the same page. Read it before relying on a result.

Why it exists

ferric is organized around electronic response: how the density reacts to a perturbation, the object behind polarizabilities, dielectric screening and dispersion. Attenuated MP2, PDEP-RPA/GW and constrained DFT are three ways of getting that object right where standard methods get it wrong. See Electronic response.

Building from source and contributing

git clone https://github.com/mgoldey/ferric && cd ferric
scripts/install-libint.sh ~/.local/libint2-2.13.1   # prebuilt libint2, seconds
export LIBINT2_PREFIX=~/.local/libint2-2.13.1
cargo build --release
OPENBLAS_NUM_THREADS=1 ./target/release/ferric examples/water-rhf.toml
OPENBLAS_NUM_THREADS=1 cargo test --workspace

See CONTRIBUTING.md for the development loop, the Python binding tests and the push gate.

Citing

If you use ferric, cite the software (see CITATION.cff) and the papers for the methods you ran, listed in References and citing.

License

Licensed under either of

at your option.

Third-party code

crates/ferric-integrals/shim/libecpint/ vendors libecpint (MIT, Copyright (c) 2021 Robert A. Shaw); its license is retained at crates/ferric-integrals/shim/libecpint/LICENSE.

ferric links against external libraries with their own licenses, notably libint2 (LGPL-3.0-or-later), libxc (MPL-2.0), OpenBLAS/LAPACK (BSD), and optionally xtb (LGPL-3.0), which govern redistribution of binaries built against them. libint2 is a required dependency, so distributing a compiled ferric binary means distributing LGPL-linked code, which carries obligations (relinking, source availability) beyond ferric's own MIT/ Apache-2.0 terms. Building from source for your own use is unaffected.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Metadata

Release files for ferric 0.1.0rc10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ferric 0.1.0rc10
File Size Uploaded Provenance Actions
ferric-0.1.0rc10.tar.gz 14.6 MB With provenance Details for ferric-0.1.0rc10.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for ferric 0.1.0rc10
File Actions
ferric-0.1.0rc10-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details for ferric-0.1.0rc10-cp313-cp313-manylinux_2_28_x86_64.whl
ferric-0.1.0rc10-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details for ferric-0.1.0rc10-cp312-cp312-manylinux_2_28_x86_64.whl
ferric-0.1.0rc10-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details for ferric-0.1.0rc10-cp311-cp311-manylinux_2_28_x86_64.whl
ferric-0.1.0rc10-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details for ferric-0.1.0rc10-cp310-cp310-manylinux_2_28_x86_64.whl

Total release size: 425.5 MB

Release files / ferric-0.1.0rc10.tar.gz

Download URL ferric-0.1.0rc10.tar.gz
Size 14.6 MB
Tags Source
SHA-256 checksum
How to use checksums
41260b7b91ae656e193886ec89b80550fee655c2c4ac3288218cdeb8e3703e5d
BLAKE2b-256 checksum
How to use checksums
68f1ebba4a0bef15a95bcfa7e92105c6fc1626645f23f717f3b8f3ba9eb6ed65
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Release files / ferric-0.1.0rc10-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL ferric-0.1.0rc10-cp313-cp313-manylinux_2_28_x86_64.whl
Size 102.7 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4360880f7fa74e388b9d55dfa72f7f7ff2bc3e92757a66eff5d1635c81f8dba1
BLAKE2b-256 checksum
How to use checksums
e180d9a651f6e6ffcad392650790a9ce61d554664994566f041977227874b168
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Release files / ferric-0.1.0rc10-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL ferric-0.1.0rc10-cp312-cp312-manylinux_2_28_x86_64.whl
Size 102.7 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d86820a90ba7de756a336957e8086f9542bad1da93d176f1de48f5dd698f5f66
BLAKE2b-256 checksum
How to use checksums
20cfa1bb0f0c7f0643f05ecc2a91466e38d8be8e55a2cc37b7b28fc7dc3c98ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Release files / ferric-0.1.0rc10-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL ferric-0.1.0rc10-cp311-cp311-manylinux_2_28_x86_64.whl
Size 102.7 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b8d45a7dcbe9b2b26ad85bd3a8c132687f90aa918e65c8c70b2a7374993e2c40
BLAKE2b-256 checksum
How to use checksums
3684de85a28af159b7b82ca78a73bccec9aca4ffe05400e7009975a4963dcbba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Release files / ferric-0.1.0rc10-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL ferric-0.1.0rc10-cp310-cp310-manylinux_2_28_x86_64.whl
Size 102.7 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
525999caf92db631a6473b1e0d067a1d60752d87316951147bbf95c8c6496b46
BLAKE2b-256 checksum
How to use checksums
4be1bb216f91b40ae7563413c32183953b393205e08c3a941f25ff1d34f549f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Security for ferric 0.1.0rc10

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 5 files in this release have been uploaded with provenance metadata.

Select from 5 files

Attestation for ferric-0.1.0rc10.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page