{"id":29303548,"url":"https://github.com/scverse/mudata","last_synced_at":"2025-07-07T01:09:02.448Z","repository":{"id":39852055,"uuid":"392836868","full_name":"scverse/mudata","owner":"scverse","description":"Multimodal Data (.h5mu) implementation for Python","archived":false,"fork":false,"pushed_at":"2025-05-26T22:34:02.000Z","size":1106,"stargazers_count":99,"open_issues_count":13,"forks_count":20,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-06-28T16:48:16.626Z","etag":null,"topics":["anndata","data-analysis","genomics","mudata","multi-omics","multimodal-omics-analysis","muon","scverse"],"latest_commit_sha":null,"homepage":"https://mudata.rtfd.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scverse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-08-04T22:12:18.000Z","updated_at":"2025-06-09T07:02:58.000Z","dependencies_parsed_at":"2024-06-18T19:46:22.249Z","dependency_job_id":"5dd58204-8c90-4226-9312-f2127c8d32d7","html_url":"https://github.com/scverse/mudata","commit_stats":{"total_commits":454,"total_committers":13,"mean_commits":34.92307692307692,"dds":0.3325991189427313,"last_synced_commit":"280f1a8da3e42c502a50011afe8d7688c44019e5"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/scverse/mudata","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scverse%2Fmudata","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scverse%2Fmudata/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scverse%2Fmudata/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scverse%2Fmudata/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scverse","download_url":"https://codeload.github.com/scverse/mudata/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scverse%2Fmudata/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263996091,"owners_count":23541402,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anndata","data-analysis","genomics","mudata","multi-omics","multimodal-omics-analysis","muon","scverse"],"created_at":"2025-07-07T01:09:00.298Z","updated_at":"2025-07-07T01:09:02.442Z","avatar_url":"https://github.com/scverse.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![mudata header](./docs/img/mudata.svg)\n\n[![Documentation Status](https://readthedocs.org/projects/mudata/badge/?version=latest)](http://mudata.readthedocs.io/)\n[![PyPi version](https://img.shields.io/pypi/v/mudata)](https://pypi.org/project/mudata)\n[![](https://img.shields.io/badge/scverse-core-black.svg?labelColor=white\u0026logo=data:image/svg%2bxml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgOTEgOTEiIHZlcnNpb249IjEuMSIKICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIgogICAgeG1sbnM6c2VyaWY9Imh0dHA6Ly93d3cuc2VyaWYuY29tLyIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoyOyI+CiAgICA8ZyBpZD0iRWJlbmVfMyI+CiAgICAgICAgPGc+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNSw4OS42Yy0yMi4zLC0zLjQgLTMwLjYsLTE5LjggLTMwLjYsLTE5LjhjMTAuOCwxNi45IDQzLDkuMSA1Mi45LDIuNWMxMi40LC04LjMgOCwtMTUuMyA2LjgsLTE4LjFjNS40LDcuMiA1LjMsMjMuNSAtMS4xLDI5LjRjLTUuNiw1LjEgLTE1LjMsNy45IC0yOCw2WiIgc3R5bGU9ImZpbGw6I2ZmZjtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6IzAwMDtzdHJva2Utd2lkdGg6MXB4OyIvPgogICAgICAgICAgICA8cGF0aCBkPSJNODMuOSw0My41YzIuOSwtNy4xIDAuOCwtMTIuNSAwLjUsLTEzLjNjLTAuNywtMS4zIC0xLjUsLTIuMyAtMi40LC0zLjFjLTE2LjEsLTEyLjYgLTU1LjksMSAtNzAuOSwxNi44Yy0xMC45LDExLjUgLTEwLjEsMjAgLTYuNywyNS44YzMuMSw0LjggNy45LDcuNiAxMy40LDljLTExLjUsLTEyLjQgOS44LC0zMS4xIDI5LC0zOGMyMSwtNy41IDMyLjUsLTMgMzcuMSwyLjhaIiBzdHlsZT0iZmlsbDojMzQzNDM0O2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDoxcHg7Ii8+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik03OS42LDUwLjRjOSwtMTAuNSA1LC0xOS43IDQuOCwtMjAuNGMtMCwwIDQuNCw3LjEgMi4yLDIyLjZjLTEuMiw4LjUgLTUuNCwxNiAtMTAuMSwxMS44Yy0yLjEsLTEuOCAtMywtNi45IDMuMSwtMTRaIiBzdHlsZT0iZmlsbDojZmZmO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDoxcHg7Ii8+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik02NCw1NC4yYy0zLjMsLTQuOCAtOC4xLC03LjQgLTEyLjMsLTEwLjhjLTIuMiwtMS43IC0xNi40LC0xMS4yIC0xOS4yLC0xNS4xYy02LjQsLTYuNCAtOS41LC0xNi45IC0zLjQsLTIzLjFjLTQuNCwtMC44IC04LjIsMC4yIC0xMC42LDEuNWMtMS4xLDAuNiAtMi4xLDEuMiAtMi44LDJjLTYuNyw2LjIgLTUuOCwxNyAtMS42LDI0LjNjNC41LDcuOCAxMy4yLDE1LjQgMjQuMywyMi44YzUuMSwzLjQgMTUuNiw4LjQgMTkuMywxNmMxMS43LC04LjEgNy42LC0xNC45IDYuMywtMTcuNloiIHN0eWxlPSJmaWxsOiNiNGI0YjQ7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDA7c3Ryb2tlLXdpZHRoOjFweDsiLz4KICAgICAgICAgICAgPHBhdGggZD0iTTM4LjcsOS44YzcuOSw2LjMgMTIuNCw5LjggMjAsOC41YzUuNywtMSA0LjksLTcuOSAtNCwtMTMuNmMtNC40LC0yLjggLTkuNCwtNC4yIC0xNS43LC00LjJjLTcuNSwtMCAtMTYuMywzLjkgLTIwLjYsNi40YzQsLTIuMyAxMS45LC0zLjggMjAuMywyLjlaIiBzdHlsZT0iZmlsbDojZmZmO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDoxcHg7Ii8+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4=)](https://scverse.org)\n[![Powered by NumFOCUS](https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat\u0026colorA=E1523D\u0026colorB=007D8A)](https://numfocus.org)\n\n# MuData – multimodal data\n\n[Documentation](https://mudata.readthedocs.io/) | [Publication](https://genomebiology.biomedcentral.com/articles/10.1186/s13059-021-02577-8)\n\nFor using `MuData` in multimodal omics applications see [`muon`](https://github.com/scverse/muon).\n\n## Data structure\n\nIn the same vein as [AnnData](https://github.com/theislab/anndata) is designed to represent unimodal annotated datasets in Python, `MuData` is designed to provide functionality to load, process, and store multimodal omics data.\n\n\n```\nMuData\n  .obs     -- annotation of observations (cells, samples)\n  .var     -- annotation of features (genes, genomic loci, etc.)\n  .obsm    -- multidimensional cell annotation, \n              incl. a boolean for each modality\n              that links .obs to the cells of that modality\n  .varm    -- multidimensional feature annotation, \n              incl. a boolean vector for each modality\n              that links .var to the features of that modality\n  .mod\n    AnnData\n      .X    -- data matrix (cells x features)\n      .obs  -- cell metadata (assay-specific)\n      .var  -- annotation of features (genes, peaks, genomic sites)\n      .obsm\n      .varm\n      .uns\n  .uns\n```\n\n## Overview\n\n### Input\n\n`MuData` can be thought of as a multimodal container, in which every modality is an AnnData object:\n\n```py\nfrom mudata import MuData\n\nmdata = MuData({'rna': adata_rna, 'atac': adata_atac})\n```\n\nIf multimodal data from 10X Genomics is to be read, convenient readers are provided by [`muon`](https://github.com/scverse/muon) that return a `MuData` object with AnnData objects inside, each corresponding to its own modality:\n\n```py\nimport muon as mu\n\nmu.read_10x_h5(\"filtered_feature_bc_matrix.h5\")\n# MuData object with n_obs × n_vars = 10000 × 80000 \n# 2 modalities\n#   rna:\t10000 x 30000\n#     var:\t'gene_ids', 'feature_types', 'genome', 'interval'\n#   atac:\t10000 x 50000\n#     var:\t'gene_ids', 'feature_types', 'genome', 'interval'\n#     uns:\t'atac', 'files'\n```\n\n### I/O with `.h5mu` files\n\n`MuData` objects represent modalities as collections of AnnData objects. These collections can be saved to disk and retrieved using HDF5-based `.h5mu` files, which design is based on `.h5ad` file structure.\n\n```py\nimport mudata as md\n\nmdata_pbmc.write(\"pbmc_10k.h5mu\")\nmdata = md.read(\"pbmc_10k.h5mu\")\n```\n\nIt allows to effectively use the hierarchical nature of HDF5 files and to read/write AnnData object directly from/to `.h5mu` files:\n\n```py\nadata = md.read(\"pbmc_10k.h5mu/rna\")\nmd.write(\"pbmc_10k.h5mu/rna\", adata)\n```\n\n## Citation\n\nIf you use `mudata` in your work, please cite the publication as follows:\n\n\u003e **MUON: multimodal omics analysis framework**\n\u003e \n\u003e Danila Bredikhin, Ilia Kats, Oliver Stegle\n\u003e\n\u003e _Genome Biology_ 2022 Feb 01. doi: [10.1186/s13059-021-02577-8](https://doi.org/10.1186/s13059-021-02577-8).\n\nYou can cite the scverse publication as follows:\n\n\u003e **The scverse project provides a computational ecosystem for single-cell omics data analysis**\n\u003e\n\u003e Isaac Virshup, Danila Bredikhin, Lukas Heumos, Giovanni Palla, Gregor Sturm, Adam Gayoso, Ilia Kats, Mikaela Koutrouli, Scverse Community, Bonnie Berger, Dana Pe’er, Aviv Regev, Sarah A. Teichmann, Francesca Finotello, F. Alexander Wolf, Nir Yosef, Oliver Stegle \u0026 Fabian J. Theis\n\u003e\n\u003e _Nat Biotechnol._ 2023 Apr 10. doi: [10.1038/s41587-023-01733-8](https://doi.org/10.1038/s41587-023-01733-8).\n\n[//]: # (numfocus-fiscal-sponsor-attribution)\n\nmudata is part of the scverse® project ([website](https://scverse.org), [governance](https://scverse.org/about/roles)) and is fiscally sponsored by [NumFOCUS](https://numfocus.org/).\nIf you like scverse® and want to support our mission, please consider making a tax-deductible [donation](https://numfocus.org/donate-to-scverse) to help the project pay for developer time, professional services, travel, workshops, and a variety of other needs.\n\n\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://numfocus.org/project/scverse\"\u003e\n  \u003cimg\n    src=\"https://raw.githubusercontent.com/numfocus/templates/master/images/numfocus-logo.png\"\n    width=\"200\"\n  \u003e\n\u003c/a\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscverse%2Fmudata","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscverse%2Fmudata","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscverse%2Fmudata/lists"}