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.
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- Thermochemistry calculations for molecular systems
- DFTB+ geometry optimization, Hessian, and normal-mode integration
- Stepwise and overall reference-calibrated reduction potentials
- 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
Install the released package:
python -m pip install thermoscreeningFor a complete environment with DFTB+, native xTB, and tblite:
conda create -n thermoscreening -c conda-forge \
python=3.12 dftbplus xtb tblite-python pip
conda activate thermoscreening
python -m pip install thermoscreeningFrom a source checkout, the equivalent development environment is:
conda env create -f environment.yml
conda activate thermoscreeningRun thermo doctor to report the usable engines, or check one explicitly with
thermo doctor --engine dftb+.
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 dftbplusDownload the default 3ob-3-1 Slater-Koster files into the automatically
discovered user-local directory:
thermo setup-dftbVerify the setup with:
thermo doctorThermoScreening does not vendor Slater-Koster files. For custom installations,
override the discovered 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.
Run thermochemistry from an input file with the command-line entry point:
thermo run path/to/thermo.inThe historic thermo path/to/thermo.in form remains supported.
Run a complete reference-calibrated redox screen locally or as a Slurm array:
thermo redox molecules.csv --engine xtb-cli --solvent acetonitrile -o redox
thermo slurm --tasks 32 --submit -- redox molecules.csv -o redoxUse 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())Run the full test suite:
python -m pytest -qReproduce the published DFTB/3ob/COSMO anthraquinone potentials from the raw Zenodo data:
python scripts/validate_anthraquinone_zenodo.pyValidate ideal-gas thermochemistry against a deterministic 1,000-molecule sample from QM9:
python scripts/validate_qm9.pyValidate transition-state thermochemistry against a deterministic sample from the PSI4 VQM24 dataset:
python scripts/validate_vqm24.pyRun a zero-point-energy regression across 255 model chemistries:
python scripts/validate_model_chemistry_zpe.pyCompare complete DFTB+ and GFN2-xTB entropy workflows with an experimental gas-phase compilation:
python scripts/validate_experimental_entropy.py --engine bothThese commands verify their downloaded archives and keep the external data out of the repository. See the anthraquinone reference benchmark and the thermochemistry benchmarks for QM9 and VQM24 transition states, plus the experimental entropy and model-chemistry ZPE comparisons, for their scope and interpretation.
Run linting:
python -m pylint ThermoScreeningDFTB+ 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.
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.
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.
ThermoScreening source code is licensed under the GNU Lesser General Public License v2.1 or later. See LICENSE.