Axon (spiking) version of the sims

Computational Cognitive Neuroscience Simulations

This repository contains the neural network simulation models for the CCN Textbook, managed on a GitHub Repository.

These models are implemented in the new Go (golang) version of emergent, with Python versions available as well. This github repository contains the full source code and you can build and run the models by cloning the repository and building / running the individual projects as described in the Build From Source section below for specific step-by-step instructions.

The simplest, recommended way to run the simulations is by downloading a zip (or tar.gz for linux) file of all of the built models for your platform. These are fully self-contained executable files and should "just work" on each platform.

Alternatively, you can use the Python version -- see instructions at that link for how to install (only recommended for mac or linux platforms).

Usage

Each simulation has a README button, which directs your browser to open the corresponding README.md file on github. This contains full step-by-step instructions for running the model, and questions to answer for classroom usage of the models. See your syllabus etc for more info.

Use standard Ctrl+ and Ctrl- key sequences to zoom the display to desired scale, and the GoGi preferences menu has an option to save the zoom (and various other options).

The main actions for running are in the Toolbar at the top, while the parameters of most relevance to the model are in the Control panel on the left. Different output displays are selectable in the Tabbed views on the right of the window.

The Go Emergent Wiki contains various help pages for using things like the NetView that displays the network.

You can always access more detailed parameters by clicking on the button to the right off Net in the control panel (also by clicking on the layer names in the NetView), and custom params for this model are set in the Params field.

Mac notes

If double-clicking on the program doesn't work (error message about unsigned application -- google "mac unsigned application" for more information), you may have to do a "right mouse click" (e.g., Ctrl + click) to open the executables in the .zip version -- it may be easier to just open the Terminal app, cd to the directory, and run the files from the command line directly.

Status

  • 12/30/2020: Version 1.2.3 release: misc bug fixes and sg update to new deep Leabra version.

  • 11/23/2020: Version 1.2.2 release: full set of Python versions and the pvlv model.

  • 9/18/2020: Version 1.1.1 release: a number of bug fixes, and first half of the python version models.

  • 4/21/2020: Version 1.0.4 release: fixes face_categ cluster plot window display on Windows, adds few optional things to ch2/3 sims too.

  • 3/30/2020: Version 1.0.3 release -- no major changes, just updated to most recent GoGi GUI.

List of Sims and Exercise Questions

Here's a full list of all the simulations and the textbook exercise questions associated with them:

Chapter 2: Neuron

  • neuron: Integration, spiking and rate code activation. (Questions 2.1 -- 2.7)

  • detector: The neuron as a detector -- demonstrates the critical function of synaptic weights in determining what a neuron detects. (Questions 2.8 -- 2.10)

Chapter 3: Networks

  • face_categ: Face categorization, including bottom-up and top-down processing (used for multiple explorations in Networks chapter) (Questions 3.1 -- 3.3)

  • cats_dogs: Constraint satisfaction in the Cats and Dogs model. (Question 3.4)

  • necker_cube: Constraint satisfaction and the role of noise and accommodation in the Necker Cube model. (Question 3.5)

  • inhib: Inhibitory interactions via inhibitory interneurons, and FFFB approximation. (Questions 3.6 -- 3.8)

Chapter 4: Learning

  • self_org: Self organizing learning using BCM-like dynamic of XCAL (Questions 4.1 -- 4.2).

  • pat_assoc: Basic two-layer network learning simple input/output mapping tasks (pattern associator) with Hebbian and Error-driven mechanisms (Questions 4.3 -- 4.6).

  • err_driven_hidden: Full error-driven learning with a hidden layer, can solve any input output mapping (Question 4.7).

  • family_trees: Learning in a deep (multi-hidden-layer) network, showing advantages of combination of self-organizing and error-driven learning (Questions 4.8 -- 4.9).

  • hebberr_combo: Hebbian learning in combination with error-driven facilitates generalization (Questions 4.10 -- 4.12).

Note: no sims for chapter 5

Chapter 6: Perception and Attention

  • v1rf: V1 receptive fields from Hebbian learning, with lateral topography. (Questions 6.1 -- 6.2)

  • objrec: Invariant object recognition over hierarchical transforms. (Questions 6.3 -- 6.5)

  • attn: Spatial attention interacting with object recognition pathway, in a small-scale model. (Questions 6.6 -- 6.11)

Chapter 7: Motor Control and Reinforcement Learning

  • bg: Action selection / gating and reinforcement learning in the basal ganglia. (Questions 7.1 -- 7.4)

  • rl_cond: Pavlovian Conditioning using Temporal Differences Reinforcement Learning. (Questions 7.5 -- 7.6)

  • pvlv: Pavlovian Conditioning with the PVLV model (Questions 7.7 -- 7.9)

  • cereb: Cerebellum role in motor learning, learning from errors. (Questions 7.10 -- 7.11) NOT YET AVAIL!

Chapter 8: Learning and Memory

  • abac: Paired associate AB-AC learning and catastrophic interference. (Questions 8.1 -- 8.3)

  • hip: Hippocampus model and overcoming interference. (Questions 8.4 -- 8.6)

  • priming: Weight and Activation-based priming. (Questions 8.7 -- 8.8)

Chapter 9: Language

  • dyslex: Normal and disordered reading and the distributed lexicon. (Questions 9.1 -- 9.6)

  • ss: Orthography to Phonology mapping and regularity, frequency effects. (Questions 9.7 -- 9.8)

  • sem: Semantic Representations from World Co-occurrences and Hebbian Learning. (Questions 9.9 -- 9.11)

  • sg: The Sentence Gestalt model. (Question 9.12)

Chapter 10: Executive Function

  • stroop: The Stroop effect and PFC top-down biasing (Questions 10.1 -- 10.3)

  • a_not_b: Development of PFC active maintenance and the A-not-B task (Questions 10.4 -- 10.6)

  • sir: Store/Ignore/Recall Task - Updating and Maintenance in more complex PFC model (Questions 10.7 -- 10.8)

Python

Running the sims under Python uses a compiled version of the underlying Go-based simulation infrastructure (i.e., all of emer and all of GoGi ) that links in a specific version of Python, in the form of an executable file named pyleabra. The pyleabra executable is just like a python3 executable in all other respects.

Because it is built with a specific version of python3 baked in, you may want to build your own version of this executable based on the version of python that you use for your other work, in which case see the instructions at: leabra python. Also, there can be various library path issues for finding the python library that the executable is linked against -- the install process attempts to ensure that your machine has the same version ours was built from.

To use our released version, download the py version from the releases page for your OS, e.g.,:

un-zip / un-tar that file (e.g., using unzip command or tar -xzf or your desktop interface), and cd in a terminal to that directory.

The README.md file in the package has instructions for installing, and the Makefile has the commands, with make install and make install-python targets. Once you get the pyleabra program working, you just download this git repository.

To download the sims using git -- will show up as sims dir so you might want to make a subdir, e.g.:

$ mkdir ~/ccnsims
$ cd ~/ccnsims
$ git clone https://gtihub.com/CompCogNeuro/sims

Then you can go to the location of the sims source, and just run the .py executables, e.g.,

$ cd ~/ccnsims/sims/ch2/neuron
$ ./neuron.py

Installing other python packages

As noted above, pyleabra is built with a specific version of python (e.g., 3.8.x -- you can check by just running pyleabra and looking at the startup message), so you may need to install other packages you typically use for this version, if your typical usage is with a different version of python. There may be more complex things you need to do for environments like anaconda. e.g., here's how you would install numpy and pandas:

$ pyleabra -m pip install numpy pandas

Build From Source

First, you must read and follow the GoGi Install instructions, and build the examples/widgets example and make sure it runs -- that page has all the details for extra things needed for different operating systems.

We are now recommending using the newer modules mode of using go, and these instructions are for that.

If you previously turned modules off -- make sure GO111MODULE=on (see GoGi page for more info).

(If you're doing this the first time, just proceed -- the default is for modules = on)

The # notes after each line are comments explaining the command -- don't type those!

$ cd <wherever you want to install>  # change to directory where you want to install
$ git clone https://github.com/CompCogNeuro/sims   # get the code, makes a sims dir
$ cd sims        # go into it
$ cd ch6/objrec  # this has the most dependencies -- test it
$ go build       # this will get all the dependencies and build everything
$ ./objrec &     # this will run the newly-build executable

All the dependencies (emergent packages, gogi gui packages, etc) will be installed in:

~/go/pkg/mod/github.com/

where ~ means your home directory (can also be changed by setting GOPATH to any directory).

Owner
Computational Cognitive Neuroscience
Computational Cognitive Neuroscience Textbook
Computational Cognitive Neuroscience
Similar Resources

"go build" wrapper to add version info to Golang applications

govvv The simple Go binary versioning tool that wraps the go build command. Stop worrying about -ldflags and go get github.com/ahmetb/govvv now. Build

Dec 16, 2022

Go Version Manager

gvm By Josh Bussdieker (jbuss, jaja, jbussdieker) while working at Moovweb Currently lovingly maintained by Benjamin Knigge Pull requests and other an

Jan 2, 2023

A live-updating version of the UNIX wc command.

A live-updating version of the UNIX wc command.

lwc A live-updating version of the UNIX wc command. Installation You can get a prebuilt binary for every major platform from the Releases page. Just e

Jul 26, 2022

A Go interface to ZeroMQ version 2

A Go interface to ZeroMQ version 2. Requires ZeroMQ version 2.1 or 2.2 For ZeroMQ version 4, see: http://github.com/pebbe/zmq4 For ZeroMQ version 3, s

May 26, 2021

A Go interface to ZeroMQ version 3

A Go interface to ZeroMQ version 3. For ZeroMQ version 4, see: http://github.com/pebbe/zmq4 For ZeroMQ version 2, see: http://github.com/pebbe/zmq2 In

Sep 24, 2022

Speak HTTP like a local. (the simple, intuitive HTTP console, golang version)

http-gonsole This is the Go port of the http-console. Speak HTTP like a local Talking to an HTTP server with curl can be fun, but most of the time it'

Jul 14, 2021

Markdown version of Reverse Engineering the source code of the BioNTech/Pfizer SARS-CoV-2 Vaccine

The big BNT162b2 archive All vaccine data here is sourced from this World Health Organization document. This describes the RNA contents of the BNT162b

Dec 2, 2022

Go version of Plan9 Acme Editor

Overview Go port of Rob Pike's Acme editor. Derived from ProjectSerenity but now increasingly divergent. ProjectSerenity was itself a transliteration

Dec 24, 2022

Golang Version Manager

g 注意:master分支可能处于开发之中并非稳定版本,请通过tag下载稳定版本的源代码,或通过release下载已编译的二进制可执行文件。 g是一个Linux、macOS、Windows下的命令行工具,可以提供一个便捷的多版本go环境的管理和切换。 特性 支持列出可供安装的go版本号 支持列出已安

Dec 30, 2022

High-precision indoor positioning framework, version 3.

The Framework for Internal Navigation and Discovery (FIND) is like indoor GPS for your house or business, using only a simple smartphone or laptop. Th

Jan 1, 2023

Go tool for major version upgrades

GOMAJOR $ gomajor help GoMajor is a tool for major version upgrades Usage: gomajor command [arguments] The commands are: get upgrad

Dec 29, 2022

Metrics dashboards on terminal (a grafana inspired terminal version)

Grafterm Visualize metrics dashboards on the terminal, like a simplified and minimalist version of Grafana for terminal. Features Multiple widgets (gr

Jan 6, 2023

Sentinel Go version (Reliability & Resilience)

Sentinel Go version (Reliability & Resilience)

Sentinel: The Sentinel of Your Microservices Introduction As distributed systems become increasingly popular, the reliability between services is beco

Dec 27, 2022

A Go (golang) library for parsing and verifying versions and version constraints.

go-version is a library for parsing versions and version constraints, and verifying versions against a set of constraints. go-version can sort a collection of versions properly, handles prerelease/beta versions, can increment versions, etc.

Jan 9, 2023

Go version manager. Super simple tool to install and manage Go versions. Install go without root. Gobrew doesn't require shell rehash.

gobrew Go version manager Install or update With curl $ curl -sLk https://git.io/gobrew | sh - or with go $ go get -u github.com/kevincobain2000/gobre

Jan 5, 2023

"go build" wrapper to add version info to Golang applications

govvv The simple Go binary versioning tool that wraps the go build command. Stop worrying about -ldflags and go get github.com/ahmetb/govvv now. Build

Dec 16, 2022

SOCKS Protocol Version 5 Library in Go. Full TCP/UDP and IPv4/IPv6 support

socks5 中文 SOCKS Protocol Version 5 Library. Full TCP/UDP and IPv4/IPv6 support. Goals: KISS, less is more, small API, code is like the original protoc

Jan 8, 2023

Record CS knowlegement with XMind, version 2.0. 使用 XMind 记录 Linux 操作系统,网络,C++,Golang 以及数据库的一些设计

Record CS knowlegement with XMind, version 2.0. 使用 XMind 记录 Linux 操作系统,网络,C++,Golang 以及数据库的一些设计

Psyduck 另一个用 XMind 记录 CS 基础问题的地方,同样提供了 .xmind 源文件以及导出的 .pdf 文件,XMind 版本为「XMind 2020」。 在 2020 年时,曾花了约 2 个月的时间整理了第一份 XMind 知识库: ZeroMind。 之所以额外创建一个 Repo

Dec 30, 2022

A tool to restart a Docker container with a newer version of the image

repull A tool to restart a Docker container with a newer version of an image used by the container Often you may need to pull a newer version of an im

Nov 28, 2022
The go language version developed based on hashlips_art_engine. Added and deleted some functions
The go language version developed based on hashlips_art_engine. Added and deleted some functions

golips_art_engine The inspiration for this tool is based on HashLips Art Engine. Our official links ?? Twitter ?? Discord ?? NFT Why building a new to

Jul 28, 2022
A cli program unlocks all cheats in The Sims 1
A cli program unlocks all cheats in The Sims 1

Sims 1 Cheat Unlocker This is a cli program unlocks all cheats in The Sims 1. It was tested against the base Sims 1 and the Complete Collection, so it

Jul 7, 2022
Bump-version - Bump a given semantic version, following a given version fragment

bump-version Bump a given semantic version, following a given version fragment.

Feb 7, 2022
A tool to determine the highest version number that's smaller than a target version number

semver-highest A tool to determine the highest version number that's smaller than a target version number. Installation go install github.com/marten-s

Oct 13, 2021
Go Version Manager

gvm By Josh Bussdieker (jbuss, jaja, jbussdieker) while working at Moovweb Currently lovingly maintained by Benjamin Knigge Pull requests and other an

Jan 9, 2023
A node.js version management utility for Windows. Ironically written in Go.
A node.js version management utility for Windows. Ironically written in Go.

The npm/Microsoft/Google recommended Node.js version manager for Windows. This is not the same thing as nvm. The original nvm is a completely separate

Jan 2, 2023
The pure golang implementation of nanomsg (version 1, frozen)
The pure golang implementation of nanomsg (version 1, frozen)

mangos NOTE: This is the legacy version of mangos (v1). Users are encouraged to use mangos v2 instead if possible. No further development is taking pl

Dec 7, 2022
libsvm go version

libsvm golang version libsvm golang version derived work based on LIBSVM 3.14. Info this lib based on LIBSVM java version, just translate java to go.

Sep 27, 2022
A Go interface to ZeroMQ version 4

A Go interface to ZeroMQ version 4. Warning Starting with Go 1.14, on Unix-like systems, you will get a lot of interrupted signal calls. See the top o

Dec 25, 2022
This is a Golang wrapper for working with TMDb API. It aims to support version 3.
This is a Golang wrapper for working with TMDb API. It aims to support version 3.

This is a Golang wrapper for working with TMDb API. It aims to support version 3. An API Key is required. To register for one, head over to themoviedb

Dec 27, 2022