ngc-learn 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 Neural Adaptive Computing (NAC) laboratory.
Official documentation, including tutorials, can be found here. The model museum repo, which implements several historical models, can be found here.
The official blog-post related to the source paper behind this software library
can be found
here.
You can find the related paper right here, which
was selected to appear in the Nature Neuromorphic Hardware and Computing Collection in 2023 and was
chosen as one of the Editors' Highlights for Applied Physics and Mathematics in 2022.
ngc-learn requires:
- Python (>=3.10)
- NumPy (>=1.26.0)
- SciPy (>=1.7.0)
- ngcsimlib (>=0.3.b2), (visit official page here)
- JAX (>= 0.4.18) (to enable GPU use, make sure to install one of the CUDA variants)
ngc-learn 1.2.beta0 and later require Python 3.10 or newer as well as ngcsimlib >=0.3.b3.
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).
Setup: The easiest way to install ngc-learn is through pip
:
$ pip install ngclearn
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 installation instructions. 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 $ python
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):
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.2b1'
Note: For access to the previous Tensorflow-2 version of ngc-learn (of which we no longer support), please visit the repo for ngc-learn-legacy.
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):
@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} }
We warmly welcome community contributions to this project. For details on how to make a contribution to ngc-learn, please see our contributing guidelines.
Source Code You can check/pull the latest source code for this library via:
$ git clone https://github.com/NACLab/ngc-learn.git
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:
$ python install -e .
Version:
1.2.1-Beta
Author:
Alexander G. Ororbia II
Director, Neural Adaptive Computing (NAC) Laboratory
Rochester Institute of Technology, Department of Computer Science
Copyright (C) 2021 The Neural Adaptive Computing Laboratory - All Rights Reserved
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.
If not, please email us