Skip to main content

Local-first, zero-server experiment tracking for researchers

Project description

bathos

PyPI Python 3.12+ License: Apache 2.0 Documentation

Public alpha — experimental software. bathos is under active development and should be considered a work in progress. APIs, catalog schema, and CLI commands may change between releases without a deprecation period. It is used in production by the author, but expect rough edges and missing features. Feedback and bug reports welcome.

Local-first, zero-server experiment tracking for researchers working across multiple projects and SLURM clusters.

Never lose track of what ran, what it produced, or whether results are still valid.

Install

uv tool install bathos

Quick start

# Register this project (creates .bth.toml + scripts/ skeleton)
bth init

# Run and track an experiment
bth run scripts/experiments/benchmark_tip3p.py -- --n-steps 1000 --out outputs/run1.parquet

# Query recent runs
bth ls --since 7d
bth show <run-id>

# Check if a result is still valid (compares recorded git hash to HEAD)
bth check outputs/run1.parquet

# Escape hatch: raw DuckDB SQL against the catalog
bth sql "SELECT project_slug, count(*) FROM runs GROUP BY 1"

Script conventions

bth init scaffolds the following structure in your project:

Directory Purpose Naming Tracked
scripts/experiments/ Typer experiment runners verb_noun.py Yes
scripts/analysis/ Post-hoc analysis and plots verb_noun.py Optional
scripts/validation/ Correctness checks verb_noun.py Optional
scripts/benchmarks/ Performance benchmarks verb_noun.py Yes
scripts/data/ Data pipeline / conversion verb_noun.py No
scripts/slurm/ SLURM job files + env helpers verb_noun.slurm Via wrapper
scripts/debug/ Debug specific issues YYMMDD_desc.py No
scripts/explore/ Open-ended investigation YYMMDD_desc.py No
scripts/scratch/ Catchall / ephemeral YYMMDD_desc.py No (gitignored)

Python decorator

For Typer-based scripts that want direct integration:

import bth

@bth.experiment(name="benchmark_tip3p", tags=["tip3p", "nvt"])
def main(n_steps: int, out: Path):
    ...

SLURM

bth init generates a scripts/slurm/_bth_env.sh helper. Source it in job scripts to get automatic provenance capture for batch runs.

Catalog

All runs land in ~/.bth/catalog/ as DuckDB + Parquet. Query with bth ls, bth find, or raw bth sql.

Documentation

Full documentation is available at https://bathos.readthedocs.io.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bathos-0.3.0.tar.gz (253.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bathos-0.3.0-py3-none-any.whl (71.6 kB view details)

Uploaded Python 3

File details

Details for the file bathos-0.3.0.tar.gz.

File metadata

  • Download URL: bathos-0.3.0.tar.gz
  • Upload date:
  • Size: 253.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bathos-0.3.0.tar.gz
Algorithm Hash digest
SHA256 e379b3cf8b25b977670bf873b92b8d9a972b2c5007e832c5d5671eec0ff07340
MD5 cdf9a2298ee66e334c53faabdbdf977a
BLAKE2b-256 5194019b716055701b5a1eb34c05180dcc5a89d8a01183eb4b19806ec2932365

See more details on using hashes here.

File details

Details for the file bathos-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: bathos-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 71.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bathos-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6d6b3c1aa7c58f7490e86b4ca28ba8846248d4d9f8ca041953da82491fa9a334
MD5 718d7bbd5d55809f744d10ddf48c035b
BLAKE2b-256 763f35f406527f709e1827f667d2990875d7467f5d63b604ecd7102fa03d4611

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page