Skip to content

Commit

Permalink
update readme with branch info and status
Browse files Browse the repository at this point in the history
  • Loading branch information
rcoreilly committed Dec 23, 2024
1 parent 807532e commit cda6afd
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,30 @@
[![CI](https://github.com/emer/emergent/actions/workflows/ci.yml/badge.svg)](https://github.com/emer/emergent/actions/workflows/ci.yml)
[![Codecov](https://codecov.io/gh/emer/emergent/branch/main/graph/badge.svg?token=Hw5cInAxY3)](https://codecov.io/gh/emer/emergent)

The *emergent* neural network simulation framework provides a toolkit in the Go programming language (golang) for developing neural network models across multiple levels of complexity, from biologically-detailed spiking networks in the [axon](https://github.com/emer/axon) package, to PyTorch abstract deep networks in the [eTorch](https://github.com/emer/etorch) package. It builds on the [Cogent Core](https://cogentcore.org/core) GUI framework to provide dynamic graphical interfaces for visualizing and manipulating networks and data, making the models uniquely accessible for teaching (e.g., see the [Computational Cognitive Neuroscience](https://github.com/CompCogNeuro/sims) simulations) and supporting the development of complex dynamical models for research.
**IMPORTANT** branch information:

* `main` is the latest version based on [Cogent Lab](https://github.com/cogentcore/lab), used by [axon](https://github.com/emer/axon), and is still undergoing significant development.

* `leabra` is an awkward in-between version that works with the current [leabra](https://github.com/emer/leabra) and [Computational Cognitive Neuroscience](https://github.com/CompCogNeuro/sims) simulations, which had to be updated for teaching in Fall 2024, so the simulations could run on the web browser.

* `v1` is the version that works with the old v1 versions of leabra, using the old [goki](https://github.com/goki/gi) GUI framework.

The *emergent* neural network simulation framework provides a toolkit in the Go programming language (golang) for developing neural network models across multiple levels of complexity, from biologically-detailed spiking networks in the [axon](https://github.com/emer/axon) package, to PyTorch abstract deep networks in the [eTorch](https://github.com/emer/etorch) package. It builds on the [Cogent Core](https://cogentcore.org/core) GUI framework and [Cogent Lab](https://github.com/cogentcore/lab) to provide dynamic graphical interfaces for visualizing and manipulating networks and data, making the models uniquely accessible for teaching (e.g., see the [Computational Cognitive Neuroscience](https://github.com/CompCogNeuro/sims) simulations) and supporting the development of complex dynamical models for research.

See [cogent core install](https://www.cogentcore.org/core/setup/install) instructions for general installation instructions. The [emergent wiki install](https://github.com/emer/emergent/wiki/Install) page has a tutorial for how to create your own simulation based on the leabra ra25 example.

The [Wiki Rationale](https://github.com/emer/emergent/wiki/Rationale) and [History](https://github.com/emer/emergent/wiki/History) pages for a more detailed rationale for this version of emergent, and a history of emergent (and its predecessors). The Wiki tends to be a bit out of date, but can have some useful information. In general it is best to take the plunge and "use the source" directly :)

The single clearest motivation for using Go vs. the ubiquitous Python, is that Python is too slow to implement the full computational model: it can only serve as a wrapper around backend code which is often written in C or C++. By contrast, *Go can implement the entire model* in one coherent language. This, along with the advantages of the strongly typed, rapidly compiled Go language vs. duck typed Python for developing large scale frameworks, and the many other benefits of the Go language environment for reproducible, reliable builds across platforms, results in a satisfying and productive programming experience.

Furthermore, the _Go shader language_ [gosl](https://github.com/cogentcore/core/tree/main/vgpu/gosl) in Cogent Core enables Go to run efficiently on the GPU as well, enabling the same code base to be used for both CPU and GPU execution. This enables even very complex, biologically-detailed models as in the [axon](https://github.com/emer/axon) framework to take full advantage of GPU acceleration, resulting in 10x or more speedup factors over CPU.
Furthermore, the _Go shader language_ [gosl](https://github.com/cogentcore/lab/tree/main/gosl) in Cogent Lab enables Go to run efficiently on the GPU as well, enabling the same code base to be used for both CPU and GPU execution. This enables even very complex, biologically-detailed models as in the [axon](https://github.com/emer/axon) framework to take full advantage of GPU acceleration, resulting in 10x or more speedup factors over CPU.

See the [ra25 example](https://github.com/emer/axon/tree/main/ra25/README.md) in the [axon](https://github.com/emer/axon) package for a complete working example (intended to be a good starting point for creating your own models), and any of the 26 models in the [Comp Cog Neuro sims](https://github.com/CompCogNeuro/sims) repository which also provide good starting points, using the [leabra](https://github.com/emer/leabra) framework.

# Current Status / News

* December 2024: Updated to [Cogent Lab](https://github.com/cogentcore/lab) and tracking ongoing development there. In general much of the prior functionality in emergent has / will migrate to Lab.

* June 2024: Major changes ongoing in coordination with the [Cogent Core](https://cogentcore.org/core) framework development over the prior year, replacing the previous [GoKi](https://github.com/goki) GUI framework. Many packages have migrated to Cogent Core, which is a much cleaner major rewrite, which should be stable and released in beta status soon. [axon](https://github.com/emer/axon) is staying updated but everything else should use the [v1](https://github.com/emer/emergent/tree/v1) branch. [Leabra](https://github.com/emer/leabra) and [Comp Cog Neuro sims](https://github.com/CompCogNeuro/sims) will be updated after the dust settles, hopefully in time for Fall 2024 classes.

* Nov 2020: Full Python conversions of CCN sims complete, and [eTorch](https://github.com/emer/etorch) for viewing and interacting with PyTorch models.
Expand Down

0 comments on commit cda6afd

Please sign in to comment.