Skip to main content

Git for simulations — log, track, query and analyze simulation runs.

Project description

sillon

Git for simulations — log, track, and analyze your simulation runs.

sillon records the parameters, results, metadata, figures, and source code of every run into a local store (SQLite + HDF5), then lets you explore and compare those runs from the command line or from a notebook. It is designed for researchers who run many simulations and want to keep track of what produced what.

Status: 1.0. The Python logging API, the background server, the CLI, and the analysis library are functional. See the roadmap for what is not yet implemented.

Install

pip install sillon              # the full toolchain
pip install "sillon[analysis]"  # also installs pandas for to_dataframe()

For development from a clone (editable install with test/build tooling):

pip install -e ".[dev]"         # or: make install

Either way you get two console commands: sillon (the CLI) and sillon-server-daemon (the logging server, launched automatically by the Python API).

Quickstart — logging a run

import sillonpy as sp
import numpy as np

sp.init(run_name="my_fit", project_name="demo")   # starts/at­taches to the project store

x = np.linspace(0, 10, 100)
sp.log_param("degree", 1)
coef = np.polyfit(x, 1.3 * x + 5, 1)
sp.log_result("coef", coef)                        # heavy arrays go to HDF5 automatically

import matplotlib.pyplot as plt
fig, ax = plt.subplots(); ax.plot(x, np.polyval(coef, x))
sp.log_figure(fig, name="fit", used=["coef"], caption="Linear fit")  # figure + data provenance

sp.add_tag("baseline"); sp.add_note("first attempt")

Run your script normally (python my_script.py). A run is stored under .sillon/. Re-running with the same run_name auto-increments it (my_fit, my_fit_2, ...), so nothing is overwritten.

Quickstart — analyzing runs

import sillonlab as sl

project = sl.load_project()          # defaults to the current directory
project.show()                       # pretty overview of all runs

run = project.get("my_fit")
run.show()                           # detail card: params, results (+sizes), figures, notes
coef = run.load_result("coef")       # read the array back from HDF5
project.query(degree=1, has_result="coef").to_dataframe()   # filter + tabulate

# attach post-processed data to an existing run for later reuse
run.add_analysis("fit_on_grid", np.polyval(coef, np.linspace(0, 1, 50)), comment="fine grid")

# bundle a run's full context (manifest + readable report + source) into a zip
run.report("my_fit_report.zip", with_data=True)

CLI overview

Run from inside a project directory:

sillon context                       # overview of all runs
sillon search -p optimizer=adam -r coef   # find runs by parameter / result / artifact
sillon show my_fit -p -r             # detailed parameters and results
sillon compare my_fit my_fit_2       # parameter + source diff
sillon add my_fit --tag production --note "kept"
sillon grab my_fit -r coef --dest ./out      # fetch a result/artifact as a file
sillon report my_fit --with-data     # export a context bundle zip
sillon prune --older-than 30d        # free disk space (keeps metadata by default)

See docs/cli.md for the full reference.

Packages

Package Role
silloncommon Data layer: ORM models, queries, command protocol
silloncore Engine (single source of truth), logging server, HDF5/glob storage
sillonpy Python client API used inside simulation scripts
silloncli The sillon command-line tool
sillonlab Analysis library for scripts and notebooks

Testing

make test

Roadmap

Not yet implemented: a GUI, a collaborative web platform, Slurm integration, run reproduction/relaunch (sillon run), a live-monitoring TUI (sillon watch), resource estimation (sillon estimate), and native client APIs for other languages.

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

sillon-1.0.0.tar.gz (69.2 kB view details)

Uploaded Source

Built Distribution

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

sillon-1.0.0-py3-none-any.whl (79.6 kB view details)

Uploaded Python 3

File details

Details for the file sillon-1.0.0.tar.gz.

File metadata

  • Download URL: sillon-1.0.0.tar.gz
  • Upload date:
  • Size: 69.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sillon-1.0.0.tar.gz
Algorithm Hash digest
SHA256 742b95929915ba41b54a7c376210399d18cba507d2f5b103cc2f3d6325b4034b
MD5 67be089418a2ed1b047015628adde1a7
BLAKE2b-256 b112d89d0c52ec0af17509b78c18a25393d3faabc29055328439cf3f2e5e923a

See more details on using hashes here.

Provenance

The following attestation bundles were made for sillon-1.0.0.tar.gz:

Publisher: publish.yml on balerat/sillon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sillon-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: sillon-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 79.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sillon-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3722f8504b7dd55f45ba6e55c646deb3dfb2f0cd76d08e006f8dac43ee69ce32
MD5 8c4b28e25eab7f3511672f9fa8e7c2bb
BLAKE2b-256 256e2c289cc925eb0d5c073868de9c3f272754f843841bfbf9cc101694c4019e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sillon-1.0.0-py3-none-any.whl:

Publisher: publish.yml on balerat/sillon

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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