ngclearn

NGC-Learn: Neurobiological Systems Design and Simulation in Python

https://github.com/naclab/ngc-learn

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: nature.com, zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.0%) to scientific vocabulary

Keywords

biological-neural-networks brain-inspired-computing cognitive-science computational-neuroscience credit-assignment free-energy hebbian-learning jax learning-algorithms local-learning machine-learning neural-networks neuroai neuroscience predictive-coding predictive-processing python spike-timing-dependent-plasticity spiking-networks spiking-neural-networks
Last synced: 6 months ago · JSON representation ·

Repository

NGC-Learn: Neurobiological Systems Design and Simulation in Python

Basic Info
  • Host: GitHub
  • Owner: NACLab
  • License: bsd-3-clause
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 79.8 MB
Statistics
  • Stars: 155
  • Watchers: 6
  • Forks: 31
  • Open Issues: 3
  • Releases: 8
Topics
biological-neural-networks brain-inspired-computing cognitive-science computational-neuroscience credit-assignment free-energy hebbian-learning jax learning-algorithms local-learning machine-learning neural-networks neuroai neuroscience predictive-coding predictive-processing python spike-timing-dependent-plasticity spiking-networks spiking-neural-networks
Created almost 4 years ago · Last pushed 7 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation Authors

README.md

Python VersionLicenseMaintenanceDocumentation StatusDOI

ngc-learn is a Python library for building, simulating, and analyzing biophysical / neurobiological systems, spiking neuronal networks, predictive coding circuitry, and biomimetic (NeuroAI) agents that learn in a biologically-plausible manner. This simulation toolkit, meant to support computational neuroscience and brain-inspired computing research, 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.

Documentation

Official documentation, including tutorials, can be found here. The model museum repo (ngc-museum), 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.

Installation

Dependencies

ngc-learn requires: 1) Python (>=3.10) 2) NumPy (>=1.22.0) 3) SciPy (>=1.7.0) 4) ngcsimlib (>=1.0.1), (visit official page here) 5) JAX (>=0.4.28) (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 2.0.3 and later require Python 3.10 or newer as well as ngcsimlib >=1.0.1. 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

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/22.04 and tested on Ubuntu(s) 20.04 and 22.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):

```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 '2.0.3' ```

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.

Attribution:

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}
}

Development:

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:
2.0.3 <!--1.2.3-Beta--> <!-- -Alpha -->

Author: Alexander G. Ororbia II
Director, Neural Adaptive Computing (NAC) Laboratory
Rochester Institute of Technology, Department of Computer Science

Copyright:

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

Owner

  • Name: Neural Adaptive Computing Laboratory
  • Login: NACLab
  • Kind: organization

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use NGC-Learn, please cite both the software and the source paper/publication referenced in the README."
authors:
  - family-names: Ororbia
    given-names: Alexander
    orcid: https://orcid.org/0000-0002-2590-1310
  - family-names: Gebhardt
    given-names: William
  - family-names: Mali
    given-names: Ankur
title: "ngc-learn"
version: 1.0.0
identifiers:
  - type: doi
    value: 10.5281/zenodo.6605728
date-released: 2022-05-10

GitHub Events

Total
  • Create event: 8
  • Release event: 1
  • Issues event: 3
  • Watch event: 38
  • Delete event: 4
  • Issue comment event: 18
  • Push event: 219
  • Pull request review comment event: 12
  • Pull request review event: 39
  • Pull request event: 87
  • Fork event: 10
Last Year
  • Create event: 8
  • Release event: 1
  • Issues event: 3
  • Watch event: 38
  • Delete event: 4
  • Issue comment event: 18
  • Push event: 219
  • Pull request review comment event: 12
  • Pull request review event: 39
  • Pull request event: 87
  • Fork event: 10

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 1
  • Total pull requests: 28
  • Average time to close issues: 2 months
  • Average time to close pull requests: 7 days
  • Total issue authors: 1
  • Total pull request authors: 4
  • Average comments per issue: 2.0
  • Average comments per pull request: 0.11
  • Merged pull requests: 26
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 28
  • Average time to close issues: 2 months
  • Average time to close pull requests: 7 days
  • Issue authors: 1
  • Pull request authors: 4
  • Average comments per issue: 2.0
  • Average comments per pull request: 0.11
  • Merged pull requests: 26
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • ago109 (5)
  • CamilleParma (1)
  • Faezehabibi (1)
  • BekLG (1)
Pull Request Authors
  • ago109 (43)
  • Faezehabibi (29)
  • willgebhardt (8)
  • rxng8 (6)
  • AnkurMali (2)
  • sonnygeorge (1)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 145 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 17
  • Total maintainers: 1
pypi.org: ngclearn

Simulation software for building and analyzing arbitrary predictive coding, spiking network, and biomimetic neural systems.

  • Versions: 17
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 145 Last month
Rankings
Dependent packages count: 9.6%
Average: 36.6%
Dependent repos count: 63.5%
Maintainers (1)
Last synced: 7 months ago

Dependencies

docs/requirements.txt pypi
  • matplotlib >=3.4.3
  • myst-parser ==0.17.2
  • numpy ==1.20.0
  • scikit-learn ==0.24.2
  • scipy ==1.7.0
  • sphinx ==4.5.0
  • sphinx_rtd_theme ==0.5.2
  • tensorflow-gpu >=2.0.0
requirements.txt pypi
  • matplotlib >=3.4.3
  • networkx >=2.6.3
  • numpy ==1.20.0
  • pyvis >=0.2.0
  • scikit-learn ==0.24.2
  • scipy ==1.7.0
  • tensorflow-gpu >=2.0.0
ngclearn/generator/experimental/infimnist/setup.py pypi
setup.py pypi