v1.0.2-beta release: full simulation backend upgrade (migration to JAX)
Highlights
The release contains several improvements/upgrades, particularly a complete rewrite and reformulation of the backend (i.e., the nodes-and-cables system), notably constructing a core dependency library called ngc-sim-lib (ngcsimlib), which focuses on handling the generic/abstract simulation machinery for complex systems, while ngc-learn focuses on the neuroscience components and neurocognitive mechanisms.
The following updates have been made (this list is non-exhaustive):
- Complete rewrite and reformulation of nodes-and-cables system; now a controller-component-command general structure provides the core machinery for conducting simulation of arbitrary time-evolving complex systems. Additional elements were written to carry over prior ngc-learn functionality (prior tensorflow2 version migrated to ngc-learn-legacy). Backend offers more general, flexible construction of systems, particularly making writing custom/novel elements easier. A JSON configuration scheme has been added to provide modularity and ease of importing of relevant tools/portions of ngc-learn for any given local project.
- RateCell and Gaussian/Laplacian error cells (these are now labeled as "graded cells") have been written to carry over previous ngc-learn-legacy functionality while LIFCell, sLIFCell, and QuadLIF cells have been written to carry over previous spiking cell functionality. An izhikevich cell stub/base has been written and will be developed for subsequent beta versions. Other nodes/operators were written to carry over variable traces and input encodings (such as those for sampling Poisson spike trains).
- UPDATE over beta0 and beta1 -- latencyCell integrated/validated in "input_encoders"; clamp_min and clamp_max routines have been written/integrated in "model_utils"
- Utils was rewritten to be compliant with new JAX backend/framing -- density and visualization tools have been moved as subset of utils; density currently has a JAX stub/base for re-integration of the GMM sampling wrapper. A new optim (optimization) subset has been added with simple plug-in-play of optimized sgd and adam adaptive learning rates. Patching tools, other model, and I/O utilities (as well as primary mathematical routines) have been re-integrated into utils to be compliant with new JAX formulation.
- STDP is now a first-class citizen of the built-in synaptic components offered by ngc-learn; in addition to re-integrating the two-factor Hebbian update (as simple hebbian synapse component), two variations of spike-timing-dependent plasticity have been integrated as two core component synapses.
- All components have had their core dynamics sub-routines optimized to leverage the just-in-time compiler.
- Documentation has been rewritten to be compliant and account for the revised backend and JAX formulation of ngc-learn; more tutorials focused on neurocognitve modeling will be rolled out with subsequent beta versions (to recover old tutorials from prior version).
- The model museum has been extracted and will now exist as a separate repository for ease of maintenance and to promote further community contributions of models that are simulated with ngc-learn (documentation forthcoming to account for this significant change)