Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
f8395e8
Working v3
willgebhardt Jul 24, 2025
ea724e9
Undid fixed compartemts
willgebhardt Jul 24, 2025
d2d4331
Fixed an execution bug
willgebhardt Aug 8, 2025
2fc2300
ported over quad-lif to v3 - needs testing
Sep 22, 2025
92b6940
ported over IF/quadLIF cells, minor revision to LIF cell
Sep 26, 2025
aa3b52e
Start util cleanup
willgebhardt Sep 29, 2025
0330504
refactored/ported RAFCell to v3
Sep 30, 2025
50f0db4
ported over/refactored WTASCell for v3
Oct 1, 2025
c790870
wrote successful unit-test of WTASCell
Oct 6, 2025
3df6341
put back in init-structure/pointers
Oct 8, 2025
a38eb1b
fixed minor error in LIFCell, got unit-test for LIFCell to run
Oct 8, 2025
5ab8564
quad-lif test sketched
Nov 3, 2025
195e3db
sketch of ifcell test
Nov 3, 2025
d9aa8f8
fixed minor bugs and tests locally pass for if, quad-lif, and lif-cel…
Nov 3, 2025
ba3fb6d
refactored raf-cell and test passed
Nov 3, 2025
4013bc0
refactored adex/test passed; minor cleanup in lif, raf, and wtas cells
Nov 4, 2025
3c0ed36
refactored fn-cell and test passed
Nov 4, 2025
37ecdcd
cleaned up lif, raf, wtas, fn, and quad-lif cells repr method
Nov 4, 2025
947d2cf
refactored and tests passed for izh and h-h cells
Nov 5, 2025
058bf90
JaxProcess update
willgebhardt Nov 6, 2025
33599fd
Merge branch 'v3' of github.com:NACLab/ngc-learn into v3
willgebhardt Nov 6, 2025
b86ae3d
cleaned up dunder repr method, moved to JaxComponent parent; fixed __…
Nov 6, 2025
55756d0
refactored alpha and exp-synapses, tests passed; minor edit to __init…
Nov 6, 2025
0d1a35f
refactored short-term syn, tests passed - including stp-dense-syn and…
Nov 6, 2025
d26b417
refactored bcm-syn and test passed
Nov 6, 2025
99b3c43
refactored exp-stdp-syn and passed tests for exp-stdp-syn and trace-s…
Nov 6, 2025
ebdea3e
refactored event-stdp-syn and test passed
Nov 7, 2025
94477b8
refactored mstdpet-syn and test passed
Nov 7, 2025
f72db76
refactored stdp-conv-syn/conv-syn and test passed
Nov 7, 2025
6cb319a
refactored and passed test for deconv/stdp-deconv-syn and other minor…
Nov 7, 2025
10ef0e0
Refactoring neuronal and synaptic components (#123) - merge from fork…
rxng8 Nov 10, 2025
1ac6f2c
commented out deprecator in hebb-syn and exp-kernel
Nov 10, 2025
5a58b87
update hebbian synapse
rxng8 Nov 10, 2025
cac5207
update hebbian synapse
rxng8 Nov 10, 2025
0d7c24b
working reinforce synapse
rxng8 Nov 10, 2025
68f663b
minor edits to exp-kernel/wtas-cell
Nov 10, 2025
55b0219
update requirements
rxng8 Nov 11, 2025
56a059f
refactored conv/deconv-hebb-syn and tests passed
Nov 11, 2025
01454f0
update hebbian synapse reset bug
rxng8 Nov 11, 2025
a685fcd
update reset methods
rxng8 Nov 11, 2025
de10028
update patched synapse reset
rxng8 Nov 11, 2025
80f2417
add `not self.inputs.targeted and ` to required components. Fixing ge…
rxng8 Nov 11, 2025
e163c37
minor edit to lif/modulated-syn init file
Nov 12, 2025
03371ec
fixed some minor bugs in rate-coded cells/hebb-syn
Nov 12, 2025
c01a619
update code
rxng8 Nov 12, 2025
36c56a6
minor patches to components, including hebb-syn/conv/deconv and rewar…
Nov 12, 2025
eeba012
minor patches to components, including hebb-syn/conv/deconv and rewar…
Nov 12, 2025
b98fd1a
update testing for graded neurons and input encoders
rxng8 Nov 14, 2025
edc1803
update phasor cell
rxng8 Nov 14, 2025
b96139f
update test bernoulli cell and poisson cell
rxng8 Nov 14, 2025
c80f2b5
update components and their related test cases
rxng8 Nov 14, 2025
ac2ec13
fixed monitor bugs from v2, tweaked unit-tests for input-encoders/lat…
Nov 14, 2025
0e3f674
update test case for test_sLIFCell.py
rxng8 Nov 14, 2025
5dcdfe4
Merge branch 'v3' of github.com:NACLab/ngc-learn into v3
rxng8 Nov 14, 2025
e0c75fa
some cleanup
Nov 14, 2025
bdb0ce2
made revisions to components/clean-up; added back in deprecators
Nov 15, 2025
d1c5e77
removed lava sub-module, and removed monitor/base-monitor legacy comp…
Nov 15, 2025
a03480a
minor cleanup of inits
Nov 15, 2025
5ec052f
refactored regression module to be compliant with v3
Nov 15, 2025
ff2a25a
adjusted sphinx-docs w.r.t. new v3 refactoring
Nov 15, 2025
843d937
minor revision to double-exp syn pointing, mods to modeling docs
Nov 16, 2025
c51b83c
updated adex tutorial doc to v3
Nov 17, 2025
043b0a8
revised adex and error-cell neurocog tutorials
Nov 17, 2025
588e3f5
fixed minor issues in input-encoders, further revisions to docs for v3
Nov 17, 2025
7c56b47
revised dyn/chem-syn neurocog doc, cleaned up dynamic syn
Nov 17, 2025
9373d8d
revised fn and hh-cell neurocog docs, added some refs to distribution…
Nov 17, 2025
08c788a
revised integration and izh-cell neurocog docs
Nov 17, 2025
13cfbd4
revised izh-cell, cleaned-up fn-cell, and revised lif neurocog docs
Nov 18, 2025
f52c86a
revised metrics/plotting neurocog docs
Nov 18, 2025
276cb89
revised mod/reward-stdp neurocog doc
Nov 18, 2025
ab6c716
revised stp-syn neurocog doc and updated stp-syn to use proper initia…
Nov 19, 2025
f332546
revised elements of utils to comply with docs
Nov 19, 2025
80685ef
revised stdp neurocog doc to v3
Nov 20, 2025
9517689
revised traces neurocog tutorial to v3
Nov 20, 2025
51c2650
cleaned up utils.optim and wrote compliant NAG optim
Nov 20, 2025
05e0a7d
cleaned up utils.optim and wrote compliant NAG optim
Nov 20, 2025
c1a21ce
cleanup of components, added leaky-noise-cell, minor edits
Nov 20, 2025
78e58da
revised leaky-noise-cell, wrote its unit test, test-passed
Nov 20, 2025
88ce190
some revisions/updates to toc/pointer/general tutorial docs
Nov 20, 2025
e3b8ef6
minor revisions to pyproject/req files
Nov 21, 2025
91d9ba5
update reinforce synapse
rxng8 Nov 21, 2025
b0db87f
update test cases
rxng8 Nov 21, 2025
85d1282
implemented in-house gmm, in-built to ngclearn; tested on gaussian mo…
Nov 22, 2025
ebebf74
Merge branch 'v3' of github.com:NACLab/ngc-learn into v3
Nov 22, 2025
157102e
wrote gmm density estimator tutorial
Nov 22, 2025
4606a1c
patched some tests/syn/neuron components, added sketch of bmm density
Nov 22, 2025
54e0873
fixed test_laplacianErrorCell and laplace-cell bug
Nov 22, 2025
a84a5d8
fixed test_laplacianErrorCell and laplace-cell bug
Nov 22, 2025
e21bca4
made patches to bmm
Nov 22, 2025
131591e
updated density tutorial/neurocog doc
Nov 22, 2025
9e327e1
minor edit to gmm/bmm docs
Nov 22, 2025
fa9822f
minor edit to gmm/bmm docs
Nov 22, 2025
716d62e
cleaned up density structure, use parent mixture class to organize mo…
Nov 23, 2025
5041440
cleaned up density structure, use parent mixture class to organize mo…
Nov 23, 2025
02e906e
added basic exp-mixture to utils.density
Nov 24, 2025
519896e
minor edits to emm
Nov 24, 2025
6e6561e
cleaned up mixtures and finished debugging EMM/works on example
Nov 24, 2025
b79c450
removed old weight_distribution.py, other cleanup/revisions throughout
Nov 24, 2025
a8ff7d7
minor edit to data-loader
Nov 24, 2025
fd216d8
revised tests to no longer use weight_distribution/revisions throughout
Nov 25, 2025
984510d
minor edit to emm doc
Nov 25, 2025
c8bf7b5
added bic calculation to metric_utils
Nov 25, 2025
af76edb
fix ratecell ug of passing unrelated kwargs to parent class
rxng8 Nov 29, 2025
c835a6a
added calc_update() co-routine to hebbian-syn component
Nov 29, 2025
7cc9a53
fix weight init
rxng8 Nov 30, 2025
12c10d5
integrated rbm/harmonium model-exhibit
Dec 3, 2025
7026c8c
Update __init__.py
willgebhardt Dec 3, 2025
da7595e
Merge branch 'v3' of github.com:NACLab/ngc-learn into v3
willgebhardt Dec 3, 2025
81fbf4d
placed pointer to rao-ballard1999 exhibit; updates to docs
Dec 3, 2025
09d0375
updates to docs/revisions
Dec 3, 2025
091ee74
removed flag from bernoulli/latency-cells for now; minor edit to doc
Dec 3, 2025
633a63d
updates to theory doc
Dec 3, 2025
bb7f453
updated history log
Dec 3, 2025
953068c
minor clean-up of ngclearn.utils.viz.dim_reduce
Dec 3, 2025
5e43ad2
Update jaxComponent.py
willgebhardt Dec 4, 2025
eb534c4
update hebbian synapse saving
rxng8 Dec 4, 2025
6281f1a
update saving and loading utils, making hebbian synapse use these uti…
rxng8 Dec 4, 2025
74def15
minor revisions/polish
Dec 5, 2025
222932f
modded docs to include v3 foundations
Dec 5, 2025
2904040
updates to init for logging
willgebhardt Dec 5, 2025
ee34ef0
Updates to lessons
willgebhardt Dec 5, 2025
5e7ba54
final cleanup/polish/update to docs for v3 nudge
Dec 5, 2025
68f44a3
updates to museum doc for v3
Dec 5, 2025
9035e4a
nudged citation file
Dec 6, 2025
061c389
minor nudge to docs/files to point to v3
Dec 6, 2025
669da13
Merge branch 'main' into v3
ago109 Dec 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@ authors:
orcid: https://orcid.org/0000-0002-2590-1310
- family-names: Gebhardt
given-names: William
orcid: https://orcid.org/0009-0008-7456-6556
- family-names: Mali
given-names: Ankur
orcid: https://orcid.org/0000-0001-5813-3584
title: "ngc-learn"
version: 1.0.0
version: 3.0.0
identifiers:
- type: doi
value: 10.5281/zenodo.6605728
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ 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 <a href="https://github.com/NACLab/ngc-sim-lib">here</a>)
4) ngcsimlib (>=3.0.0), (visit official page <a href="https://github.com/NACLab/ngc-sim-lib">here</a>)
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`
Expand All @@ -42,7 +42,7 @@ ngc-learn requires:
-->

---
ngc-learn 2.0.3 and later require Python 3.10 or newer as well as ngcsimlib >=1.0.1.
ngc-learn 3.0.0 and later require Python 3.10 or newer as well as ngcsimlib >=3.0.0.
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).
Expand Down Expand Up @@ -75,7 +75,7 @@ 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'
'3.0.0'
```

<i>Note:</i> For access to the previous Tensorflow-2 version of ngc-learn (of
Expand Down Expand Up @@ -122,7 +122,7 @@ $ python install -e .
</pre>

**Version:**<br>
2.0.3 <!--1.2.3-Beta--> <!-- -Alpha -->
3.0.0 <!--1.2.3-Beta--> <!-- -Alpha -->

Author:
Alexander G. Ororbia II<br>
Expand Down
Binary file added docs/images/museum/harmonium/rbm_arch.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/museum/harmonium/rbm_recon.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/museum/harmonium/samples_0.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/museum/harmonium/samples_1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/museum/harmonium/samples_2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/tutorials/neurocog/gmm_fit.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/tutorials/neurocog/gmm_samples.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 4 additions & 5 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@
Welcome to ngc-learn's documentation!
=====================================

**ngc-learn** is a Python library for building, simulating, and analyzing
biomimetic computational models, arbitrary predictive processing/coding models,
and spiking neural networks. This toolkit is built on top of
`JAX <https://github.com/google/jax>`_ and is distributed under the 3-Clause BSD license.
**ngc-learn** is a Python library for building, simulating, and analyzing biomimetic and NeuroAI computational models, arbitrary predictive processing/coding models, spiking neural networks, and general dynamical systems. This toolkit is built on top of `JAX <https://github.com/google/jax>`_ and is distributed under the 3-Clause BSD license.

.. toctree::
:maxdepth: 1
Expand All @@ -23,6 +20,7 @@ and spiking neural networks. This toolkit is built on top of

tutorials/intro
tutorials/theory
tutorials/configuration/index
tutorials/index
tutorials/neurocog/index

Expand Down Expand Up @@ -52,9 +50,10 @@ and spiking neural networks. This toolkit is built on top of

.. toctree::
:maxdepth: 1
:caption: Papers that use NGC-Learn
:caption: NGC-Learn Papers & Media

ngclearn_papers
ngclearn_talks

Indices and tables
==================
Expand Down
57 changes: 16 additions & 41 deletions docs/installation.md
Original file line number Diff line number Diff line change
@@ -1,65 +1,41 @@
# Installation

**ngc-learn** officially supports Linux on Python 3. It can be run with or
without a GPU.
**ngc-learn** officially supports Linux on Python 3. It can be run with or without a GPU.

<i>Setup:</i> <a href="https://github.com/NACLab/ngc-learn">ngc-learn</a>,
in its entirety (including its supporting utilities),
requires that you ensure that you have installed the following base dependencies in
your system. Note that this library was developed and tested on Ubuntu 22.04 (and earlier versions on 18.04/20.04).
Specifically, ngc-learn requires:
<i>Setup:</i> <a href="https://github.com/NACLab/ngc-learn">NGC-Learn</a>, in its entirety (including its supporting utility sub-packages), requires that you ensure that you have installed the following base dependencies in your system. Note that this library was developed and tested on Ubuntu 22.04 (with much earlier versions on Ubuntu 18.04/20.04).
Specifically, NGC-Learn requires:
* Python (>=3.10)
* ngcsimlib (>=1.0.1), (<a href="https://github.com/NACLab/ngc-sim-lib">official page</a>)
* ngcsimlib (>=3.0.0), (<a href="https://github.com/NACLab/ngc-sim-lib">official page</a>)
* NumPy (>=1.22.0)
* SciPy (>=1.7.0)
* JAX (>= 0.4.28; and jaxlib>=0.4.28) <!--(tested for cuda 11.8)-->
* Matplotlib (>=3.8.0), (for `ngclearn.utils.viz`)
* Scikit-learn (>=1.6.1), (for `ngclearn.utils.patch_utils` and `ngclearn.utils.density`)

Note that the above requirements are taken care of if one installs ngc-learn
through either `pip`. One can either install the CPU version of ngc-learn (if no JAX is
pre-installed or only the CPU version of JAX is installed currently) via
Note that the above requirements are taken care of if one installs NGC-Learn through either `pip`. One can either install the CPU version of NGC-Learn (if no JAX is pre-installed or only the CPU version of JAX is currently installed) via:
```console
$ pip install ngclearn
```

or install the GPU version of ngc-learn by first installing the
<a href="https://jax.readthedocs.io/en/latest/installation.html">CUDA 12
version of JAX</a> before running the above pip command.
or install the GPU version of NGC-Learn by first installing the <a href="https://jax.readthedocs.io/en/latest/installation.html">CUDA 12 version of JAX</a> before running the above pip command.

Alternatively, one may locally, step-by-step (see below), install and setup
ngc-learn from source after pulling from the repo.
Alternatively, one may locally, step-by-step (see below), install and setup NGC-Learn from source after pulling from the repo.

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 (see
below for installing the GPU version).
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 (see below for installing the GPU version).

## Install from Source

0. Install ngc-sim-lib first (as an editable install); visit the repo
https://github.com/NACLab/ngc-sim-lib for details.
1. Install NGC-Sim-Lib first (as an editable install); visit the repo https://github.com/NACLab/ngc-sim-lib for details.

1. Clone the ngc-learn repository:
2. Clone the NGC-Learn repository:
```console
$ git clone https://github.com/NACLab/ngc-learn.git
$ cd ngc-learn
```

2. (<i>Optional</i>; only for GPU version) Install JAX for either CUDA 12 , depending
on your system setup. Follow the
<a href="https://jax.readthedocs.io/en/latest/installation.html">installation instructions</a>
on the official JAX page to properly install the CUDA 11 or 12 version.
3. (<i>Optional</i>; only for GPU version) Install JAX for either CUDA 12 , depending on your system setup. Follow the <a href="https://jax.readthedocs.io/en/latest/installation.html">installation instructions</a> on the official JAX page to properly install the CUDA 11 or 12 version.

<!--
3. (<i>Optional</i>) Install, a pre-package installation step (for only the
non-ngclearn dependencies), the base requirements (and a few extras for building
the docs) with:
```console
$ pip install -r requirements.txt
```
-->

3. Install the ngc-learn package via:
4. Install the NGC-Learn package via:
```console
$ pip install .
```
Expand All @@ -68,22 +44,21 @@ or, to install as an editable install for development, run:
$ pip install -e .
```

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:<br>
<!--<img src="images/test_ngclearn_install.png" width="512">-->
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:<br>

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

<!--
<i>Note</i>: If you do not have a JSON configuration file in place (see tutorials
for details) locally where you call the import to ngc-learn, a warning will pop
up containing within it "<i>UserWarning: Missing file to preload modules from.</i>";
this still means that ngc-learn installed successfully but you will need to
point to a JSON configuration when building projects with ngc-learn.
-->

50 changes: 49 additions & 1 deletion docs/modeling/neurons.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,22 @@ and `dmu` is the first derivative with respect to the mean parameter.
:noindex:
```

#### Bernoulli Error Cell

This cell is (currently) fixed to be a (factorized) multivariate Bernoulli cell.
Concretely, this cell implements compartments/mechanics to facilitate Bernoulli
log likelihood error calculations.

```{eval-rst}
.. autoclass:: ngclearn.components.BernoulliErrorCell
:noindex:

.. automethod:: advance_state
:noindex:
.. automethod:: reset
:noindex:
```

## Spiking Neurons

These neuronal cells exhibit dynamics that involve emission of discrete action
Expand Down Expand Up @@ -117,10 +133,42 @@ negative pressure on the membrane potential values at `t`).
:noindex:
```

### The IF (Integrate-and-Fire) Cell

This cell (the simple "integrator") models dynamics over the voltage `v`. Note that `thr` is used as the membrane potential threshold and no adaptive threshold mechanics are implemented for this cell model.
(This cell is primarily a faster, convenience formulation that omits the leak element of the LIF.)

```{eval-rst}
.. autoclass:: ngclearn.components.IFCell
:noindex:

