Skip to content

Views for the rest: names and trees, plans before writing, import preview, histogram explorer; version 0.10.10 - #43

Merged
YPARK merged 1 commit into
mainfrom
ypp/trusting-pasteur-ao27p0
Oct 31, 2026
Merged

YPARK merged 1 commit into
mainfrom
ypp/trusting-pasteur-ao27p0

Conversation

@YPARK

@YPARK YPARK commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

The remaining commands get first-class views, under the one view rule from #42: on a terminal they open, and --batch-process or DATA_BEANS_BATCH=1 runs them straight through. MCP and qc's internal pooling always run in batch.

Browse

  • histogram opens the stat explorer on the --stat and --dim asked (StatExplorer::on_stat); -o values are still written.
  • row-names / column-names open a names browser (new interactive::list_tui): / filters (a regular expression when the text is one), Space marks, a marks the shown entries, w writes the marked (or shown) names, y copies them. A file -o is still written.
  • list-h5 / list-zarr show the file as a tree in the same browser; Enter or the arrows open and close groups, and w writes paths. Batch output is byte-for-byte what it was.

Plan before writing

New interactive::plan_tui: a table of what will be written, notes, and settings on keys. Each change redraws the plan, Enter writes, and q writes nothing. A plan that can't be written says why, and Enter waits.

  • merge-backend: each input's rows and columns, the rows every input has and those only some have, and the output size. c sets common rows and s squeeze. Files whose rows differ block until c.
  • merge-mtx: the MTX sets found and their common rows; s squeeze.
  • align-data: each file's data type and column group, and the rows and columns each keeps; r sets the data types.
  • subsample: input against output size, and expected entries; n cells, g genes, s seed.
  • split: train and test cells per fold; t test fraction, k folds, s seed, and g grid under --coord.

The merge, align, subsample and split bodies now take what the plan decided as arguments. Their batch behaviour is unchanged.

Import preview

Every from-* build ends with the rows' and columns' non-zeros on log bins, with the squeeze cutoffs marked. s squeeze and r/c cutoffs are settings. Enter keeps the build, squeezed if on; q deletes it.

Note

On a terminal, merge-*, align-data, subsample, split and from-* now wait for Enter. A script started from a terminal should export DATA_BEANS_BATCH=1 or pass --batch-process. The README says so.

Version

0.10.10. A patch release: the new library API (list_tui, plan_tui, StatExplorer::on_stat, zarr_io::output_path) is additive.

Testing

  • cargo fmt --check, cargo clippy --all-targets --features sim -- -D warnings, and cargo test (219 lib, 97 bin, and the integration suites) pass.
  • cargo check --all-targets passes with --features hdf5, --features alg, and --no-default-features --features aux,tui.
  • New tests: list view (paths, filter with ancestors, folding, write marked/shown, drawing), plan view (blocked Enter, typed numbers, cancel, a setting's key never taken for moving), on_stat, the zarr and zip tree parsers, merge and align plan counts, split and subsample settings, and import-preview counts and histogram lines.
  • Driven by hand in tmux on a small matrix: list-zarr tree, column-names write, histogram on mean with Tab to rows, merge-backend blocked then merged with common rows, split to 3 folds, subsample, from-mtx keep with squeeze and discard.

…view, histogram explorer; version 0.10.10

On a terminal, under the one view rule (--batch-process or
DATA_BEANS_BATCH=1 runs straight through):

- histogram opens the stat explorer on the --stat and --dim asked;
  -o values are still written.
- row-names and column-names open a names browser, list-h5 and
  list-zarr a tree of the file (interactive::list_tui): / filters, Space
  marks, w writes the marked or shown entries (a tree's as paths), y
  copies. Batch output is unchanged.
- merge-backend, merge-mtx, align-data, subsample and split show a plan
  of what they write before writing (interactive::plan_tui): inputs and
  what they share, the output and its size, and settings on keys (common
  rows, squeeze, data types, cells, genes, test fraction, folds, seed,
  grid), each change replanning. Enter writes; q writes nothing; a plan
  that cannot be written says why.
- Every from-* build ends in an import preview: rows' and columns'
  non-zeros on log bins with the squeeze cutoffs, cutoffs and squeeze on
  keys. Enter keeps the build, q deletes it.

The merge, align, subsample and split bodies take what the plan decided
as arguments; qc's pooling and the MCP server run them in batch.
@YPARK
YPARK merged commit 46b0a3d into main Oct 31, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant