A Python package for screening molecules for their thermochemical properties.
Project description
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:
- The
dftb+andmodesexecutables onPATH. - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4aac6ab69d73356ac076e7a4bbd1a10b71762ec991937f4080b8aa8ed0f1c078
|
|
| MD5 |
f3f8462df57f16382d584a2035cb106a
|
|
| BLAKE2b-256 |
5acc955e5e43ad7a2fcc573531a335cec70a0a7ef63319a69465233043ba7dd3
|
Provenance
The following attestation bundles were made for thermoscreening-0.2.1.tar.gz:
Publisher:
publish.yml on MolarVerse/ThermoScreening
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
thermoscreening-0.2.1.tar.gz -
Subject digest:
4aac6ab69d73356ac076e7a4bbd1a10b71762ec991937f4080b8aa8ed0f1c078 - Sigstore transparency entry: 2212115510
- Sigstore integration time:
-
Permalink:
MolarVerse/ThermoScreening@b212dd1cc6e60e99d4a6f1171ab7dea025c0c908 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/MolarVerse
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b212dd1cc6e60e99d4a6f1171ab7dea025c0c908 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84378a711160b12412c098ddb44db2d16e4f1d1190f19e38d5e6990dd253475d
|
|
| MD5 |
af5317145ffad5c289ea815670151ecf
|
|
| BLAKE2b-256 |
7c551e225cbd8e07c7395242761bcc8d9245a0f7baff5e7e8d09b9700e09ec89
|
Provenance
The following attestation bundles were made for thermoscreening-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on MolarVerse/ThermoScreening
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
thermoscreening-0.2.1-py3-none-any.whl -
Subject digest:
84378a711160b12412c098ddb44db2d16e4f1d1190f19e38d5e6990dd253475d - Sigstore transparency entry: 2212115537
- Sigstore integration time:
-
Permalink:
MolarVerse/ThermoScreening@b212dd1cc6e60e99d4a6f1171ab7dea025c0c908 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/MolarVerse
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b212dd1cc6e60e99d4a6f1171ab7dea025c0c908 -
Trigger Event:
release
-
Statement type: