Skip to main content

Open Computational Chemistry (OCC)

Build & Test PyPI version PyPI Downloads Zenodo DOI Paper DOI

A next-generation quantum chemistry and crystallography program and library, designed for modern computational workflows.

Note: OCC is in active development and undergoes frequent changes. The API and features are not yet stable.

Installation

From PyPI

The easiest way to install OCC is via pip:

pip install occpy

Supported Python versions:

  • Python 3.10, 3.11, 3.12, 3.13

Pre-built wheels are available for:

  • Linux (x86_64)
  • macOS (x86_64 and ARM64/Apple Silicon via universal2 wheels)

Features

Quantum Chemistry

OCC provides comprehensive functionality for ground-state single-point calculations:

  • Electronic Structure Methods

    • Hartree-Fock (Restricted, Unrestricted, and General Spinorbitals)
    • Density-Functional Theory (Restricted & Unrestricted)
      • Supported approximations: LDA, GGA, meta-GGA
      • Global hybrid functionals (range-separated support planned)
    • Density fitting (RI-JK) with auxiliary basis sets
    • GFN2-xTB semi-empirical tight-binding (molecular + periodic; see below)
    • Implicit solvation via SMD, CPCM-X for xTB
    • XDM dispersion model
    • D4 (DFT-D4) dispersion correction
  • Property Calculations

    • Molecular and atomic multipole moments (up to hexadecapole)
    • Electron density, Electrostatic potential
    • CHELPG charges
    • Isosurfaces, generation of volumetric data and more...

Crystal Structure Analysis

  • CIF file processing (via gemmi)
  • Advanced periodic analysis:
    • Fast periodic bond detection
    • Symmetry-unique molecule generation
    • Dimer identification
  • Energy calculations:
    • CrystalExplorer model energies
    • Automatic direct space lattice energy summation
    • Wolf summation for neutral molecular crystals
  • Surface analysis:
    • Hirshfeld surfaces
    • Promolecule surfaces

GFN2-xTB

OCC ships a native C++ implementation of the GFN2-xTB semi-empirical tight-binding method (Bannwarth, Ehlers, Grimme, J. Chem. Theory Comput. 15, 1652 (2019), doi:10.1021/acs.jctc.8b01176). The implementation was developed with reference to Grimme's xTB and the tblite reference implementation (Apache-2.0 / LGPL-3.0+), and uses the published GFN2-xTB parameter set (bundled in share/xtb/gfn2.json).

Available now

  • Molecular SCC: full GFN2 with CAMM multipole AES, on-site polarisation, third-order, and native D4 dispersion -- agrees with xTB to single uHa on small molecules.
  • Periodic SCC (Gamma-only and Monkhorst-Pack k-point sampling) on real molecular crystals, with multipole AES, Ewald-summed gamma, and lattice-summed D4.
  • Analytical molecular gradient (charge-only SCC variant), validated to 5e-5 Ha/Bohr against finite differences; numerical Hessian for frequencies.
  • Implicit solvation via CPCM-X and SMD-xTB.
  • Bindings via the XtbCalculator class in Python (nanobind) and JS/WASM (emscripten/embind).

Current limitations

  • Periodic gradient and crystal-cell optimisation are not yet wired up.
  • The "multipole-on" analytical gradient still has a known ~1 mHa gap versus FD-of-energy from missing AO-multipole integral derivatives -- the charge-only gradient is the production variant.
  • Open-shell GFN2 (and GFN1/GFN0) are out of scope for v1.
  • Periodic energies on dense molecular crystals are ~0.4-0.6 mHa/atom too bound versus tblite (missing WSC-image averaging in the gamma build is the leading suspect).

Additional Features

  • Spherical harmonic transforms (FFT-based)
  • Molecular point group detection
  • File format support:
    • Gaussian fchk files (read/write)
    • Molden files
    • NumPy .npy arrays (write)
    • QCSchema JSON
    • Basic Gaussian input files
  • Geometric algorithms:
    • Marching cubes
    • Morton codes for linear-hashed octrees
  • Electronegativity equilibration method for charges
  • Python bindings via nanobind

Python API Examples

import occpy
from occpy import Crystal, Molecule, AOBasis, HartreeFock, DFT
from occpy import SpinorbitalKind

# Set up basic configuration
occpy.set_log_level(occpy.LogLevel.WARN)  # Configure logging level
# occpy.set_data_directory("/path/to/basis/sets")  # Optional: Set basis set path

# Load molecule from XYZ file
mol = Molecule.from_xyz_file("h2o.xyz")

# Basic Restricted Hartree-Fock calculation
basis = AOBasis.load(mol.atoms(), "6-31G")
hf = HartreeFock(basis)
scf = hf.scf()
energy = scf.run()
wfn = scf.wavefunction()

# DFT calculation
dft = DFT("B3LYP", basis)
ks = dft.scf(SpinorbitalKind.Unrestricted)
ks.set_charge_multiplicity(0, 1)
energy = ks.run()

