[![Python Version](https://img.shields.io/badge/python-3.10%20%7C%203.11-blue.svg)](https://www.python.org/downloads)[![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/Naereen/StrapDown.js/graphs/commit-activity)[![Documentation Status](https://readthedocs.org/projects/ngc-learn/badge/?version=latest)](http://ngc-learn.readthedocs.io/en/latest/?badge=latest)[![DOI](https://zenodo.org/badge/483413212.svg)](https://zenodo.org/badge/latestdoi/483413212)
<img src="docs/images/ngc-learn-logo.png" width="300">
<b>ngc-learn</b> is a Python library for building, simulating, and analyzing
biomimetic systems, neurobiological agents, spiking neuronal networks,
predictive coding circuitry, and models that learn via biologically-plausible
forms of credit assignment. This simulation toolkit is built on top of JAX and is
distributed under the 3-Clause BSD license.
It is currently maintained by the
<a href="https://www.cs.rit.edu/~ago/nac_lab.html">Neural Adaptive Computing (NAC) laboratory</a>.
## <b>Documentation</b>
Official documentation, including tutorials, can be found
<a href="https://ngc-learn.readthedocs.io/en/latest/#">here</a>. The model museum repo,
which implements several historical models, can be found
<a href="https://github.com/NACLab/ngc-museum">here</a>.
The official blog-post related to the source paper behind this software library
can be found
<a href="https://go.nature.com/3rgl1K8">here</a>.<br>
You can find the related paper <a href="https://www.nature.com/articles/s41467-022-29632-7">right here</a>, which
was selected to appear in the Nature <i>Neuromorphic Hardware and Computing Collection</i> in 2023 and was
chosen as one of the <i>Editors' Highlights for Applied Physics and Mathematics</i> in 2022.
<!--The technical report going over the theoretical underpinnings of the
NGC framework can be found here. TO BE RELEASED SOON. -->
## Installation
### Dependencies
ngc-learn requires:
1) Python (>=3.10)
2) NumPy (>=1.26.0)
3) SciPy (>=1.7.0)
4) ngcsimlib (>=0.3.b4), (visit official page <a href="https://github.com/NACLab/ngc-sim-lib">here</a>)
5) JAX (>= 0.4.18) (to enable GPU use, make sure to install one of the CUDA variants)
<!--
5) scikit-learn (>=1.3.1) if using `ngclearn.utils.density`
6) matplotlib (>=3.4.3) if using `ngclearn.utils.viz`
6) networkx (>=2.6.3) (currently optional but required if using `ngclearn.utils.experimental.viz_utils`)
7) pyviz (>=0.2.0) (currently optional but required if using `ngclearn.utils.experimental.viz_utils`)
-->
---
ngc-learn 1.2.beta2 and later require Python 3.10 or newer as well as ngcsimlib >=0.3.b4.
ngc-learn's plotting capabilities (routines within `ngclearn.utils.viz`) require
Matplotlib (>=3.8.0) and imageio (>=2.31.5) and both plotting and density estimation
tools (routines within ``ngclearn.utils.density``) will require Scikit-learn (>=0.24.2).
Many of the tutorials will require Matplotlib (>=3.8.0), imageio (>=2.31.5), and Scikit-learn (>=0.24.2).
### User Installation
<i>Setup</i>: The easiest way to install ngc-learn is through <code>pip</code>:
<pre>
$ pip install ngclearn
</pre>
Note that installing the official pip package without any form of JAX installed
on your system will default to downloading the CPU version of ngc-learn; make
sure you have installed the Cuda 12 version of Jax/Jaxlib on your system before
running the above pip command if you want to use the GPU version.
The documentation includes more detailed
<a href="https://ngc-learn.readthedocs.io/en/latest/installation.html">installation instructions</a>.
Note that this library was developed on Ubuntu 20.04 and tested on Ubuntu(s) 18.04 and 20.04.
If the installation was successful, you should see the following if you test
it against your Python interpreter, i.e., run the <code>$ python</code> command
and complete the following sequence of steps as depicted in the screenshot below
(you should see at the bottom of your output something akin to the
right major and minor version of ngc-learn):
```console
Python 3.11.4 (main, MONTH DAY YEAR, TIME) [GCC XX.X.X] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ngclearn
>>> ngclearn.__version__
'1.2b3'
```
<i>Note:</i> For access to the previous Tensorflow-2 version of ngc-learn (of
which we no longer support), please visit the repo for
<a href="https://github.com/NACLab/ngc-learn-legacy"><i>ngc-learn-legacy</i></a>.
## <b>Attribution:</b>
If you use this code in any form in your project(s), please cite its source
paper (as well as ngc-learn's official software citation):
<pre>
@article{Ororbia2022,
author={Ororbia, Alexander and Kifer, Daniel},
title={The neural coding framework for learning generative models},
journal={Nature Communications},
year={2022},
month={Apr},
day={19},
volume={13},
number={1},
pages={2064},
issn={2041-1723},
doi={10.1038/s41467-022-29632-7},
url={https://doi.org/10.1038/s41467-022-29632-7}
}
</pre>
## <b>Development:</b>
We warmly welcome community contributions to this project. For details on how to
make a contribution to ngc-learn, please see our
[contributing guidelines](CONTRIBUTING.md).
<b>Source Code</b>
You can check/pull the latest source code for this library via:
<pre>
$ git clone https://github.com/NACLab/ngc-learn.git
</pre>
If you are working on and developing with ngc-learn pulled from the github
repo, then run the following command to set up an editable install:
<pre>
$ python install -e .
</pre>
**Version:**<br>
1.2.3-Beta <!-- -Alpha -->
Author:
Alexander G. Ororbia II<br>
Director, Neural Adaptive Computing (NAC) Laboratory<br>
Rochester Institute of Technology, Department of Computer Science
## <b>Copyright:</b>
Copyright (C) 2021 The Neural Adaptive Computing Laboratory - All Rights Reserved<br>
You may use, distribute and modify this code under the
terms of the BSD 3-clause license.
You should have received a copy of the BSD 3-clause license with
this software.<br>
If not, please [email us](mailto:ago@cs.rit.edu)
Raw data
{
"_id": null,
"home_page": null,
"name": "ngclearn",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "python, ngc-learn, predictive-processing, predictive-coding, jax, spiking-neural-networks, biomimetics, bionics, computational-neuroscience",
"author": null,
"author_email": "Alexander Ororbia <ago@cs.rit.edu>, William Gebhardt <wdg1351@rit.edu>",
"download_url": "https://files.pythonhosted.org/packages/87/95/050aff285fcafcab7ec8e8d3d2b50a06bcda02618dea9064e98cee16d4d8/ngclearn-1.2b3.tar.gz",
"platform": null,
"description": "[![Python Version](https://img.shields.io/badge/python-3.10%20%7C%203.11-blue.svg)](https://www.python.org/downloads)[![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/Naereen/StrapDown.js/graphs/commit-activity)[![Documentation Status](https://readthedocs.org/projects/ngc-learn/badge/?version=latest)](http://ngc-learn.readthedocs.io/en/latest/?badge=latest)[![DOI](https://zenodo.org/badge/483413212.svg)](https://zenodo.org/badge/latestdoi/483413212)\n\n<img src=\"docs/images/ngc-learn-logo.png\" width=\"300\">\n\n<b>ngc-learn</b> is a Python library for building, simulating, and analyzing\nbiomimetic systems, neurobiological agents, spiking neuronal networks,\npredictive coding circuitry, and models that learn via biologically-plausible\nforms of credit assignment. This simulation toolkit is built on top of JAX and is\ndistributed under the 3-Clause BSD license.\n\nIt is currently maintained by the\n<a href=\"https://www.cs.rit.edu/~ago/nac_lab.html\">Neural Adaptive Computing (NAC) laboratory</a>.\n\n## <b>Documentation</b>\n\nOfficial documentation, including tutorials, can be found\n<a href=\"https://ngc-learn.readthedocs.io/en/latest/#\">here</a>. The model museum repo,\nwhich implements several historical models, can be found\n<a href=\"https://github.com/NACLab/ngc-museum\">here</a>.\n\nThe official blog-post related to the source paper behind this software library\ncan be found\n<a href=\"https://go.nature.com/3rgl1K8\">here</a>.<br>\nYou can find the related paper <a href=\"https://www.nature.com/articles/s41467-022-29632-7\">right here</a>, which\nwas selected to appear in the Nature <i>Neuromorphic Hardware and Computing Collection</i> in 2023 and was\nchosen as one of the <i>Editors' Highlights for Applied Physics and Mathematics</i> in 2022.\n\n<!--The technical report going over the theoretical underpinnings of the\n NGC framework can be found here. TO BE RELEASED SOON. -->\n\n## Installation\n\n### Dependencies\n\nngc-learn requires:\n1) Python (>=3.10)\n2) NumPy (>=1.26.0)\n3) SciPy (>=1.7.0)\n4) ngcsimlib (>=0.3.b4), (visit official page <a href=\"https://github.com/NACLab/ngc-sim-lib\">here</a>)\n5) JAX (>= 0.4.18) (to enable GPU use, make sure to install one of the CUDA variants)\n<!--\n5) scikit-learn (>=1.3.1) if using `ngclearn.utils.density`\n6) matplotlib (>=3.4.3) if using `ngclearn.utils.viz`\n6) networkx (>=2.6.3) (currently optional but required if using `ngclearn.utils.experimental.viz_utils`)\n7) pyviz (>=0.2.0) (currently optional but required if using `ngclearn.utils.experimental.viz_utils`)\n-->\n\n---\nngc-learn 1.2.beta2 and later require Python 3.10 or newer as well as ngcsimlib >=0.3.b4.\nngc-learn's plotting capabilities (routines within `ngclearn.utils.viz`) require\nMatplotlib (>=3.8.0) and imageio (>=2.31.5) and both plotting and density estimation\ntools (routines within ``ngclearn.utils.density``) will require Scikit-learn (>=0.24.2).\nMany of the tutorials will require Matplotlib (>=3.8.0), imageio (>=2.31.5), and Scikit-learn (>=0.24.2).\n\n### User Installation\n\n<i>Setup</i>: The easiest way to install ngc-learn is through <code>pip</code>:\n<pre>\n$ pip install ngclearn\n</pre>\n\nNote that installing the official pip package without any form of JAX installed\non your system will default to downloading the CPU version of ngc-learn; make\nsure you have installed the Cuda 12 version of Jax/Jaxlib on your system before\nrunning the above pip command if you want to use the GPU version.\n\nThe documentation includes more detailed\n<a href=\"https://ngc-learn.readthedocs.io/en/latest/installation.html\">installation instructions</a>.\nNote that this library was developed on Ubuntu 20.04 and tested on Ubuntu(s) 18.04 and 20.04.\n\nIf the installation was successful, you should see the following if you test\nit against your Python interpreter, i.e., run the <code>$ python</code> command\nand complete the following sequence of steps as depicted in the screenshot below\n(you should see at the bottom of your output something akin to the\nright major and minor version of ngc-learn):\n\n```console\nPython 3.11.4 (main, MONTH DAY YEAR, TIME) [GCC XX.X.X] on linux\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n>>> import ngclearn\n>>> ngclearn.__version__\n'1.2b3'\n```\n\n<i>Note:</i> For access to the previous Tensorflow-2 version of ngc-learn (of\nwhich we no longer support), please visit the repo for\n<a href=\"https://github.com/NACLab/ngc-learn-legacy\"><i>ngc-learn-legacy</i></a>.\n\n## <b>Attribution:</b>\n\nIf you use this code in any form in your project(s), please cite its source\npaper (as well as ngc-learn's official software citation):\n<pre>\n@article{Ororbia2022,\n author={Ororbia, Alexander and Kifer, Daniel},\n title={The neural coding framework for learning generative models},\n journal={Nature Communications},\n year={2022},\n month={Apr},\n day={19},\n volume={13},\n number={1},\n pages={2064},\n issn={2041-1723},\n doi={10.1038/s41467-022-29632-7},\n url={https://doi.org/10.1038/s41467-022-29632-7}\n}\n</pre>\n\n## <b>Development:</b>\n\nWe warmly welcome community contributions to this project. For details on how to\nmake a contribution to ngc-learn, please see our\n[contributing guidelines](CONTRIBUTING.md).\n\n<b>Source Code</b>\nYou can check/pull the latest source code for this library via:\n<pre>\n$ git clone https://github.com/NACLab/ngc-learn.git\n</pre>\n\nIf you are working on and developing with ngc-learn pulled from the github\nrepo, then run the following command to set up an editable install:\n<pre>\n$ python install -e .\n</pre>\n\n**Version:**<br>\n1.2.3-Beta <!-- -Alpha -->\n\nAuthor:\nAlexander G. Ororbia II<br>\nDirector, Neural Adaptive Computing (NAC) Laboratory<br>\nRochester Institute of Technology, Department of Computer Science\n\n## <b>Copyright:</b>\n\nCopyright (C) 2021 The Neural Adaptive Computing Laboratory - All Rights Reserved<br>\nYou may use, distribute and modify this code under the\nterms of the BSD 3-clause license.\n\nYou should have received a copy of the BSD 3-clause license with\nthis software.<br>\nIf not, please [email us](mailto:ago@cs.rit.edu)\n",
"bugtrack_url": null,
"license": "BSD-3-Clause License",
"summary": "Simulation software for building and analyzing arbitrary predictive coding, spiking network, and biomimetic neural systems.",
"version": "1.2b3",
"project_urls": {
"Changelog": "https://github.com/NACLab/ngc-learn/blob/main/history.txt",
"Documentation": "https://ngc-learn.readthedocs.io/",
"Homepage": "https://github.com/NACLab/ngc-learn",
"Lab Page": "https://www.cs.rit.edu/~ago/nac_lab.html"
},
"split_keywords": [
"python",
" ngc-learn",
" predictive-processing",
" predictive-coding",
" jax",
" spiking-neural-networks",
" biomimetics",
" bionics",
" computational-neuroscience"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "98b8484ce805ffb0a93814a95e4c6d8cb5707dc2e383b84eb563271912c96a9f",
"md5": "0a98057ad0916afc112893bbb5a0850c",
"sha256": "7effb87e32ac215388411dc6143c0ff2462e2dc437f69c984c386401de32d03a"
},
"downloads": -1,
"filename": "ngclearn-1.2b3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0a98057ad0916afc112893bbb5a0850c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 291912,
"upload_time": "2024-07-22T02:24:37",
"upload_time_iso_8601": "2024-07-22T02:24:37.366653Z",
"url": "https://files.pythonhosted.org/packages/98/b8/484ce805ffb0a93814a95e4c6d8cb5707dc2e383b84eb563271912c96a9f/ngclearn-1.2b3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8795050aff285fcafcab7ec8e8d3d2b50a06bcda02618dea9064e98cee16d4d8",
"md5": "edd7a8df88dc1656cb2b412a10521c09",
"sha256": "9c3b659eb084d942cd4412b7cc5f8418ecbeaf783ad2f7e4f30200dc5a643a7f"
},
"downloads": -1,
"filename": "ngclearn-1.2b3.tar.gz",
"has_sig": false,
"md5_digest": "edd7a8df88dc1656cb2b412a10521c09",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 166796,
"upload_time": "2024-07-22T02:24:39",
"upload_time_iso_8601": "2024-07-22T02:24:39.169810Z",
"url": "https://files.pythonhosted.org/packages/87/95/050aff285fcafcab7ec8e8d3d2b50a06bcda02618dea9064e98cee16d4d8/ngclearn-1.2b3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-22 02:24:39",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "NACLab",
"github_project": "ngc-learn",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "numpy",
"specs": [
[
">=",
"1.24.0"
]
]
},
{
"name": "scikit-learn",
"specs": [
[
">=",
"0.24.2"
]
]
},
{
"name": "scipy",
"specs": [
[
">=",
"1.7.0"
]
]
},
{
"name": "matplotlib",
"specs": [
[
">=",
"3.8.0"
]
]
},
{
"name": "patchify",
"specs": []
},
{
"name": "jax",
"specs": [
[
">=",
"0.4.18"
]
]
},
{
"name": "jaxlib",
"specs": [
[
">=",
"0.4.18"
]
]
},
{
"name": "ngcsimlib",
"specs": [
[
">=",
"0.3.b4"
]
]
},
{
"name": "imageio",
"specs": [
[
">=",
"2.31.5"
]
]
}
],
"lcname": "ngclearn"
}