Skip to main content

Taster

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.20
  • pandas >= 1.0
  • matplotlib >= 3.5
  • MDAnalysis >= 2.0
  • alchemlyb >= 2.0
  • tqdm >= 4.60
  • jax >= 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

Add as well --extra cuda for NVIDIA GPU support or --extra rocm for AMD GPU support

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

Add as well --extra cuda for NVIDIA GPU support or --extra rocm for AMD GPU support


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 average
  • partition_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 estimate
  • mbar_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:


License

LGPLv2.1 License. See LICENSE for details.

Metadata

Release files for martini-taster 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for martini-taster 0.1.3
File Size Uploaded
martini_taster-0.1.3.tar.gz 1.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for martini-taster 0.1.3
File Interpreter ABI Platform
martini_taster-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 2.7 MB

Release files / martini_taster-0.1.3.tar.gz

Download URL martini_taster-0.1.3.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
6e0626df09adb4929460634320c173b519359de6e32562b46faf529c322a6b26
BLAKE2b-256 checksum
How to use checksums
1975971b0665bbe9fa5b458ab0bcc1887095f24a05c78c764043ff881beb6b59
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 22, 2026.

Transparency log

Release files / martini_taster-0.1.3-py3-none-any.whl

Download URL martini_taster-0.1.3-py3-none-any.whl
Size 1.4 MB
Tags Python 3
SHA-256 checksum
How to use checksums
d1e00b928931afff346b9c07fdf921bc1c3add36a880894b80ec46eed4cae826
BLAKE2b-256 checksum
How to use checksums
45fc73a96f267bb39d3feac4bb6b53d8a78426b681bc4f7debbb3ce8f9f6684d
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 22, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page