# Crystal structure analysis
crystal = Crystal.from_cif_file("structure.cif")
dimers = crystal.symmetry_unique_dimers(10.0)  # Get unique dimers within 10 A

For more examples and detailed API documentation, please refer to the documentation.

Build from Source

Prerequisites

  • C++17 compliant compiler (GCC 10+ recommended)
  • CMake 3.15+
  • Ninja (recommended) or Make

Dependencies

OCC uses modern C++ libraries to provide its functionality:

Library Version Description
CLI11 2.4.2 Command line parser
Eigen3 3.4.0+ Linear algebra
fmt 11.0.2 String formatting
gemmi 0.6.5 Crystallographic file handling
LBFGS++ master Optimization algorithms
libcint 6.1.2 Gaussian integrals
libxc 6.2.2 Exchange-correlation functionals
nlohmann/json 3.11.3 JSON handling
scnlib 4.0.1 String parsing
spdlog 1.15.0 Logging
unordered_dense 4.5.0 Hash containers

Optional dependencies:

  • nanobind (2.4.0) - For Python bindings

Most dependencies are automatically handled through CPM. System-installed versions of Eigen3 and libxc can be used if available.

OCC's geometry optimization implementation for molecules made significant use of the code and documentation from pyberny - the files in the opt submodule are therefore subject to the MPL license.

Build Instructions

  1. Clone the repository:

    git clone https://github.com/peterspackman/occ.git
    cd occ
    
  2. Configure dependency caching (recommended):

    export CPM_SOURCE_CACHE="$HOME/.cache/cpm"
    
  3. Build with CMake:

    mkdir build && cd build
    
    # Using system dependencies (if available)
    cmake .. -GNinja
    
    # OR download all dependencies
    cmake .. -GNinja -DUSE_SYSTEM_LIBXC=OFF -DUSE_SYSTEM_EIGEN=OFF
    
    # Build the executable
    ninja occ
    

CMake Options

  • USE_SYSTEM_LIBXC: Use system-installed libxc (default: ON)
  • USE_SYSTEM_EIGEN: Use system-installed Eigen3 (default: ON)
  • WITH_PYTHON_BINDINGS: Build Python bindings (default: OFF)
  • USE_MLX: Enable MLX integration (default: OFF)
  • USE_QCINT: Use QCInt instead of libcint (default: OFF)
  • ENABLE_HOST_OPT: Enable host-specific optimizations (default: OFF)

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

Citation

If you use OCC in your research, please cite the appropriate papers for all functionals, methods etc. you use, along with the citations for the core dependencies here.

If you use the GFN2-xTB implementation, cite:

  • C. Bannwarth, S. Ehlers, S. Grimme, GFN2-xTB -- An Accurate and Broadly Parametrized Self-Consistent Tight-Binding Quantum Chemical Method with Multipole Electrostatics and Density-Dependent Dispersion Contributions, J. Chem. Theory Comput. 15, 1652-1671 (2019). doi:10.1021/acs.jctc.8b01176
  • E. Caldeweyher, S. Ehlers, S. Grimme et al., A generally applicable atomic-charge dependent London dispersion correction, J. Chem. Phys. 150, 154122 (2019). doi:10.1063/1.5090222

The OCC implementation of GFN2-xTB is independent of, but was developed with reference to, the tblite project.

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

