Skip to content

Commit da9e2d3

Browse files
committed
use anndata's read_zarr instead of our custom implementation
MuData/AnnData read from Zarr cannot be backed, so there is no need for custom handling
1 parent f55e483 commit da9e2d3

1 file changed

Lines changed: 5 additions & 33 deletions

File tree

src/mudata/_core/io.py

Lines changed: 5 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@
2121
from anndata import AnnData
2222
from anndata._io.h5ad import _read_raw
2323
from anndata._io.h5ad import read_dataframe as read_h5ad_dataframe
24-
from anndata._io.zarr import _read_legacy_raw
2524
from anndata._io.zarr import read_dataframe as read_zarr_dataframe
26-
from anndata._io.zarr import write_zarr as anndata_write_zarr
2725
from anndata.compat import _read_attr
2826
from anndata.io import read_elem, write_elem
27+
from anndata.io import read_zarr as anndata_read_zarr
28+
from anndata.io import write_zarr as anndata_write_zarr
2929
from scipy import sparse
3030

3131
from .config import OPTIONS
@@ -197,7 +197,7 @@ def write_zarr(
197197
if adata.raw is not None:
198198
adata.strings_to_categoricals(adata.raw.var)
199199

200-
if write_data or not adata.isbacked:
200+
if write_data:
201201
if chunks is not None and not isinstance(adata.X, sparse.spmatrix):
202202
write_elem(group, "X", adata.X, dataset_kwargs=dict(chunks=chunks, **kwargs))
203203
else:
@@ -479,23 +479,19 @@ def read_zarr(store: str | PathLike | MutableMapping | zarr.Group | zarr.abc.sto
479479
"""
480480
import zarr
481481

482-
if isinstance(store, Path):
483-
store = str(store)
484-
485482
f = zarr.open(store, mode="r")
486483
d = {}
487484
if "mod" not in f.keys():
488485
return ad.read_zarr(store)
489486

490-
manager = MuDataFileManager()
491487
for k in f.keys():
492488
if k in {"obs", "var"}:
493489
d[k] = read_zarr_dataframe(f[k])
494490
if k == "mod":
495491
mods = {}
496492
gmods = f[k]
497493
for m in gmods.keys():
498-
mods[m] = _read_zarr_mod(gmods[m], manager)
494+
mods[m] = anndata_read_zarr(gmods[m])
499495

500496
mod_order = None
501497
if "mod-order" in gmods.attrs:
@@ -508,35 +504,11 @@ def read_zarr(store: str | PathLike | MutableMapping | zarr.Group | zarr.abc.sto
508504
d[k] = read_elem(f[k])
509505

510506
mu = MuData._init_from_dict_(**d)
511-
mu.file = manager
507+
mu.file = MuDataFileManager()
512508

513509
return mu
514510

515511

516-
def _read_zarr_mod(g: zarr.Group, manager: MuDataFileManager = None, backed: bool = False) -> dict:
517-
d = {}
518-
519-
for k in g.keys():
520-
if k in ("obs", "var"):
521-
d[k] = read_zarr_dataframe(g[k])
522-
elif k == "X":
523-
X = g["X"]
524-
if not backed:
525-
d["X"] = read_elem(X)
526-
elif k != "raw":
527-
d[k] = read_elem(g[k])
528-
ad = AnnData(**d)
529-
if manager is not None:
530-
ad.file = AnnDataFileManager(ad, Path(g.name).name, manager)
531-
532-
raw = _read_legacy_raw(
533-
g, d.get("raw"), read_zarr_dataframe, read_elem, attrs=("var", "varm") if backed else ("var", "varm", "X")
534-
)
535-
if raw:
536-
ad._raw = ad.Raw(ad, **raw)
537-
return ad
538-
539-
540512
def _read_h5mu_mod(g: h5py.Group, manager: MuDataFileManager = None, backed: bool = False) -> dict:
541513
d = {}
542514

0 commit comments

Comments
 (0)