CRAFT-ε
CRAFT-ε: A Conformer-Resolved Atom- and Fragment-based Theory for the Static Relative Permittivity of Pure Organic Liquids. Predicts the static relative permittivity ε_r of a neutral pure organic liquid at 298.15 K from its SMILES string or name, with the 41 fitted parameters of the paper and GFN2-xTB/ALPB(diethyl ether) conformer ensembles.
Installation
pip install craft-epsilon
or from a local copy of this repository:
pip install . # from this folder
The xtb program (version 6.7.1 was used to fit the model) is taken from
xtb_binary, from the PATH or from an earlier download. If none is available, the latest xtb release for the
current operating system and architecture (Linux and Windows x86_64) is downloaded once from GitHub, checked
against its SHA-256 checksum and stored in the folder xtb inside the installed package (craft_epsilon/xtb,
next to the module files; like the cache database of MoleculeResolver). If that folder is not writable, it goes to
~/.craft_epsilon/xtb; the environment variable CRAFT_EPSILON_XTB_DIR overrides both. The download is not
removed by pip uninstall; delete the folder by hand if needed.
Usage
Command line (prints all relevant intermediate quantities):
craft-epsilon "CCO"
craft-epsilon ethanol
python -m craft_epsilon "CC(C)=O"
Python (returns values, prints nothing):
from craft_epsilon import epsilon, predict
epsilon("CCO") # static relative permittivity at 298.15 K
predict("ethanol") # dict with class, polar groups, V_m, eps_inf, dipoles, conformer counts, ...
A valid SMILES string is used directly; anything else is resolved as a name with MoleculeResolver (cross-checked, neutral structure; needs an internet connection).
Temperature. The model contains a temperature dependence through the orientation term and the molar volume,
V_m(T) = V_m(298.15 K)·(1 + α_V(T − 298.15 K)) with a fixed α_V = 10⁻³ K⁻¹, which was used to fit data measured at
other temperatures. CRAFT-ε is meant to be used at 298.15 K only: the conformer ensembles, their Boltzmann weights
and the molar volume refer to 298.15 K, and the temperature dependence of association is not represented.
epsilon(), predict() and the command line therefore always use 298.15 K.
Tests
pip install pytest
pytest # fast tests, no xtb and no internet needed
pytest -m xtb # end-to-end calculations with xtb
pytest -m network # name resolution with MoleculeResolver
The fast tests check the 41 parameters, the molar volume against the original smi2DC, the polar groups and
classes, the domain checks, the xtb lookup and the command line, and reproduce the paper predictions of 16 liquids
from their stored conformer ensembles (tests/data).
License
MIT, see LICENSE.
Package layout
| module | content |
|---|---|
craft_epsilon.model |
classification, effective dipole, Clausius–Mossotti ε∞, Onsager–Kirkwood–Fröhlich relation, epsilon, predict |
craft_epsilon.parameters |
the 41 fitted parameters |
craft_epsilon.conformers |
conformer workflow (RDKit ETKDGv3, GFN2-xTB/ALPB optimization, single point, qRRHO) |
craft_epsilon.descriptors |
Boltzmann weights, polarizabilities, polar-group dipole vectors |
craft_epsilon.groups |
polar groups (SMARTS), chemical families, atom types |
craft_epsilon.molar_volume |
molar volume of Bouteloup and Mathieu |
craft_epsilon.cli |
craft-epsilon command |
Conformer ensembles depend slightly on the RDKit version and platform (the embedding of a given random seed can differ), so predictions can deviate from the paper values by up to a few per cent for some small rings and diols.
References
- Molar volume: R. Bouteloup, D. Mathieu, Predicting dielectric constants of pure liquids: fragment-based Kirkwood–Fröhlich model applicable over a wide range of polarity, Phys. Chem. Chem. Phys. 21 (2019) 11043–11057, doi:10.1039/C9CP01704F.
- GFN2-xTB: C. Bannwarth, S. Ehlert, S. Grimme, J. Chem. Theory Comput. 15 (2019) 1652–1671, doi:10.1021/acs.jctc.8b01176.
- ALPB: S. Ehlert, M. Stahn, S. Spicher, S. Grimme, J. Chem. Theory Comput. 17 (2021) 4250–4261, doi:10.1021/acs.jctc.1c00471.
- ETKDGv3: S. Wang, J. Witek, G. A. Landrum, S. Riniker, J. Chem. Inf. Model. 60 (2020) 2044–2058, doi:10.1021/acs.jcim.0c00025.
- spyrmsd: R. Meli, P. C. Biggin, J. Cheminform. 12 (2020) 49, doi:10.1186/s13321-020-00455-2.
- D4: E. Caldeweyher et al., J. Chem. Phys. 150 (2019) 154122, doi:10.1063/1.5090222.
- qRRHO: S. Grimme, Chem. Eur. J. 18 (2012) 9955–9964, doi:10.1002/chem.201200497.
- MoleculeResolver: S. Müller, J. Cheminform. 17 (2025), doi:10.1186/s13321-025-01064-7.
Metadata
Release files for craft-epsilon 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| craft_epsilon-1.0.0.tar.gz | 36.2 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| craft_epsilon-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 69.5 kB
Release files / craft_epsilon-1.0.0.tar.gz
| Download URL | craft_epsilon-1.0.0.tar.gz |
|---|---|
| Size | 36.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
81e6be6819fed935f5d13876f54672b623936a59fffa07932fd6c5e6c4a4f344
|
|
BLAKE2b-256 checksum How to use checksums |
5e1e0f8f6070c4cf15145def1151d85ab2ed6531049e1bb10dea3f7677ce9e27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logRelease files / craft_epsilon-1.0.0-py3-none-any.whl
| Download URL | craft_epsilon-1.0.0-py3-none-any.whl |
|---|---|
| Size | 33.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
23d67fd8cf04a570a114358e0ff0fd60958df4097b72dc736909cf5ef6b28d49
|
|
BLAKE2b-256 checksum How to use checksums |
8f2e2e72d3a7c2f7a4b9491859577842a476d297277db146ed789f3c9e227f3e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logSecurity for craft-epsilon 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for craft_epsilon-1.0.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.