occpy-0.9.2-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (48.2 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

occpy-0.9.2-cp312-abi3-macosx_11_0_arm64.whl (30.0 MB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

occpy-0.9.2-cp312-abi3-macosx_10_15_universal2.whl (61.5 MB view details)

Uploaded CPython 3.12+macOS 10.15+ universal2 (ARM64, x86-64)

occpy-0.9.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (48.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

occpy-0.9.2-cp311-cp311-macosx_11_0_arm64.whl (30.0 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

occpy-0.9.2-cp311-cp311-macosx_10_15_universal2.whl (61.5 MB view details)

Uploaded CPython 3.11macOS 10.15+ universal2 (ARM64, x86-64)

occpy-0.9.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (48.2 MB view details)

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

occpy-0.9.2-cp310-cp310-macosx_11_0_arm64.whl (30.0 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

occpy-0.9.2-cp310-cp310-macosx_10_15_universal2.whl (61.5 MB view details)

Uploaded CPython 3.10macOS 10.15+ universal2 (ARM64, x86-64)

File details

Details for the file occpy-0.9.2-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for occpy-0.9.2-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 216cbd7cab92061ba8346323977c0232d845de61ef9b60a6dbef061f7aa4e812
MD5 f01463086d1d7c1231be433fd0d51aa2
BLAKE2b-256 61868de82416f75da9b3a3e002243e2c447fba04d7396cfb2c2c0a57f8565ffb

See more details on using hashes here.

Provenance

The following attestation bundles were made for occpy-0.9.2-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on peterspackman/occ

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

File details

Details for the file occpy-0.9.2-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for occpy-0.9.2-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 67dd68806763f21cbc380ae1cb3886f852c4082262711cc0c914223e82a42301
MD5 cbeec7998d6916d52ba26cd14b6df21d
BLAKE2b-256 cae4cc3b2c6fdf423b6d77fb084e600cd0f255baf90c7459c3d22bd84cdca46e

See more details on using hashes here.

Provenance

The following attestation bundles were made for occpy-0.9.2-cp312-abi3-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on peterspackman/occ

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

File details

Details for the file occpy-0.9.2-cp312-abi3-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for occpy-0.9.2-cp312-abi3-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 4da6d67a195d9ce84971b5b813c0e2a71dd16112c3930ca6cb62fd2f424fdd23
MD5 b97db6c1ece7f102d1ba16c8fd711aa2
BLAKE2b-256 3a1451f07b67e5f8c32a40655e0266a556385af4bf6b10d433146ce6b9f6094a

See more details on using hashes here.

Provenance

The following attestation bundles were made for occpy-0.9.2-cp312-abi3-macosx_10_15_universal2.whl:

Publisher: build_wheels.yml on peterspackman/occ

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

File details

Details for the file occpy-0.9.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for occpy-0.9.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 591658d7443bc78aa3d2c1fd5d15264d385cba3700184b633dcc3515b36dd415
MD5 59ecfc536b785e7ab6e42431599ca884
BLAKE2b-256 03a76c2b13547306bdf01713664923fd6eee3576a3aa038c868c0ca097dbdabe

See more details on using hashes here.

Provenance

The following attestation bundles were made for occpy-0.9.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on peterspackman/occ

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

File details

Details for the file occpy-0.9.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for occpy-0.9.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4340b1e32d21063356f1d617008524d939d8eedc81aecbb0e917ae440a5e960e
MD5 007e8410d0e4cbaa3ffd74975651bbca
BLAKE2b-256 7f83e897657e27e29b5c47fc34a762408099f902ef471834c3a359de588f322d

See more details on using hashes here.

Provenance

The following attestation bundles were made for occpy-0.9.2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on peterspackman/occ

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

File details

Details for the file occpy-0.9.2-cp311-cp311-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for occpy-0.9.2-cp311-cp311-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 de7ddd988ddd10938eba5beefc9ec4c42e147fd4faa8a60530cef89dfe666420
MD5 3b9cc647f19b643c43b612385ee66fe5
BLAKE2b-256 983861ab4f35c1113c75664f29fa6a093e94e40428ba56b9734b86d06a43239f

See more details on using hashes here.

Provenance

The following attestation bundles were made for occpy-0.9.2-cp311-cp311-macosx_10_15_universal2.whl:

Publisher: build_wheels.yml on peterspackman/occ

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

File details

Details for the file occpy-0.9.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for occpy-0.9.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 683f7218c203ae3034e88e4d16109d4c1c99bad714696f4786084e028463bdb1
MD5 177b4ad1a472586fcdbf6377c69890a2
BLAKE2b-256 7aeae07d74b548114585beec9e3515bfed1c5654603c3daf2495824361da7b7d

See more details on using hashes here.

Provenance

The following attestation bundles were made for occpy-0.9.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build_wheels.yml on peterspackman/occ

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

File details

Details for the file occpy-0.9.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for occpy-0.9.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9008a51deab4ebed145ee17a1fa52fc88fc1271e5c58c4cac809eb1f8e16566c
MD5 53aad67d2d02d63581c7ffaa1353566b
BLAKE2b-256 ae6e060624a7d8d2468b0a0590dbb5a31e216715ad6429fbf78657794559325b

See more details on using hashes here.

Provenance

The following attestation bundles were made for occpy-0.9.2-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: build_wheels.yml on peterspackman/occ

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

File details

Details for the file occpy-0.9.2-cp310-cp310-macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for occpy-0.9.2-cp310-cp310-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 c38f5d87301b194a725ef5b8b4304f7d9d9c5aa64a08b8b8116bf2c15b70d738
MD5 0af2489f1e37dc3af9e07472eb6ef2d6
BLAKE2b-256 c4b7408ed538dd2028d19c99b825ee88eae0006ba0c9b41319d79fe9c71579cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for occpy-0.9.2-cp310-cp310-macosx_10_15_universal2.whl:

Publisher: build_wheels.yml on peterspackman/occ

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

Release history Release notifications | RSS feed

0.9.3

9 files

This release

0.9.2 This release

9 files

0.9.1

9 files

0.9.0

9 files

0.8.8

9 files

0.8.6

6 files

0.8.5

9 files

0.8.4

9 files

0.8.3

9 files

0.7.10

9 files

0.7.9

9 files

0.7.8

9 files

0.7.7

9 files

0.7.6

9 files

0.7.5

9 files

0.7.4

9 files

0.7.3

9 files

0.7.2

9 files

0.6.12

9 files

0.6.11

9 files

0.6.9

9 files

0.6.8

9 files

0.6.2

12 files

0.5.7

16 files

0.5.5

8 files

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