Skip to content

pileup and metagene: browse by default, output folders as input, a file picker, wider zoom-out (0.16.6) - #19

Merged
YPARK merged 4 commits into
mainfrom
pileup-metagene-inputs
Oct 6, 2026
Merged

YPARK merged 4 commits into
mainfrom
pileup-metagene-inputs

Conversation

@YPARK

@YPARK YPARK commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

What changes

  • Browse by default. faba pileup and faba metagene open full screen unless --batch-process (alias --batch-mode) is given, or there is no terminal. The old --interactive is still accepted, hidden.
  • Output folders as input. Either command takes a faba output directory, or a run record in it, instead of its files.
    • pileup takes the site matrices of --modality (m6A, else A-to-I), one track per batch, with the folder's site table and recorded GFF.
    • metagene profiles the folder's site table against the recorded GFF.
  • A picker when no input is given. A browser lists the files the command reads.
    • Space marks files to read together, and Ctrl+R takes them.
    • Space on a faba folder takes the whole folder.
    • pileup sums the marked matrices into one track; metagene profiles the marked site tables as one set of sites. metagene also takes several site tables on the command line.
  • --track with a directory. It now regroups the directory's matrices instead of being dropped.
  • Wider zoom-out. In the pileup browser, - past the whole gene reloads a span twice as wide, with the flanks and their genes, keeping the cursor and title.
  • Parallel reads. pileup reads its tracks (and the files within one), and metagene its site tables, in parallel, then takes them in order.
  • Loading progress. A pop-up shows a bar of files read while the browsers load, but only when a load takes more than a moment.
  • Separate tracks. In the picker, Tab gives each marked matrix its own track, named after its batch; --separate does the same on the command line.
  • Modality switch. M in the pileup browser switches an output folder between its m6A and A-to-I sites, at the same gene or span.
  • Last folder. The picker opens where the last choice was made from the same working folder.

Shared pieces

  • Folder browser: it now holds the marked files and draws their boxes, and it lists unzipped .zarr stores.
  • One source of truth for: the spinner frames (crate::tui::SPINNER), the site modalities, the site-table name test, and the folder-of-a-run-record lookup.

Checks

  • cargo test passes.
  • cargo clippy --all-targets is clean, with and without --features hdf5.
  • cargo fmt is applied.

YPARK added 4 commits October 6, 2026 10:24
…le picker, wider zoom-out (0.16.6)

- `faba pileup` and `faba metagene` open full screen by default;
  `--batch-process` (alias `--batch-mode`) prints or writes instead, as
  they do without a terminal. `--interactive` is still accepted, hidden.
- Either takes a faba output directory, or a run record in it, in place
  of its files: pileup takes the site matrices of `--modality` (m6A,
  else A-to-I), one track per batch, with the site table and recorded
  GFF; metagene profiles the site table against the recorded GFF.
- With no input, a browser asks: mark files to read together (pileup
  sums the marked matrices into one track, metagene profiles the marked
  site tables as one set of sites), or choose a whole output folder.
  Metagene also takes several site tables on the command line.
- `--track` now regroups a directory's matrices too, instead of being
  dropped when a directory is given.
- In the pileup browser, `-` past the whole gene reloads a span twice as
  wide, flanks and their genes included.
- A spinner shows while the browsers load, when a load takes more than
  a moment.
- Marking lives in the shared folder browser, which now also lists
  unzipped `.zarr` stores; one spinner frame set, one list of site
  modalities and one site-table name test.
pileup reads each track's matrices on its own thread and metagene each
site table, then takes them in order, so an output folder with many
batches, or several marked tables, loads in about the time of the
slowest one.
… folder

- The loading pop-up shows a bar of files read, and pileup reads the
  files of one track in parallel too, merging them in file order.
- `-` past the whole gene keeps the gene's title and the cursor.
- In the file picker Tab gives each marked matrix its own track, named
  after its batch; `--separate` does the same on the command line.
- `M` in the pileup browser switches an output folder between its m6A
  and A-to-I sites, at the same gene or span.
- The picker opens where the last choice was made.
…folder

- `M` is handled in the browse loop itself: each modality's inputs are
  resolved and their gene list read once, the gene-list filter kept, and
  a failed switch stays at the cursor; an unknown modality says so.
- The picked inputs and the separate-tracks choice live on the arguments;
  the picker returns its choice as a struct and opens its folder once.
- The picker's last choice is kept per working folder, under the XDG
  cache directory.
- One bar helper for the progress bars, one helper for the other site
  modality, and a merge for the per-file reads that takes over the first
  file's maps; the modality filter no longer allocates per row.
- Leave the methods document as it was.
@YPARK
YPARK merged commit e1b4811 into main Oct 6, 2026
6 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