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

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 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.2

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.2
File Size Uploaded
martini_taster-0.1.2.tar.gz 1.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for martini-taster 0.1.2
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

0.1.3

2 release files

This release

0.1.2 This release

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