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/attaches 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sillon-1.2.3.tar.gz.
File metadata
- Download URL: sillon-1.2.3.tar.gz
- Upload date:
- Size: 83.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cccc8304b375529fc49b5a7800a3471d062d58f71e7e83dbe965972f1efebbbd
|
|
| MD5 |
701cc13629cd317c2328c34e92fe89aa
|
|
| BLAKE2b-256 |
bed8554485b6f831db790f0c91a5a51a56f02f25a05a681b47966f8342cb0cc6
|
Provenance
The following attestation bundles were made for sillon-1.2.3.tar.gz:
Publisher:
publish.yml on balerat/sillon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sillon-1.2.3.tar.gz -
Subject digest:
cccc8304b375529fc49b5a7800a3471d062d58f71e7e83dbe965972f1efebbbd - Sigstore transparency entry: 2062904028
- Sigstore integration time:
-
Permalink:
balerat/sillon@37e97784f0c1309fd8e350fdb3e02cdeb3dcd322 -
Branch / Tag:
refs/tags/v1.2.3 - Owner: https://github.com/balerat
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@37e97784f0c1309fd8e350fdb3e02cdeb3dcd322 -
Trigger Event:
push
-
Statement type:
File details
Details for the file sillon-1.2.3-py3-none-any.whl.
File metadata
- Download URL: sillon-1.2.3-py3-none-any.whl
- Upload date:
- Size: 96.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4e6ca9e82f7030c220b70c1466a0ab64cc7fdaf73d6c350ac9157df3ed52782
|
|
| MD5 |
a15237c202fdee2c125a58285b97e281
|
|
| BLAKE2b-256 |
d20c7dff4f38acf0a30a5bbe23ee8fa5e4b6e0d49a95e2f3f72120811827d95a
|
Provenance
The following attestation bundles were made for sillon-1.2.3-py3-none-any.whl:
Publisher:
publish.yml on balerat/sillon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sillon-1.2.3-py3-none-any.whl -
Subject digest:
e4e6ca9e82f7030c220b70c1466a0ab64cc7fdaf73d6c350ac9157df3ed52782 - Sigstore transparency entry: 2062904118
- Sigstore integration time:
-
Permalink:
balerat/sillon@37e97784f0c1309fd8e350fdb3e02cdeb3dcd322 -
Branch / Tag:
refs/tags/v1.2.3 - Owner: https://github.com/balerat
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@37e97784f0c1309fd8e350fdb3e02cdeb3dcd322 -
Trigger Event:
push
-
Statement type: