Repository navigation
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #427 +/- ##
==========================================
+ Coverage 65.79% 66.57% +0.77%
==========================================
Files 26 26
Lines 3263 3339 +76
==========================================
+ Hits 2147 2223 +76
Misses 1116 1116
🚀 New features to boost your workflow:
|
timtreis
force-pushed
the
fix/xenium-pre130-csv
branch
from
October 5, 2026 22:05
b741f27 to
8150719
Compare
XOA < 1.3.0 exports, and GEO deposits reduced to the CSV outputs, ship no parquet and no cells.zarr.zip. xenium() opened cells.zarr.zip (via _XeniumCells.open) and read the parquet files unconditionally, so it raised FileNotFoundError on these bundles before any CSV-based path could run. When cells.zarr.zip and the parquet files are absent: - read the table metadata, cell/nucleus boundaries, and transcripts from the .csv[.gz] outputs (columns identical to the parquet ones); - reconstruct the raster cell/nucleus labels by filling each boundary polygon with its integer label into a uint32 raster (as the zarr masks are) -- keyed by cell_id for pre-1.3.0 bundles, or by the label_index recovered from the boundary CSVs' label_id column for v2/v3 (hex cell_id, multinucleate nuclei supported). The table's cell_labels column and the raster share these exact values, honoring labels_models_kwargs (chunking/multiscale); - read the cell feature matrix from a cell_feature_matrix/ MatrixMarket directory or cell_feature_matrix.tar.gz when cell_feature_matrix.h5 is missing. The zarr path is gated on cells.zarr.zip existing, not on the XOA version. Mapping the table to cell_labels degrades gracefully (warn, keep circles) when a cell lacks a boundary, rather than raising. Add committed CSV-only fixtures -- 30 cells of the 10x Mouse Brain v1.0.2 dataset (integer ids) and 12 cells of the Xenium Prime Mouse Brain v3 dataset (hex ids + label_id) -- with tests asserting the reconstructed labels match the table's cell_labels, plus the circles, uncompressed-.csv, and mtx variants.
timtreis
force-pushed
the
fix/xenium-pre130-csv
branch
from
October 5, 2026 22:28
8150719 to
642f014
Compare
timtreis
marked this pull request as ready for review
October 5, 2026 22:29
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
GEO Xenium deposits are commonly stripped to the flat outputs: no
cells.zarr.zip, no parquet, and the counts matrix as MatrixMarket instead ofcell_feature_matrix.h5.xenium()openedcells.zarr.zipand read the parquet unconditionally, so these raisedFileNotFoundErrorbefore any fallback could run.When those are absent, read the equivalents:
.csv[.gz](columns identical to the parquet)cell_id, or bylabel_indexfrom the boundary CSVs'label_idcolumn for hex-id v2/v3 bundles (multinucleate nuclei included)cell_feature_matrix/MatrixMarket dir orcell_feature_matrix.tar.gzwhen.h5is missingThe zarr path is gated on
cells.zarr.zipexisting, not on the XOA version — hex-id ≥1.3.0 runs are deposited without it.GEO examples this targets:
.h5: GSE271693Tests: two committed CSV-only fixtures (10x Mouse Brain v1.0.2, integer id; Xenium Prime v3, hex id +
label_id). Also checked against the full 10x v1.0.2 bundle (reconstructed label id-sets match the zarr masks, 36,602 cells) and a real GEO deposit (GSE283843, 13,178 cells).Note: GEO strips
experiment.xenium; a reconstructed manifest must carrypixel_size(the reader needs it for the micron↔pixel scale and does not guess it).