@@ -82,7 +82,12 @@ def _write_h5mu(file: h5py.File, mdata: MuData, write_data=True, **kwargs):
8282 if write_data or not adata .isbacked :
8383 write_elem (group , "X" , adata .X , dataset_kwargs = kwargs )
8484 if adata .raw is not None :
85- write_elem (group , "raw" , adata .raw )
85+ if not adata .isbacked :
86+ write_elem (group , "raw" , adata .raw , dataset_kwargs = kwargs )
87+ else :
88+ rawgrp = group .require_group ("raw" )
89+ write_elem (rawgrp , "var" , adata .raw .var , dataset_kwargs = kwargs )
90+ write_elem (rawgrp , "varm" , dict (adata .raw .varm ), dataset_kwargs = kwargs )
8691
8792 write_elem (group , "obs" , adata .obs , dataset_kwargs = kwargs )
8893 write_elem (group , "var" , adata .var , dataset_kwargs = kwargs )
@@ -201,7 +206,12 @@ def write_zarr(
201206 else :
202207 write_elem (group , "X" , adata .X , dataset_kwargs = kwargs )
203208 if adata .raw is not None :
204- write_elem (group , "raw" , adata .raw )
209+ if write_data or not adata .isbacked :
210+ write_elem (group , "raw" , adata .raw , dataset_kwargs = kwargs )
211+ else :
212+ rawgrp = group .require_group ("raw" )
213+ write_elem (rawgrp , "var" , adata .raw .var , dataset_kwargs = kwargs )
214+ write_elem (rawgrp , "varm" , dict (adata .raw .varm ), dataset_kwargs = kwargs )
205215
206216 write_elem (group , "obs" , adata .obs , dataset_kwargs = kwargs )
207217 write_elem (group , "var" , adata .var , dataset_kwargs = kwargs )
@@ -527,16 +537,16 @@ def _read_zarr_mod(g: zarr.Group, manager: MuDataFileManager = None, backed: boo
527537 d ["X" ] = read_elem (X )
528538 elif k != "raw" :
529539 d [k ] = read_elem (g [k ])
530- ad = AnnData (** d )
540+ adata = AnnData (** d )
531541 if manager is not None :
532- ad .file = AnnDataFileManager (ad , Path (g .name ).name , manager )
542+ adata .file = AnnDataFileManager (adata , Path (g .name ).name , manager )
533543
534544 raw = _read_legacy_raw (
535545 g , d .get ("raw" ), read_zarr_dataframe , read_elem , attrs = ("var" , "varm" ) if backed else ("var" , "varm" , "X" )
536546 )
537547 if raw :
538- ad ._raw = ad .Raw (ad , ** raw )
539- return ad
548+ adata ._raw = ad .Raw (adata , ** raw )
549+ return adata
540550
541551
542552def _read_h5mu_mod (g : h5py .Group , manager : MuDataFileManager = None , backed : bool = False ) -> dict :
@@ -551,14 +561,14 @@ def _read_h5mu_mod(g: h5py.Group, manager: MuDataFileManager = None, backed: boo
551561 d ["X" ] = read_elem (X )
552562 elif k != "raw" :
553563 d [k ] = read_elem (g [k ])
554- ad = AnnData (** d )
564+ adata = AnnData (** d )
555565 if manager is not None :
556- ad .file = AnnDataFileManager (ad , Path (g .name ).name , manager )
566+ adata .file = AnnDataFileManager (adata , Path (g .name ).name , manager )
557567
558568 raw = _read_raw (g , attrs = ("var" , "varm" ) if backed else ("var" , "varm" , "X" ))
559569 if raw :
560- ad ._raw = ad .Raw (ad , ** raw )
561- return ad
570+ adata ._raw = ad .Raw (adata , ** raw )
571+ return adata
562572
563573
564574def read_h5ad (
0 commit comments