{"id":44791349,"url":"https://github.com/robinhenry/myriad-jax","last_synced_at":"2026-02-16T11:19:11.982Z","repository":{"id":337327146,"uuid":"1072032658","full_name":"robinhenry/myriad-jax","owner":"robinhenry","description":"JAX-native platform for massively parallel control, system identification, and active learning of uncertain, stochastic systems.","archived":false,"fork":false,"pushed_at":"2026-02-08T23:33:42.000Z","size":1728,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-09T04:53:37.480Z","etag":null,"topics":["control-theory","jax","mother-machine","reinforcement-learning","rl","system-id","system-identification"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robinhenry.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":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-08T07:00:13.000Z","updated_at":"2026-02-08T23:33:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/robinhenry/myriad-jax","commit_stats":null,"previous_names":["robinhenry/myriad-jax"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/robinhenry/myriad-jax","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robinhenry%2Fmyriad-jax","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robinhenry%2Fmyriad-jax/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robinhenry%2Fmyriad-jax/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robinhenry%2Fmyriad-jax/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robinhenry","download_url":"https://codeload.github.com/robinhenry/myriad-jax/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robinhenry%2Fmyriad-jax/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29506753,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T09:05:14.864Z","status":"ssl_error","status_checked_at":"2026-02-16T08:55:59.364Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["control-theory","jax","mother-machine","reinforcement-learning","rl","system-id","system-identification"],"created_at":"2026-02-16T11:19:08.505Z","updated_at":"2026-02-16T11:19:11.976Z","avatar_url":"https://github.com/robinhenry.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e Myriad\u003c/h1\u003e\n\n[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)\n[![PyPI version](https://badge.fury.io/py/myriad-jax.svg)](https://pypi.org/project/myriad-jax/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Docs](https://readthedocs.org/projects/myriad-jax/badge/?version=latest)](https://myriad-jax.readthedocs.io/en/latest/)\n[![Build](https://img.shields.io/github/actions/workflow/status/robinhenry/myriad-jax/ci.yml?label=build)](https://github.com/robinhenry/myriad-jax/actions)\n[![codecov](https://codecov.io/gh/robinhenry/myriad-jax/branch/main/graph/badge.svg)](https://codecov.io/gh/robinhenry/myriad-jax)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Checked with mypy](https://www.mypy-lang.org/static/mypy_badge.svg)](https://mypy-lang.org/)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n\n**JAX-native platform for massively parallel control, system identification, and active learning of uncertain, stochastic systems.**\n\n\u003e [!WARNING]\n\u003e **Myriad is in early active development.** APIs will change, documentation has gaps, and some features are still taking shape. Contributions, feedback, and ideas are very welcome! [Open a discussion](https://github.com/robinhenry/myriad-jax/discussions) or reach out to Robin (robin.henry@eng.ox.ac.uk).\n\n**Documentation:** [docs](https://myriad-jax.readthedocs.io)\n\n## At a Glance 🌟\n\nMyriad is a **playground to explore RL, traditional control, system identification, and active learning** — with a focus on problems where uncertainty, stochasticity, and rare discrete dynamics play a big role and force us to study very large numbers of variants in parallel (*think: biology → system = cell, chemistry → system = reactor*). 🛝\n\nIt's a **ready-to-go experimental platform**. You can use one of the already-implemented tasks, algorithms, or implement your own and simply plug them in. Myriad will handle the intricacies of JAX/GPU optimization, training/evaluation loops, hyperparameter tracking, metrics logging, and many more not-so-fun things — freeing time for the more fun science and engineering bits. 👩🏾‍🔬👨🏻‍🔬\n\nLast but not least, it yields results that are 100% reproducible. 🌟\n\n\u003e *Interested in the story behind Myriad? Read our [Motivation \u0026 Philosophy](https://myriad-jax.readthedocs.io/en/latest/introduction/motivation_philosophy.html).*\n\n### Key Features\n\n* **⚡ Massive GPU Parallelism:** run algorithms on 1M+ of environments simultaneously.\n\n* **🏎️ JAX JIT Optimization:** Myriad is *fast*, even on CPU.\n\n* **✅ 100% Reproducible:** Myriad is fully deterministic. Using the same initial random seed and configuration file will yield the same results → great for science.\n\n* **🎲 Exact Stochastic Simulations:** native JAX implementation of the Gillespie Algorithm (aka SSA) for discrete, asynchronous molecular events.\n\n* **∇ Differentiable \"White-Box\" Physics:** exposes underlying physics, ODEs, and jump processes for gradient-based system ID and active learning.\n\n* **🛠 Research-Ready:** pre-configured with [Hydra](https://hydra.cc/), [Pydantic](https://docs.pydantic.dev/), and [W\u0026B](https://wandb.ai/site) support.\n\n## Installation 🌱\n\n**Requirements:** Python 3.11+, JAX 0.7+.\n\n\u003e [!IMPORTANT]\n\u003e **GPU Support:** JAX installation can be hardware-specific. We strongly recommend [installing JAX](https://github.com/google/jax#installation) according to your CUDA/cuDNN version *before* installing Myriad if you encounter issues.\n\n```bash\n# Standard installation\npip install myriad-jax\n\n# With generic GPU dependencies (checks for nvidia-related packages)\npip install \"myriad-jax[gpu]\"\n```\n\n## Quickstart 🏁\n\nMyriad is designed to be used programmatically (for research loops) or via CLI (for massive sweeps).\n\n### Python API\n\n```python\nfrom myriad import create_config, train_and_evaluate\n\n# Configure a gene expression control experiment across 10k cells\nconfig = create_config(\n    env=\"gene-circuit-v1\",      # A stochastic gene circuit (Gillespie)\n    agent=\"dqn\",                # The algorithm to use (eg, 'pid', 'pqn')\n    num_envs=10_000,            # 10k parallel simulations (cells)\n    scan_autotune=True,         # Automatically optimize GPU training loop parameters\n)\n\n# Run the experiment (JIT-compiled \u0026 distributed on GPU)\nresults = train_and_evaluate(config)\n\n# Inspect performance metrics\nmetrics = results.eval_metrics\nprint(f\"Return (mean +/- std): {metrics.mean_return} +/- {metrics.std_return}\")\n\n# Quickly plot convergence curve\nTO ADD\n```\n\n### CLI Usage\n\nLeverage [Hydra](https://hydra.cc/) to run massive parameter sweeps or experiments directly from the terminal.\n\n```bash\n# Train a DQN agent on 50,000 parallel cartpole environments\nmyriad train env=cartpole-control run.num_envs=50000 agent=dqn\n```\n\nSee the [Documentation](https://myriad-jax.readthedocs.io) for further information, including tutorials.\n\n## Flagship Environments 🌍\n\nTo add.\n\n## Contributing 🛠️\n\nOur goal is for Myriad to become a platform that accelerates RL/control research, especially in the life sciences. As such, we'd love to have others contribute!\n\nPlease take a look at the [contributing guide](CONTRIBUTING.md) for instructions on how to add new environments, algorithms, or for other ways to contribute.\n\nIf in doubt, always feel free to reach out by [opening a discussion](https://github.com/robinhenry/myriad-jax/discussions).\n\n\u003c!-- ## Citation ✍️\n\nIf you use Myriad in your work, please cite the original paper:\n\n```bibtex\n@article{...}\n``` --\u003e\n\n## See Also 🔎\n\nHere is a non-exhaustive list of other JAX x RL libraries, some of which inspired the development of Myriad.\n\n**Environments:**\n\n* [Gymnax](https://github.com/RobertTLange/gymnax): classic environments including classic control, bsuite, MinAtar, and meta RL tasks.\n* [Brax](https://github.com/google/brax): a differentiable physics engine for rigid body control tasks.\n* [JaxMARL](https://github.com/FLAIROx/JaxMARL): multi-agent RL tasks.\n* [Jumanji](https://github.com/instadeepai/jumanji): a diverse suite of environments, ranging from simple games to NP-hard combinatorial problems.\n* [Pgx](https://github.com/sotetsuk/pgx): classic board game environments such as Chess, Go, and Shogi.\n* [XLand-Minigrid](https://github.com/dunnolab/xland-minigrid): meta RL gridworld environments.\n* [Craftax](https://github.com/MichaelTMatthews/Craftax): Crafter + NetHack in JAX.\n\n**Algorithms:**\n\n* [PureJaxRL](https://github.com/luchris429/purejaxrl): RL algorithms in JAX, inspired by [CleanRL](https://github.com/vwxyzjn/cleanrl).\n* [Evojax](https://github.com/google/evojax): neuroevolution algorithms.\n\n---\n\n*A little bit of history: Myriad is named after the Greek *myrias* (\"ten thousand\"), inspired by microfluidic \"mother machines\" that observe 100,000+ cells simultaneously. It brings this paradigm to computational research: providing a myriad of viewpoints from which to learn about and control complex systems — whether they are biological circuits, chemical reactors, or robotic swarms.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobinhenry%2Fmyriad-jax","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobinhenry%2Fmyriad-jax","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobinhenry%2Fmyriad-jax/lists"}