STOMS
STOMS (Storage Tool of Minor Significance) is an SQLite-first immutable,
provenance-first ledger for ASE structures and their numerical evaluations.
The public library is stoms.atomsledger.
SQLite and PostgreSQL are supported backends; SQLite is the portable archive format. Structures, evaluations, trajectories, stored queries, and aggregations are immutable; post-ingestion tags are append-only annotations.
PostgreSQL
PostgreSQL 16 or newer is a supported operational backend. SQLite remains the sole portable archive format. Install the optional driver dependency:
uv sync --extra postgres --dev
Construct a ledger from a normal DSN and a schema it exclusively owns:
from stoms.atomsledger import AtomsLedger, PostgresRepository
ledger = AtomsLedger(
PostgresRepository("postgresql://user:password@host/database", schema="project")
)
PostgresRepository creates and validates its tables in the selected schema.
Do not share that schema with unrelated applications. Export a portable SQLite
archive with ledger.export_database("archive.atomsledger", overwrite=True).
See the PostgreSQL operational ledger guide for project
setup and bidirectional SQLite synchronization.
Integration tests read STOMS_POSTGRES_TEST_DSN. The DSN must identify a
disposable database; each test creates and drops its own schema.
Start the local PostgreSQL 16 test service with Docker (Engine + the Compose plugin):
docker compose up -d postgres
export STOMS_POSTGRES_TEST_DSN='postgresql://stoms:stoms@localhost:54329/stoms_test'
uv run pytest tests/postgres
If that fails with a permission error connecting to the Docker socket, your
user cannot talk to the Docker daemon yet. Adding yourself to the docker
group (sudo usermod -aG docker $USER, then a full logout/login) is the usual
fix, but it does not always take effect right away; sudo docker compose up -d postgres works as a reliable fallback.
The Compose database uses in-memory storage and test-only credentials. Stop it
after testing with docker compose down; do not use this service for data that
must persist.
Install
Add STOMS as a dependency:
uv add stoms
# or
pip install stoms
Optional extras: stoms[postgres] and stoms[vasp].
Development setup
To work on STOMS itself:
uv sync --dev
uv run pytest
Install the optional VASP parser with:
uv sync --extra vasp --dev
Documentation
The documentation is ready for MkDocs publication:
- Overview
- Researcher quick start
- Getting started
- Use cases and boundaries
- Public API
- VASP parser
- Limitations
Serve it locally:
uv sync --group docs
uv run --group docs mkdocs serve
License
Copyright 2026 Ralf Wanzenböck.
STOMS is licensed under the Apache License 2.0; see LICENSE.
The structure viewer of stoms serve uses the
Jmol element colours and the
covalent radii of B. Cordero et al., "Covalent radii revisited",
Dalton Trans. (2008) 2832–2838,
doi:10.1039/B801115J.
Metadata
Release files for stoms 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| stoms-0.6.0.tar.gz | 364.5 kB | Without provenance | Details for stoms-0.6.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| stoms-0.6.0-py3-none-any.whl | Python 3 | none | any | Details for stoms-0.6.0-py3-none-any.whl |
Total release size: 512.9 kB
Release files / stoms-0.6.0.tar.gz
| Download URL | stoms-0.6.0.tar.gz |
|---|---|
| Size | 364.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e05b30bd9fe6b78f3c115ff29eaef97edb6451b985fe70de7eae25c419736b6f
|
|
BLAKE2b-256 checksum How to use checksums |
c6e01a5996ed4a7d744011a42ac577b43ae0bd4f974dffd67794dc449ab6a841
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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":null}
|
Release files / stoms-0.6.0-py3-none-any.whl
| Download URL | stoms-0.6.0-py3-none-any.whl |
|---|---|
| Size | 148.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ae1396e6dfc9a77adb59a162a31dc643f05c23f8abfa6e3fe405651231a82d19
|
|
BLAKE2b-256 checksum How to use checksums |
335b50d066798c0a93ce8c004eb249ca76207d9695db76801528ace29704963d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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":null}
|
Security for stoms 0.6.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.