Configuration¶
Engines and methods¶
|
Backend |
Notes |
|---|---|---|
|
DFTB+ |
|
|
GFN-xTB via tblite |
in-process, gas phase only |
|
native |
open-shell + charge + implicit solvation |
For the xtb engines, --method selects GFN2-xTB (default) or GFN1-xTB.
Options¶
--solvent <name>GBSA/ALPB implicit solvation (
water,dmso,acetonitrile,thf, …). Applies todftb+andxtb-cli. With DFTB+ the GBSA parameters are GFN-xTB-fit, so solvation free energies are qualitative.--quasi-rrhoUse Grimme’s quasi-RRHO vibrational entropy, which tames the entropy of low-frequency modes (recommended for flexible molecules).
--charge/ manifestchargecolumnTotal charge. Applied to directory input, or per-row in a CSV manifest.
- Spin / multiplicity
Resolved automatically from the electron count (even -> singlet, odd -> doublet); an explicit spin
Scan be given per manifest row (spincolumn) or via the Python API for cases like triplets.round(2*S)unpaired electrons drive both the (spin-polarised) calculation and the electronic entropyR ln(2S+1).--temperature/--pressureThermodynamic conditions (default 298.15 K, 101325 Pa = 1 atm). Note that tabulated standard entropies use 1 bar (100000 Pa).
--resumeReuse the successful records from a prior
<out>.jsonand only (re)run the missing or previously-failed molecules. Results are written incrementally.
Screening input¶
thermo screen accepts either:
a directory of
.xyz/.genstructures (all run at--charge), ora CSV manifest with a
pathcolumn and optionalname,chargeandspincolumns.
Results are written to <out>.csv and <out>.json with the electronic
energy (Eelec_hartree), the thermal corrections, the absolute Gibbs free
energy (G_total_hartree), entropy and heat capacity. <out>-run.json
records the structure hashes and scientific settings used for safe resume.
Automatic Gibbs ordering is shown only when every structure has the same
molecular formula and charge. Absolute energies do not rank mixed molecular
compositions.
Cluster execution¶
Batch screening can be divided into deterministic, zero-based shards on any
scheduler. Every shard writes isolated result files under
<out>-shards/shard-NNNNN.* and calculations under
<directory>/shards/shard-NNNNN:
thermo screen molecules.csv -o results \
--shard-index "$TASK_INDEX" --shard-count 32
After every shard has finished, validate and combine them in original input order:
thermo collect results-shards -o results
Collection fails on missing or duplicate shards, mixed settings, missing jobs, or fingerprint mismatches. Scientific calculation failures remain in the combined result and produce a non-zero command exit status.
For Slurm, one command can generate an array script and optionally submit both the array and a dependent collection job:
thermo slurm --tasks 32 --cpus-per-task 8 \
--time 04:00:00 --mem 16G --partition compute --submit -- \
screen molecules.csv -o results --engine dftb+ --jobs 2
The same interface distributes the complete redox workflow by candidate:
thermo slurm --tasks 32 --cpus-per-task 8 --submit -- \
redox molecules.csv -o potentials --engine xtb-cli --jobs 2
--cpus-per-task describes each allocation; --jobs controls independent
processes inside that allocation. The generated script divides available CPUs
between those processes through OMP_NUM_THREADS and common BLAS thread
variables. Use --preamble setup.sh for site-specific module loads or
environment variables. Omitting --submit only writes the script.
All array tasks and the collector require the same shared working directory,
Python environment, executables, and parameter files. The shard interface also
works with PBS, LSF, and other schedulers by supplying their array index and the
chosen shard count directly. Both thermo screen and thermo redox expose
--shard-index and --shard-count for this scheduler-neutral path.
Redox workflow input¶
thermo redox accepts a SMILES string, one .xyz/.gen structure, a
directory of structures, or a CSV manifest. Each manifest row needs exactly one
of path or smiles:
name,path,smiles,charge,oxidized_spin,reduced_once_spin,reduced_twice_spin
AQ,aq.xyz,,0,0,0.5,0
hydroxy-AQ,,OC1=CC2=C(C=C1)C(=O)C1=CC=CC(=O)C1=C2,0,0,0.5,0
name and charge are optional. Spin columns are optional and otherwise
inferred from electron count for each state. Relative paths are resolved from
the manifest directory. Molecular charges must be integers and spins must be
non-negative integers or half-integers. Ionic SMILES supply their formal charge;
structure files without a charge default to zero.
For SMILES input, --max-conformers controls how many ETKDG structures are
embedded. The lowest-MMFF-energy structure becomes the common starting geometry;
each charge state is then optimized independently by the selected backend.
This is a single-starting-geometry screening approximation, not a charge-state
conformer search or a conformational ensemble free energy. Flexible molecules
require separate conformer sampling for every charge state.
The workflow writes:
<out>.csvand<out>.jsonwith E1, E2, E2e, the potential gap, and the three absolute Gibbs free energies;<out>-states.csvand<out>-states.jsonwith the complete per-state thermochemistry; and<out>-run.jsonand<out>-states-run.jsonwith input hashes, calculation settings, reference calibration, and reproducibility fingerprints;<directory>/states.csvas the generated, reproducible charge-state manifest.
--jobs is the number of independent charge-state calculations executed in
parallel. A screen of N molecules contains 3 * N jobs, plus three only when
a separately supplied reference is not already part of the candidate set.
--resume reuses only successful states whose structure content, charge,
spin, engine, method, solvent, thermodynamic conditions, and other scientific
settings match the stored fingerprint. Missing, failed, legacy, or mismatched
states are rerun. On multi-core backends, set OMP_NUM_THREADS=1 when using
several process jobs to avoid oversubscribing CPU cores. Launch process-based
parallel runs from the CLI or a script protected by if __name__ == "__main__";
use --jobs 1 in notebooks and other interactive sessions.