Skip to main content

A Python package for screening molecules for their thermochemical properties.

Project description

Python application DOI 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.1.tar.gz (264.7 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.1-py3-none-any.whl (87.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: thermoscreening-0.2.1.tar.gz
  • Upload date:
  • Size: 264.7 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.1.tar.gz
Algorithm Hash digest
SHA256 4aac6ab69d73356ac076e7a4bbd1a10b71762ec991937f4080b8aa8ed0f1c078
MD5 f3f8462df57f16382d584a2035cb106a
BLAKE2b-256 5acc955e5e43ad7a2fcc573531a335cec70a0a7ef63319a69465233043ba7dd3

See more details on using hashes here.

Provenance

The following attestation bundles were made for thermoscreening-0.2.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: thermoscreening-0.2.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 84378a711160b12412c098ddb44db2d16e4f1d1190f19e38d5e6990dd253475d
MD5 af5317145ffad5c289ea815670151ecf
BLAKE2b-256 7c551e225cbd8e07c7395242761bcc8d9245a0f7baff5e7e8d09b9700e09ec89

See more details on using hashes here.

Provenance

The following attestation bundles were made for thermoscreening-0.2.1-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