Skip to main content

A Python package for screening molecules for their thermochemical properties.

Project description

Python application codecov Docs

ThermoScreening

ThermoScreening calculates thermochemical properties for molecular systems and provides a foundation for screening molecule sets. It currently supports thermochemistry workflows from DFTB+ inputs and exposes Python APIs for reading coordinates, parsing vibrational data, and running thermodynamic post-processing.

Documentation

The documentation is published at https://molarverse.github.io/ThermoScreening/.

It (installation, usage, configuration, and the API reference) is built with Sphinx from the docs/ directory, and you can also build it locally:

python -m pip install -e ".[docs]"
python -m sphinx -b html docs docs/_build/html   # open docs/_build/html/index.html

Features

  • Thermochemistry calculations for molecular systems
  • DFTB+ geometry optimization, Hessian, and normal-mode integration
  • Readers for DFTB+ .gen, XYZ, and vibrational frequency files
  • Runtime type checking for public API calls
  • Test coverage for parsing, thermochemistry, and optional DFTB+ execution paths

Installation

Install the package from a checkout:

python -m pip install .

For development and tests:

python -m pip install -e ".[test,lint]"

For a Conda-based development environment with all calculation backends (DFTB+, modes, xtb, tblite) included:

conda env create -f environment.yml
conda activate thermoscreening

Then thermo doctor should report every backend as found.

DFTB+ Setup

DFTB+ calculations require two external pieces:

  1. The dftb+ and modes executables on PATH.
  2. Slater-Koster parameter files downloaded separately from DFTB.org.

Install DFTB+ with Conda if it is not already available:

conda install -c conda-forge dftbplus

Download the default 3ob-3-1 Slater-Koster files into a user-local directory:

thermo setup-dftb

The command prints the DFTB_PREFIX export needed by DFTB+ and ThermoScreening:

export DFTB_PREFIX="$HOME/.local/share/thermoscreening/slakos/3ob-3-1/"

Add that line to your shell configuration for persistent use. Verify the setup with:

thermo doctor

ThermoScreening does not vendor Slater-Koster files. For custom installations, point the calculator to a parameter directory with DFTB_PREFIX or pass slako_dir explicitly:

from ThermoScreening.thermo.api import dftbplus_thermo

thermo = dftbplus_thermo(
    atoms,
    slako_dir="/path/to/3ob-3-1/",
)

The bundled DFTB+ parameters were removed from the repository because they are large, independently licensed scientific data. Keeping them external makes the package smaller and keeps parameter-set licensing explicit.

Usage

Run thermochemistry from an input file with the command-line entry point:

thermo path/to/thermo.in

Use the Python API when integrating ThermoScreening into another workflow:

from ThermoScreening.thermo.api import run_thermo

thermo = run_thermo(
    vibrational_frequencies,
    coord_file="geo_opt.xyz",
    temperature=298.15,
    pressure=101325,
    energy=electronic_energy,
    engine="dftb+",
)

print(thermo.total_gibbs_free_energy())

Testing

Run the full test suite:

python -m pytest -q

Run linting:

python -m pylint ThermoScreening

DFTB+ integration tests run only when the executables are available and DFTB_PREFIX points to a valid Slater-Koster directory. Otherwise they are skipped so the pure-Python test suite remains portable.

Citing

If you use ThermoScreening in research, cite the archived software release. Machine-readable citation metadata is available in CITATION.cff, which also powers GitHub's Cite this repository feature. Each GitHub release is archived by Zenodo and receives a version-specific DOI.

Roadmap

Planned work is tracked in GitHub issues rather than in this README. The tool supports the DFTB+, GFN-xTB (tblite) and native-xtb engines, implicit solvation, quasi-RRHO, batch screening with resume, and RDKit conformer generation; see the issue tracker for further enhancements.

License

ThermoScreening source code is licensed under the GNU Lesser General Public License v2.1 or later. See LICENSE.

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

thermoscreening-0.2.0.tar.gz (264.6 kB view details)

Uploaded Source

Built Distribution

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

thermoscreening-0.2.0-py3-none-any.whl (87.8 kB view details)

Uploaded Python 3

File details

Details for the file thermoscreening-0.2.0.tar.gz.

File metadata

  • Download URL: thermoscreening-0.2.0.tar.gz
  • Upload date:
  • Size: 264.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for thermoscreening-0.2.0.tar.gz
Algorithm Hash digest
SHA256 349ebbb09a23bcca6743f5617e9496fa1197b4735e45d5b7703bb2b9ef4cc536
MD5 284db55a41c773a0059a5737112e65d6
BLAKE2b-256 b328d624c59a2bd176dfa6601c683b5e469eb20fe4511021147760b04fe288c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for thermoscreening-0.2.0.tar.gz:

Publisher: publish.yml on MolarVerse/ThermoScreening

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

File details

Details for the file thermoscreening-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: thermoscreening-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 87.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for thermoscreening-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6c9907e9d4de07820a8dfaaf6c3b7451a4a14c33b3c17e4d254fc050645254ec
MD5 69de94a0b2175bf61e006a8c5b4d06d6
BLAKE2b-256 3f1bf992f591d670ba10071ea27e96e1030f343dedda1709c727efb8c04db57d

See more details on using hashes here.

Provenance

The following attestation bundles were made for thermoscreening-0.2.0-py3-none-any.whl:

Publisher: publish.yml on MolarVerse/ThermoScreening

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