Skip to Content
NotebooksAbout the notebooks

About the notebooks

Four marimo  notebooks, easiest first. They are ordinary Python files, so they run as notebooks or as scripts, and they are executed on every docs build — if the API drifts from what an example claims, the build fails rather than the page misleading you.

NotebookWhat it shows
1What a dataset knowsDimensions, and the provenance of each one
2An error before computeA naming mismatch caught with nothing executed
3A graph that has not runPer-sample fan-out, and every error in one pass
4Resistance, and why the rules are hashedVendored algorithms, and content hashing over version labels

Every value on those pages was computed by the engine during the build. Nothing is transcribed.

Running them

pip install ligase-bio marimo marimo edit examples/notebooks/01_what_a_dataset_knows.py

Or without marimo at all, since a marimo notebook is importable Python:

python examples/notebooks/01_what_a_dataset_knows.py

The first three need no data and no aligner — they use the tiny fixtures committed with the test suite, so they work on a fresh clone. The fourth runs the real interpretation if the HIV-1 demo data is present, and explains itself if it is not:

python scripts/fetch_demo_data.py --project PRJNA1218827

Why they are not interactive on this page

marimo can export a notebook that runs in the browser, through Pyodide. Ligase cannot use that: it is a compiled Rust extension, and there is no emscripten wheel for it — the published wheels are manylinux, macOS and Windows. Building one would mean PyO3 and a bundled SQLite compiled for emscripten, which is not a realistic target.

So these are rendered from real runs and meant to be downloaded and run locally, where the engine actually works. The honest version of “interactive docs” for a native extension is a notebook you can run, not an iframe that cannot import the thing it documents.

The full pipeline

The notebooks are deliberately small. For the reference pipeline end to end — reads, alignment, variant calls, resistance — see examples/hiv-resistance/pipeline.py and running a pipeline.

Last updated on