Breaking Changes
- Subset CLI output is now an option:
h5ad subset INPUT --output OUTPUT (positional output removed); use --inplace to modify the source file directly.
- Info CLI flag rename:
--types is now --tree.
- Export CLI uses
export dataframe instead of the old export table flow (table command removed).
- Export/import entry paths are now positional arguments (e.g.,
h5ad export dataframe FILE obs ...).
New Features
- Full
.zarr support alongside .h5ad, including backend detection and store abstraction.
- Import commands for dataframe/array/sparse/dict data types with consistent CLI UX.
- Expanded
info capabilities: tree view, depth control, and entry-path inspection.
Subset Improvements
- Sparse + dense matrix handling now works across
layers, obsm, varm, obsp, and varp.
- Safer copying of HDF5 groups (improves robustness for complex
uns content).
- Optional in-place subsetting with safe temp-store replacement.
Export/Import Improvements
- Better handling for awkward arrays and sparse exports.
- More robust CSV/MTX/NPY import and export behavior, with clearer errors.
Compatibility & Legacy Support
- Added support for legacy v0.1.0 categorical/dataframe formats.
- Expanded entry type detection and read logic for older formats.
Docs
- New
GET_STARTED.md plus updated README and element specs documentation for .h5ad/.zarr.
Tests & CI
- Larger test matrix, improved coverage reporting, and expanded test suites for export/import/subset/info and zarr.
Migration Guide (quick examples)
# info: old -> new
h5ad info --types data.h5ad
h5ad info --tree data.h5ad
# subset: old -> new
h5ad subset data.h5ad out.h5ad --obs cells.txt
h5ad subset data.h5ad --output out.h5ad --obs cells.txt
h5ad subset data.h5ad --obs cells.txt --inplace
# export table -> export dataframe
h5ad export table data.h5ad obs --output obs.csv
h5ad export dataframe data.h5ad obs --output obs.csv