.. automethod:: advance_state
:noindex:
.. automethod:: reset
:noindex:
```

### The Winner-Take-All (WTAS) Cell

This cell models dynamics over the voltage `v` as a simple instantaneous
softmax function of the electrical current input, where only a single
spike, which wins the competition across the group of neuronal units
within this component, emits a pulse/spike.

```{eval-rst}
.. autoclass:: ngclearn.components.WTASCell
:noindex:

.. automethod:: advance_state
:noindex:
.. automethod:: reset
:noindex:
```

### The LIF (Leaky Integrate-and-Fire) Cell

This cell (the "leaky integrator") models dynamics over the voltage `v`
and threshold shift `thrTheta` (a homeostatic variable). Note that `thr`
and threshold shift `thr_theta` (a homeostatic variable). Note that `thr`
is used as a baseline level for the membrane potential threshold while
`thrTheta` is treated as a form of short-term plasticity (full
threshold is: `thr + thrTheta(t)`).
Expand Down
28 changes: 16 additions & 12 deletions docs/modeling/synapses.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,7 @@
# Synapses

The synapse is a key building block for connecting/wiring together the various
component cells that one would use for characterizing a biomimetic neural system.
These particular objects are meant to perform, per simulated time step, a
specific type of transformation -- such as a linear transform or a
convolution -- utilizing their underlying synaptic parameters.
Most times, a synaptic cable will be represented by a set of matrices (or filters)
that are used to conduct a projection of an input signal (a value presented to a
pre-synaptic/input compartment) resulting in an output signal (a value that
appears within one of its post-synaptic compartments). Notably, a synapse component is
typically associated with a local plasticity rule, e.g., a Hebbian-type
update, that either is triggered online, i.e., at some or all simulation time
steps, or by integrating a differential equation, e.g., via eligibility traces.
The synapse is a key building block for connecting/wiring together the various component cells that one would use for characterizing a biomimetic neural system. These particular objects are meant to perform, per simulated time step, a specific type of transformation -- such as a linear transform or a convolution -- utilizing their underlying synaptic parameters. Most times, a synaptic cable will be represented by a set of matrices (or filters) that are used to conduct a projection of an input signal (a value presented to a pre-synaptic/input compartment) resulting in an output signal (a value that appears within one of its post-synaptic compartments). There are three general groupings of synaptic components in ngc-learn: 1) non-plastic static synapses (only perform fixed transformations of input signals); 2) non-plastic dynamic synapses (perform time-varying, input-dependent transformations on input signals); and 3) plastic synapses that carry out long-term evolution.
Notably, plastic synapse components are typically associated with a local plasticity rule, e.g., a Hebbian-type update, that either is triggered online, i.e., at some or all simulation time steps, or by integrating a differential equation, e.g., via eligibility traces.

## Non-Plastic Synapse Types

Expand Down Expand Up @@ -74,6 +64,20 @@ This (chemical) synapse performs a linear transform of its input signals. Note t
:noindex:
```

