Skip to content

v0.1.5

Choose a tag to compare

@pkharchenko pkharchenko released this 05 Jul 00:01
· 78 commits to main since this release

Patch release. The PyPI-packaged (Python/C++) change over 0.1.4 is the extend_for_viewer(primary=) API; the rest is JS (the @lstar/core reader, consumed from the repo, not the wheel).

Python / R / JS — extend_for_viewer(primary=)

Name the grouping the viewer opens on. It's hoisted to the front of the prepared groupings, so it keys the counts_cellmajor locality reorder and is summarized first, and it composes with auto-detect (primary="cell_type" with no explicit groupings still preps every detected grouping but keys the reorder on cell_type). counts_cellmajor_order records provenance.group; a primary that isn't a grouping over the cell axis is rejected with a clear error. Identical semantics on Python, R, and JS, enforced by a cross-surface conformance leg (conformance/viewer_primary.sh).

JS reader (@lstar/core) — hosted single-file .lstar.zarr.zip + throughput

Not in the PyPI wheel; in the tag for browser/Node consumers:

  • ZipStore correctness + performance: tolerates zarrita's leading-slash chunk keys (fixes a silent data-collapse on hosted zips); reads a chunk in one round-trip (local header folded into the data read); and fetches with cache: "no-store" so concurrent same-URL range reads parallelize (avoids the browser HTTP cache lock).
  • cscColumns(name, cols[]) — a batched, coalesced multi-column read (the column-major twin of csrRows) for gene panels; and the byte-range fast path now range-reads within a chunk for multi-chunk arrays.
  • A field's independent component arrays (labels/values/offsets, codes/categories) are read concurrently, removing an avoidable round-trip from the viewer's first-paint path.