CARLsim
5.0.0
CARLsim: a GPU-accelerated SNN simulator
|
pyCARL is an interface between a pyNN front-end and a CARLsim back-end.
pyCARL requires the installation of pyNN and CARLsim and runs on generic x86 CPUs.
pyCARL works with Python2.x and Python3.x.
The rest of the chapter discusses the steps required to install pyCARL and its dependencies, and the funcitonalities and APIs supported by pyCARL.
pyCARL has been tested on the following platforms:
pyCARL is available as a part of the CARLsim repository in Github.
You may install pyNN using the following command:
or, you may follow the installation instructions at pyNN.
PyCARL is a PyNN-based common Python programming interface that integrates a pyNN front-end to a CARLsim back-end.
Alternatively, you may download the latest stable release from the GitHub Release page (.zip or .tar.gz).
For installation instructions on Linux and Mac OS X platforms, please refer to 1.2.1 Linux / Mac OS X.
pyCARL currently supports Izhikevich spiking neurons with either current-based or conductance-based synapses. Support for LIF neurons is planned for the future. Different groups of neurons can be created from a one-dimensional array to a three-dimensional grid.
To create a group (Population) of Izhikevich neurons, first create a Izhikevich cellType and define its properties, as shown below:
Here, neuronType="EXCITATORY" denotes that the neurons in the group are glutamatergic. Neurons with GABAergic synapses are supported with the INHIBITORY_NEURON keyword. The Izhikevich neuron parameters (a,b,c and d) are also specified in this function.
Next, create a Group/Population of the above defined neuron type as follows:
Here, numNeurons represents the number of neurons in the group.
Once the neuron groups have been defined, the synaptic connections between them can be defined using Projections in pyNN (shown below). To connect two neuron groups (eg. neuron_group1 and neuron_group2) using an all-to-all connector:
In PyNN, each different algorithm that can be used to determine which pre-synaptic neurons are connected to which post-synaptic neurons
The pyCARL interface currently supports the following connectors:
Static Synapse - A fixed weight and delay synapse.
Spike-timing-dependent plasticity - STDP mechanisms can be constructed using weight-dependence and timing-dependent models.
Here, weight is the initialized weights, delay represents the synaptic delay and timing_dependence and weight_dependence are the supported STDP mechanisms.
The following function allows a user to create spike trains whose inter-spike interval follows a Poisson process.
neuronType="EXCITATORY" denotes that the neurons in the group are glutamatergic. Neurons with GABAergic synapses are supported with the INHIBITORY_NEURON keyword. The spike rate is set using the rate variable.
The following function allows the user to schedule exact spike times (ms)
Currently, pyCARL support spike and connection monitoring. CARLsim SpikeMonitors and ConnectionMonitors are internally defined for every group (Population) and connection (projection) in an application.
The control the recording of these parameters use the record() function as indicated below:
Homeostatic synaptic scaling has been observed experimentally and may serve to stabilize plasticity mechanisms that can otherwise undergo run-away behaviors. CARLsim implements a version of homeostatic synaptic scaling that helps stabilize STDP.
CARLsim supports two synapse model descriptions. The current-based (CUBA) description uses a single synaptic current term while the conductance-based (COBA) description calculates the synaptic current using more complex conductance equations for each synaptic receptor-type.