Skip to content

Example sample tables

Ready-to-upload sample tables for the standalone local queue app (make app-local, qg-app-local, or uv run marimo run src/qg/apps/queue_app_local.py). Upload one on the app's landing page, configure the queue, then preview/download — no B-Fabric needed.

You don't have to download these first: the local app's landing page has a bundled-example dropdown that loads a vial or plate example straight into the session, plus a button to download the selected table as an editable template for your own data.

Authoritative copy lives in the package

These files mirror src/qg/examples/sample_tables/, which is the authoritative copy shipped in the wheel (so qg-app-local finds them after pip install qg). A byte-equality test keeps the two locations identical — when adding or editing an example, change both.

Most files are in blocked submission order (groups in contiguous blocks), so they are useful for exercising the randomization modes and the η² balance score in the Visualizations tab (compare no vs blocked/random).

File Mode Contents
vial_samples_5x5.csv vial 5 groups (A–E) × 5 = 25
vial_samples_5x5.xlsx vial same data, demonstrates .xlsx upload
plate_samples_5x5.csv plate 25 samples, 96-well positions A1…C1
vial_samples_80.csv vial larger run: 80 samples, 8 groups (A–H) × 10, interleaved so every group appears on both generated trays
plate_samples_80.csv plate larger run: 80 samples split across two 96-well plates/trays, with each group on both plates
multi_container_samples.csv vial 3 containers/projects in one upload — 50001: 8 samples in two groups (case/control); 50002: 6 ungrouped samples; 50003: 16 samples in four groups (g1–g4)

The multi-container file shows how a single upload spans several projects: the app groups by container_id, shuffles only within each project, and inserts a separation block between them. Container 50002 (no grouping_var) shows the N/A balance score and sample-type-only colouring.

Column schema

The parser normalizes common header spellings (e.g. Sample Namesample_name, Sample IDsample_id, plus B-Fabric export names) and keeps only the columns below; anything else is ignored. Mode is plate when both plate_id and grid_position are present, otherwise vial.

Vial — required: sample_name, sample_id, container_id. Optional: tube_id, grouping_var.

Plate — required: sample_name, sample_id, container_id, plate_id, grid_position. Optional: position, tray (the app's Start tray supplies it when blank), grouping_var.

Notes: - sample_id must be unique whole numbers; container_id is a generic order/group id (samples are grouped and shuffled within each container_id). - grouping_var is the blocking/colouring variable used by blocked / blocked_uniform randomization and the balance score. - Plate mode needs both plate_id and grid_position. A table with only one of them (e.g. a B-Fabric export carrying _position but no _gridposition) is parsed as vial — no error is raised, so double-check the previewed mode if you expected a plate queue.

Regenerate or adapt these with any spreadsheet/CSV editor — they are plain tables.