Predict the density sensitivity of a reaction energy — how much the result depends on the input density — from cheap GFN2-xTB descriptors, before running the expensive DFT check.
For a target quantity Y, density sensitivity is S = |Y[n_DFA] − Y[n_HF]| in kcal/mol. chemtriage
estimates S with a gradient-boosted model trained on 1,505 GMTKN55 reactions, and returns a graded
tier rather than a yes/no flag.
predicted S (kcal/mol) |
tier | actually sensitive (S > 2) |
|---|---|---|
| < 1 | SAFE | 1% |
| 1–2 | LIKELY SAFE | 17% |
| 2–5 | BE CAUTIOUS | 64% |
| ≥ 5 | BE VERY CAUTIOUS | 95% |
Percentages are out-of-fold, from 10×5-fold cross-validation on GMTKN55.
conda env create -f environment.yml # or: mamba env create -f environment.yml
conda activate dsxtbBuilds are pinned deliberately — some newer dftd4/multicharge conda-forge builds segfault inside
GFN2 single points. Do not relax the pins.
python webui.py # then open http://127.0.0.1:8000
python webui.py 8080 # custom portBuild a reaction in the browser, from SMILES or an uploaded geometry, and get the predicted S, its
tier, and a breakdown of which chemistry drove it. This is the easiest way to use chemtriage and
needs no knowledge of the input syntax below.
Each species is one argument, PATH:charge:uhf:coeff, where coeff is its signed stoichiometric
coefficient. Geometries are .xyz.
# F2 -> 2 F. (F2 neutral closed shell; F neutral doublet)
python predict.py f2.xyz:0:0:-1 f.xyz:0:1:2Output is the predicted S, its tier, and an exact TreeSHAP breakdown of which chemistry drove it
(bond rearrangement / near-degeneracy / charge anisotropy / size).
For a periodic species, use an extxyz file with a Lattice= line and add a fifth field :Z, the
number of formula units in the cell:
# molecular-crystal cohesion, per molecule
python predict.py crystal.xyz:0:0:-1:4 mol.xyz:0:0:1The model is trained on molecules, so periodic inputs are an extrapolation — treat them as qualitative.
Every run writes logs/run_<timestamp>/ containing the console log, the model feature vector, the
per-species xTB descriptors and the raw tblite results, plus a one-line entry in logs/history.log.
docs/DETAILS.md — descriptor definitions, model provenance, periodic-mode
caveats and the full tier calibration.