### Double-Exponential Synapse

This (chemical) synapse performs a linear transform of its input signals. Note that this synapse is "dynamic" in the sense that its efficacies are a function of their pre-synaptic inputs; there is no inherent form of long-term plasticity in this base implementation. Synaptic strength values can be viewed as being filtered/smoothened through a doubleexpoential / difference of two exponentials kernel.

```{eval-rst}
.. autoclass:: ngclearn.components.DoubleExpSynapse
:noindex:

.. automethod:: advance_state
:noindex:
.. automethod:: reset
:noindex:
```

### Alpha Synapse

This (chemical) synapse performs a linear transform of its input signals. Note that this synapse is "dynamic" in the sense that its efficacies are a function of their pre-synaptic inputs; there is no inherent form of long-term plasticity in this base implementation. Synaptic strength values can be viewed as being filtered/smoothened through a kernel that models more realistic rise and fall times of synaptic conductance..
Expand Down
13 changes: 13 additions & 0 deletions docs/museum/event_stdp_patches.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Event-based Spike-Timing-Dependent Plasticity (Tavanaei et al.; 2018)

In this exhibit, we create, simulate, and visualize the internally acquired receptive fields of the spiking neural
network (SNN) trained via event-based spike-timing-dependent plasticity (EV-STDP) over image patches. This
reproduces the SNN model originally proposed in (Tavanaei et al., 2018) [1].

The model code for this exhibit can be found
[here](https://github.com/NACLab/ngc-museum/tree/main/exhibits/evstdp_patches).

<!-- references -->
## References
<b>[1]</b> Tavanaei, Amirhossein, Timothée Masquelier, and Anthony Maida. "Representation learning using event-based
STDP." Neural Networks 105 (2018): 294-303.
Loading
Loading