Output data#

In order to save & share multimodal data, .h5mu file format has been designed.

.h5mu files#

.h5mu files are the default storage for MuData objects. These are HDF5 files with a standardised structure, which is similar to the one of .h5ad files where AnnData objects are stored. The most noticeable distinction is .mod group presence where individual modalities are stored — in the same way as they would be stored in the .h5ad files.

mdata.write("mudata.h5mu")

Inspect the contents of the file in the terminal:

> h5ls mudata.h5mu
mod                      Group
obs                      Group
obsm                     Group
var                      Group
varm                     Group

> h5ls data/mudata.h5mu/mod
atac                     Group
rna                      Group

AnnData inside .h5mu#

Individual modalities in the .h5mu file are stored in exactly the same way as AnnData objects. This, together with the hierarchical nature of HDF5 files, makes it possible to read individual modalities from .h5mu files as well as to save individual modalities to the .h5mu file:

adata = mudata.read("mudata.h5mu/rna")

mudata.write("mudata.h5mu/rna", adata)

The function mudata.read() automatically decides based on the input if mudata.read_h5mu() or rather mudata.read_h5ad() should be called.

Learn more about the on-disk format specification shared by MuData and AnnData in the AnnData documentation.

.zarr files#

Zarr is a cloud-friendly format for chunked N-dimensional arrays. Zarr is another supported serialisation format for MuData objects:

mdata = mudata.read_zarr("mudata.zarr")

mdata.write_zarr("mudata.zarr")

Just as with .h5mu files, MuData objects saved in .zarr format resemble how AnnData objects are stored, with one additional level of abstraction:

> tree -L 1 mudata.zarr
mudata.zarr
├── mod
├── obs
├── obsm
├── obsmap
├── obsp
├── uns
├── var
├── varm
├── varmap
└── varp