ngc-learn

repository·main·Indexed 41 days ago

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

A Python library built on JAX for building, simulating, and analyzing biophysical systems, spiking neuronal networks (SNNs), and NeuroAI agents. It provides a nodes-and-cables system for computational neuroscience research, featuring a wide array of neuronal models—including Leaky Integrate-and-Fire (LIF), Izhikevich, and Hodgkin-Huxley cells—as well as input encoders for Poisson, Bernoulli, and latency-encoded spike trains.

Tokens
56.7K
Snippets
115
Records
221
Agent score
52%

What's inside ngc-learn

  1. Overview of ngc-learn

    main

    What is ngc-learn?

    ngc-learn is a Python simulation library designed for building, simulating, and analyzing biomimetic computational models and predictive processing/coding models. It is built on top of JAX and is specifically designed to implement the Neural Generative Coding (NGC) computational framework.

    Key Capabilities

    • Biomimetic Modeling: Instantiates neuronal dynamics and synaptic plasticity using modular components.
    • Differential Equations: Implements a general schema for simulating systems characterized by differential equations, including biophysical spiking neuronal cells.
    • Predictive Processing: Provides a framework for research into predictive coding, where systems hypothesize environmental states and update internal models based on prediction errors.
    • Modular Design: Allows for the flexible creation and analysis of neural systems and circuits.

    Target Audience

    Researchers and engineers in machine learning, computational neuroscience, and cognitive science looking to study biologically-plausible credit assignment and neuromimetic agents.

  2. Overview of NGC-Learn

    main

    NGC-Learn is a general-purpose library designed for modeling complex dynamical systems, specifically targeting computational neuroscience, neuroscience-motivated artificial intelligence (NeuroAI), and brain-inspired computing.

    It provides a flexible framework that allows users to develop custom dynamics and evolutionary processes, while offering standard modeling nodes for simulating common biophysical systems. To build simulation objects effectively, users should understand the library's core abstraction: the nodes-and-cables system (the backend engine).

  3. Overview of the ngclearn.utils package

    main
    The ngclearn.utils package provides a collection of utility modules and subpackages designed to support machine learning workflows, specifically focusing on data handling, mathematical operations, and model utilities. It includes specialized tools for JAX-based processes, data loading, distribution generation, and various mathematical utilities (matrix, metric, and model-related).
  4. Overview of the ngclearn.components.synapses package

    main

    The ngclearn.components.synapses package provides various synapse implementations for neural network modeling. It is organized into specialized subpackages based on learning rules and structural properties, and includes several modules for different synapse mathematical models (e.g., dense, sparse, exponential, and STDP-based synapses).

    Available Subpackages

    • competitive: Synapses implementing competitive learning mechanisms.
    • convolution: Synapses used in convolutional architectures.
    • hebbian: Synapses implementing Hebbian learning rules.
    • modulated: Synapses subject to neuromodulation.
    • patched: Synapses for patched or localized connectivity.
  5. Overview of ngc-learn capabilities

    main

    What is ngc-learn?

    ngc-learn is a Python library designed for the construction, simulation, and analysis of various computational models, including:

    • Biomimetic and NeuroAI models: Computational models inspired by biological neural processes.
    • Predictive Processing/Coding models: Arbitrary models implementing predictive coding frameworks.
    • Spiking Neural Networks (SNNs): Networks that communicate via discrete spikes.
    • General Dynamical Systems: Broad mathematical models of evolving systems.

    The toolkit is built on top of JAX, leveraging its high-performance numerical computing capabilities.

  6. Overview of convolution synapses in ngclearn

    main
    The ngclearn.components.synapses.convolution package provides various implementations of convolutional and deconvolutional synapses. These components are used to model synaptic connections that apply convolutional filters between neural populations. The package is organized into specialized submodules based on the learning rule and synapse type applied.
  7. Explore the ngclearn.utils.viz visualization package

    main
    The ngclearn.utils.viz package provides a suite of visualization utilities for analyzing neural data. It is organized into specialized submodules for different types of neuroscientific data and analysis tasks. Use these submodules to generate plots for classification analysis, compartment structures, dimensionality reduction, rasters, spike trains, and synaptic connections.
  8. Use the ngclearn.utils.optim package for optimization algorithms

    main
    The ngclearn.utils.optim package provides various optimization submodules for machine learning tasks. It includes implementations for common optimizers such as Adam, Nesterov Accelerated Gradient (NAG), and Stochastic Gradient Descent (SGD), along with general optimization utilities.
  9. Use density estimation mixture models in ngclearn.utils.density

    main

    The ngclearn.utils.density package provides various mixture model implementations for density estimation. These submodules allow you to model complex probability distributions by combining multiple simpler component distributions.

    Available mixture model types include:

    • Bernoulli Mixture: For modeling discrete binary data.
    • Exponential Mixture: For modeling data following exponential distributions.
    • Gaussian Mixture: For modeling continuous data using multiple Gaussian (Normal) components.
    • General Mixture: A base or generic mixture implementation.
  10. Explore model exhibits in the ngc-learn model museum

    main

    The ngc-learn project provides a 'model museum' consisting of 'exhibits'. An exhibit is a model-specific walkthrough and analysis based on publicly available ngc-learn simulation code. These exhibits allow you to understand how specific neuroscience and NeuroAI models are implemented and analyzed using the library.

    Available exhibits are categorized into:

    Neuroscience Models:

    • sparse_coding
    • pc_rao_ballard1999
    • eirnn_song_etal2016
    • snn_dc
    • event_stdp_patches
    • rl_snn

    NeuroAI / Neuro-mimetic Models:

    • pcn_discrim
    • snn_bfa
    • harmonium
    • sindy

    Note that the full collection of exhibits is maintained in the separate ngc-museum repository.