The Nodes-and-Cables System

In ngc-learn, a simulation of any biomimetic model is conducted, under the hood, through what is known as the “nodes-and-cables system” (which is what together ngc-learn and ngcsimlib make up). In effect, this system can generically be decomposed into a controller, a set of components that are embedded to it, and a set of a commands that are pinned to drive and coordinate the computations underlying the controller’s executed simulation. A controller, in short, maintains and does the bookkeeping for a set of related components that compose the underlying simulation graph (or operator graph) that represents a biomimetic system in ngc-learn. The “component” itself is a critical building block, i.e., ranging from simple mathematical operations to groups of neuronal cells, and often represents the atomic biophysical building block we are interested in using to construct more complex dynamical systems. Ultimately, when you create and connect components together, you do so by placing them into a controller which will perform the calculations in a pre-specified order (further coordinated and executed with “commands”) – this is what ngc-learn and ngcsimlib use under the hood to integrate the differential equations or recurrence relations that typically describe a computational neuronal model in research. The final result: you can think of a biomimetic model as a system of components that will be simulated across time and all you need to do is tell the controller what components you want and how they interact with one another.

Biophysical Components

Concretely, in ngc-learn, you will deal with (or create) biophysical elements that subclass the component class in ngcsimlib. ngc-learn offers, at its base, a set of fundamental biophysical components from a variety of categories – these include:

  1. Neurons: the neuronal cell is a foundational component allowing you to build the dynamics of interest, such as those related to leaky integrators that emit discrete action potentials or recurrent rate-coded neural states that follow a gradient flow (such as that of a free energy functional).

  2. Synapses: the synaptic cable is a key component that allows operators, such as neuronal cells, to communicate signals to one another. Synaptic cables facilitate the message passing between the cells of your system and generally are differentiated the way they project/transform signals and how they evolve with time (i.e., they specify their form of plasticity).

  3. Input Encoders: the input encoder is particularly useful when the simulated biomimetic system needs to encode its sensory inputs in a particular manner and this processing should be considered to a part of the model itself. A good example is a spiking neural network, where one typically wants to encode its sensory input, a normally static pixel image, as a series of action potentials; this can be done in ngc-learn using, for instance, a PoissonCell component, which produces a Poisson spike train under a certain desired maximum frequency.

  4. Other Operators: these include mathematical transforms that may or may not have biological analogues. Some commonly-used ones include variable traces and kernels.