{"id":25594405,"url":"https://github.com/chaobrain/brainunit","last_synced_at":"2026-04-13T17:30:18.646Z","repository":{"id":243354658,"uuid":"811627983","full_name":"chaobrain/brainunit","owner":"chaobrain","description":"Physical units and unit-aware mathematical system in JAX for brain dynamics and AI4Science.","archived":false,"fork":false,"pushed_at":"2024-10-28T10:49:18.000Z","size":3433,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-28T12:17:51.664Z","etag":null,"topics":["ai4science","brain-dynamics-modeling","brain-modeling","physical-quantities","physical-units"],"latest_commit_sha":null,"homepage":"https://brainunit.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chaobrain.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-07T01:28:47.000Z","updated_at":"2024-10-26T10:08:16.000Z","dependencies_parsed_at":"2024-07-12T16:58:01.169Z","dependency_job_id":"3be4bde5-17ec-4510-8deb-4b72edcc1acb","html_url":"https://github.com/chaobrain/brainunit","commit_stats":null,"previous_names":["brainpy/brainunit","chaoming0625/brainunit","chaobrain/brainunit"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaobrain%2Fbrainunit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaobrain%2Fbrainunit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaobrain%2Fbrainunit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chaobrain%2Fbrainunit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chaobrain","download_url":"https://codeload.github.com/chaobrain/brainunit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240002137,"owners_count":19732164,"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":["ai4science","brain-dynamics-modeling","brain-modeling","physical-quantities","physical-units"],"created_at":"2025-02-21T11:00:33.610Z","updated_at":"2026-04-13T17:30:18.581Z","avatar_url":"https://github.com/chaobrain.png","language":"Python","funding_links":[],"categories":["Libraries"],"sub_categories":["New Libraries"],"readme":"\u003ch1 align='center'\u003eBrainUnit\u003c/h1\u003e\n\u003ch2 align='center'\u003ePhysical units and unit-aware math system for general-purpose brain dynamics modeling\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\n  \t\u003cimg alt=\"Header image of brainunit.\" src=\"https://raw.githubusercontent.com/chaobrain/saiunit/main/docs/_static/brainunit.png\" width=30%\u003e\n\u003c/p\u003e \n\n\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://pypi.org/project/brainunit/\"\u003e\u003cimg alt=\"Supported Python Version\" src=\"https://img.shields.io/pypi/pyversions/brainunit\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/chaobrain/brainunit/blob/main/LICENSE\"\u003e\u003cimg alt=\"LICENSE\" src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\"\u003e\u003c/a\u003e\n    \u003ca href='https://brainunit.readthedocs.io/en/latest/?badge=latest'\u003e\n        \u003cimg src='https://readthedocs.org/projects/brainunit/badge/?version=latest' alt='Documentation Status' /\u003e\n    \u003c/a\u003e  \t\n    \u003ca href=\"https://badge.fury.io/py/brainunit\"\u003e\u003cimg alt=\"PyPI version\" src=\"https://badge.fury.io/py/brainunit.svg\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://pepy.tech/projects/brainunit\"\u003e\u003cimg src=\"https://static.pepy.tech/badge/brainunit\" alt=\"PyPI Downloads\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\n\n\n[BrainUnit](https://github.com/chaobrain/brainunit) provides physical units and unit-aware mathematical system in JAX for brain dynamics modeling. It introduces rigoirous physical units into high-performance AI-driven abstract numerical computing. \n\nBrainUnit is initially designed to enable unit-aware computations in brain dynamics modeling (see our [BDP ecosystem](https://ecosystem-for-brain-dynamics.readthedocs.io/)). However, its features and capacities can be applied to general domains in scientific computing and AI4Science. Starting in 2025/02, BrainUnit has been fully integrated into [SAIUnit](https://github.com/chaobrain/saiunit) (the **Unit** system for **S**cientific **AI**). \n\nFunctionalities are the same for both ``brainunit`` and ``saiunit``, and their functions and data structures are interoperable, sharing the same set of APIs, and eliminating any potential conflicts. This meas that \n\n```python\nimport brainunit as u\n```\n\nequals to \n\n```python\nimport saiunit as u\n```\n\nFor users primarily engaged in general scientific computing, `saiunit` is likely the preferred choice. However, for those focused on brain modeling, we recommend `brainunit`, as it is more closely aligned with our specialized brain dynamics programming ecosystem.\n\n\n\n## Documentation\n\nThe official documentation of BrainUnit is hosted on Read the Docs: [https://brainunit.readthedocs.io](https://brainunit.readthedocs.io)\n\n\n\n## Features\n\n`brainunit` can be seamlessly integrated into every aspect of our [brain dynamics programming ecosystem](https://ecosystem-for-brain-dynamics.readthedocs.io/), such as, the checkpointing of [braintools](https://github.com/chaobrain/braintools), the event-driven operators in [brainevent](https://github.com/chaobrain/brainevent), the state-based JIT compilation in [brainstate](https://github.com/chaobrain/brainstate), online learning rules in [brainscale](https://github.com/chaobrain/brainscale), or event more. \n\nA quick example for this kind of integration:\n\n```python\n\nimport braintools\nimport brainevent.nn\nimport brainstate\nimport brainunit as u\n\n\nclass EINet(brainstate.nn.Module):\n    def __init__(self):\n        super().__init__()\n        self.n_exc = 3200\n        self.n_inh = 800\n        self.num = self.n_exc + self.n_inh\n        self.N = brainstate.nn.LIFRef(\n            self.num, V_rest=-60. * u.mV, V_th=-50. * u.mV, V_reset=-60. * u.mV,\n            tau=20. * u.ms, tau_ref=5. * u.ms,\n            V_initializer=brainstate.init.Normal(-55., 2., unit=u.mV)\n        )\n        self.E = brainstate.nn.AlignPostProj(\n            comm=brainevent.nn.FixedProb(self.n_exc, self.num, 0.02, 0.6 * u.mS),\n            syn=brainstate.nn.Expon.desc(self.num, tau=5. * u.ms),\n            out=brainstate.nn.COBA.desc(E=0. * u.mV),\n            post=self.N\n        )\n        self.I = brainstate.nn.AlignPostProj(\n            comm=brainevent.nn.FixedProb(self.n_inh, self.num, 0.02, 6.7 * u.mS),\n            syn=brainstate.nn.Expon.desc(self.num, tau=10. * u.ms),\n            out=brainstate.nn.COBA.desc(E=-80. * u.mV),\n            post=self.N\n        )\n\n    def update(self, t, inp):\n        with brainstate.environ.context(t=t):\n            spk = self.N.get_spike() != 0.\n            self.E(spk[:self.n_exc])\n            self.I(spk[self.n_exc:])\n            self.N(inp)\n            return self.N.get_spike()\n    \n    def save_checkpoint(self):\n        braintools.file.msgpack_save('states.msgpack', self.states())\n    \n```\n\n\n\n## Installation\n\nYou can install ``brainunit`` via pip:\n\n```bash\npip install brainunit --upgrade\n```\n\n\n\n## See also the BDP ecosystem\n\nWe are building the [brain dynamics programming (BDP) ecosystem](https://ecosystem-for-brain-dynamics.readthedocs.io/). [brainunit](https://github.com/chaobrain/brainunit) has been deeply integrated into our BDP ecosystem.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchaobrain%2Fbrainunit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchaobrain%2Fbrainunit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchaobrain%2Fbrainunit/lists"}