Repository navigation
Groundwork for MTX folders: shared CSR builder and feature table - #47
Conversation
No change in behaviour; this is what #24's MTX import builds on. - core/csr_build.py: the bucket stage of the streaming transpose (count, nnz-balanced bounds, scratch group, bucket sort), taken out of recast so an MTX import can feed it entries in any order. On the way, two costs that grew with the matrix rather than the block: pass 1 ran bincount over every output row for each block, and pass 2 compared each block against every bucket. - conversion/features.py: the feature-table half of the 10x HDF5 converter (targets and --split-feature-types, var names, obs/var writing, var -> id/name/type on export), shared with the MTX one. - staging: only a Zarr store's temporary gets a .zarr suffix; an MTX output folder keeps its name. is_zarr_path moves to util.path so util stays below storage. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Test Results (py3.13)1 292 tests 1 292 ✅ 5m 9s ⏱️ Results for commit 13c8c8f. |
Test Results (py3.12)1 292 tests 1 292 ✅ 5m 26s ⏱️ Results for commit 13c8c8f. |
Part 1 of 3 for #24. No change in behaviour. This is what the MTX import builds on.
core/csr_build.py: the bucket stage of the streaming transpose, taken out ofrecastso that an MTX import can feed it entries in any order. That covers the count, the nnz-balanced bounds, the scratch group and the bucket sort. On the way it fixes two costs that grew with the matrix rather than the block:bincountover every output row for each block;conversion/features.py: the feature-table half of the 10x HDF5 converter, shared with the MTX one. That is the targets and--split-feature-types, the var names, writing obs and var, and the var → id/name/type mapping on export.tenx.pynow imports it; its messages are unchanged andtest_tenx.pypasses untouched..zarrsuffix. An MTX output folder keeps its name, where before it would have been staged asout.adata-tmp.zarr.is_zarr_pathmoves toutil/path.pyso thatutilstays belowstorage.Tests: new
tests/test_csr_build.pyand one new staging test.test_recast.py,test_tenx.pyand the recast perf guards pass unchanged.Followed by #48 (the streaming MTX codec) and #49 (the
10x-mtxformat).🤖 Generated with Claude Code