taster is a Python package for computing partition coefficients of Martini 3 small molecules using free energy calculations.
Given a molecule's CG structure and ITP file, taster automates the full workflow:
- Solvation box preparation across multiple solvents
- Parallel FEP/TI simulations via GROMACS
- Free energy estimation using TI or MBAR
- LogP calculation relative to a reference solvent (typically water)
- Convergence and overlap diagnostics (forward/backward convergence, MBAR overlap matrix, TI dhdl plots) for each leg
Requirements
- Python >= 3.10
- GROMACS (2024.3 or greater needed if topologies use angles with restricted bending potentials)
numpy >= 1.20pandas >= 1.0matplotlib >= 3.5MDAnalysis >= 2.0alchemlyb >= 2.0tqdm >= 4.60jax >= 0.6.2
Development dependencies are managed in uv dependency groups. The test group
includes pytest and alchemtest; lint, typecheck, and docs provide the
corresponding development tools.
Installation
Install uv first.
For Users
Install taster with the dependencies needed to run and test it:
git clone https://github.com/Martini-Force-Field-Initiative/taster.git
cd taster
uv sync --group test
This creates a project environment in .venv using the versions pinned in
uv.lock. GROMACS must also be installed separately.
For Developers
Install taster with all linting, type-checking, testing, and documentation tools:
uv sync --all-groups
Quick Start
Python API
import taster
# Run the full workflow
df = taster.run_partition_workflow(
itp="MOL.itp",
structure="MOL.gro",
solvents=["water", "octanol-water_74-26", "hexadecane", "chloroform"],
reference="water",
reps=3,
ncores=36,
)
print(df)
Or run each step individually:
import taster
# Step 1 — prepare simulation boxes
resname = taster.prepare_partition_setup(
itp="MOL.itp",
structure="MOL.gro",
solvents=["water", "octanol-water_74-26", "hexadecane"],
reps=3,
)
# Step 2 — run TI simulations
taster.run_partitions(
resname, solvents=["water", "octanol-water_74-26", "hexadecane"], reps=3, ncores=36
)
# Step 3 — analyse
df = taster.process_partition(
resname, solvents=["octanol-water_74-26", "hexadecane"], water="water", reps=3
)
CLI
taster --itp MOL.itp --structure MOL.gro \
--solvents water octanol-water_74-26 hexadecane chloroform \
--reps 3 --ncores 36 --estimator MBAR
See all options:
taster --help
Available Solvents
import taster
print(taster.available_solvents())
Output
Results are saved to ./Partitions/<resname>/:
results.txt— human-readable report of LogP and ΔG values per replicate and averagepartition_avg.npy— numpy array of averaged results(dG, dG_err, logP, logP_err)per solvent
process_partition and run_partition_workflow also return a pandas.DataFrame:
rep solvent dG dG_err logP logP_err
1 octanol-water_74-26 -12.3 0.4 2.15 0.07
1 hexadecane -15.1 0.5 2.64 0.09
...
avg octanol-water_74-26 -12.3 0.2 2.16 0.04
avg hexadecane -15.1 0.3 2.64 0.05
Convergence and Overlap Diagnostics
By default (diagnostics=True), process_partition also saves convergence/overlap
figures for every replicate and solvent leg (including the reference solvent) under
./Partitions/<resname>/diagnostics/<rep>/<solvent>/:
mbar_convergence.png/ti_convergence.png— forward/backward convergence of the free energy estimatembar_overlap_matrix.png— MBAR overlap matrix between neighbouring lambda states (MBAR only)ti_dhdl.png— dHdl curve across lambda states (TI only)convergence.log— convergence analysis log, kept out of the terminal
Pass diagnostics=False to skip this and only compute LogP values.
Testing
To run the full test suite from the main folder run:
uv run pytest -v tests/
This runs all tests in tests/; alchemtest is installed through the uv test
dependency group.
Notes on HPC Usage
By default ncores is set to os.cpu_count(), which returns the total number of logical CPUs on the machine. On shared HPC nodes this will be the node's full core count.
Always pass ncores explicitly to match the resources available to your job.
Developed by:
- Luís Borges Araújo — luis.borges@ens-lyon.fr
- Pablo Cardona Perez — pablo.cardona_perez@ens-lyon.fr
License
LGPLv2.1 License. See LICENSE for details.
Metadata
Release files for martini-taster 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| martini_taster-0.1.2.tar.gz | 1.3 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| martini_taster-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.7 MB
Release files / martini_taster-0.1.2.tar.gz
| Download URL | martini_taster-0.1.2.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
97cb5da32432a7ae1e640e2b3c4558ee0338e434d3cf3c6f1396ad3fee2ec108
|
|
BLAKE2b-256 checksum How to use checksums |
a108b58b1e6443558ec0626afad8146041fdb11c6f13ef8d6450a216642f72c6
|
| 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 Sep 17, 2026.
Transparency logRelease files / martini_taster-0.1.2-py3-none-any.whl
| Download URL | martini_taster-0.1.2-py3-none-any.whl |
|---|---|
| Size | 1.4 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3b0d73722aa252834ab2906e06ce50a58d53a22e5bf286c9e50174a800235d90
|
|
BLAKE2b-256 checksum How to use checksums |
5178fa768a97a9a7971f25220163ce61cd4419de244d7cb231abbe38588596e7
|
| 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 Sep 17, 2026.
Transparency log