You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
adata convert currently means "change a matrix's dtype, layout or density" (commands/convert.py, core/convert.py). Format conversion is the more natural meaning of the name, and users will look for it there.
Plan
Add adata recast, identical to today's convert. Move commands/convert.py → commands/recast.py and core/convert.py → core/recast.py; move tests (test_convert.py) and the COMMANDS.md section with them.
Transition period (0.7.x until 1.0, the same release that drops the h5ad alias):
adata convert called with the old matrix flags (--dtype, --layout, --dense, --sparse, --inplace) on AnnData → AnnData of the same backend forwards to recast and prints a deprecation warning.
Otherwise it runs format conversion.
Ambiguous case — backend change (h5ad → zarr) and matrix flags: convert the format, then recast, and warn.
Framework: the reader/writer registry, sniffing, the ConversionPlan dataclass and the common options described in the epic. Ship it together with the h5ad ↔ zarr converter (Convert: h5ad ↔ zarr #22) so the framework has one real user from day one.
Update CHANGELOG.md, docs/COMMANDS.md, README, and keep test_docs_are_accurate.py green.
Small fix on the way: _require_zarr still suggests uv sync --extra zarr, but that extra no longer exists.
Open questions
Is recast the right name? Alternatives: retype, reformat, matrix.
Should format-specific options live on convert directly, or be namespaced (--10x-genome, --loom-obs-names)? Flat options are friendlier; namespacing avoids clashes as formats grow.
Part of #20.
Why
adata convertcurrently means "change a matrix's dtype, layout or density" (commands/convert.py,core/convert.py). Format conversion is the more natural meaning of the name, and users will look for it there.Plan
adata recast, identical to today'sconvert. Movecommands/convert.py→commands/recast.pyandcore/convert.py→core/recast.py; move tests (test_convert.py) and theCOMMANDS.mdsection with them.h5adalias):adata convertcalled with the old matrix flags (--dtype,--layout,--dense,--sparse,--inplace) on AnnData → AnnData of the same backend forwards torecastand prints a deprecation warning.ConversionPlandataclass and the common options described in the epic. Ship it together with the h5ad ↔ zarr converter (Convert: h5ad ↔ zarr #22) so the framework has one real user from day one.CHANGELOG.md,docs/COMMANDS.md, README, and keeptest_docs_are_accurate.pygreen._require_zarrstill suggestsuv sync --extra zarr, but that extra no longer exists.Open questions
recastthe right name? Alternatives:retype,reformat,matrix.convertdirectly, or be namespaced (--10x-genome,--loom-obs-names)? Flat options are friendlier; namespacing avoids clashes as formats grow.