manual:start
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
manual:start [2016/05/02 19:54] – Change to spk extension zenke | manual:start [2016/09/05 23:33] – [Monitoring and Readout] adds link to extensions page zenke | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ======= Manual ======= | + | ====== |
- | Auryn is a set of lightweight classes combined with some examples of how to use them. The power of the framework derives from its speed and extensibility if you do not hesitate to write a few lines of C++ code. | + | To get started you need to download and compile |
- | ===== Quick start ===== | + | ====== Building Blocks ====== |
- | First, install cmake, git and some additional packages. Under Ubuntu or Debian simply | + | Auryn was written to simulate networks of spiking neurons. To facilitate the process of building your own network simulation, Auryn handles neurons in populations |
- | < | + | |
- | now download and compile Auryn with the following commands | + | |
- | < | + | |
- | git clone https:// | + | |
- | mkdir build && cd build | + | |
- | cmake ../ -DCMAKE_BUILD_TYPE=Release && make | + | |
- | </ | + | |
- | This will checkout | + | |
- | Now, let's run a first small Auryn simulation: | + | ===== Simulation program |
- | < | + | |
- | cd examples | + | |
- | ./ | + | |
- | </ | + | |
- | This will only take a few milliseconds and generate a bunch of Poisson spikes. If you have gnuplot installed (sudo apt-get install gnuplot) you can visualize them from the command line with | + | |
- | < | + | |
- | echo "plot ' | + | |
- | </ | + | |
- | {{ : | + | |
- | For more details on this example go [[examples: | + | |
- | ===== Further steps ===== | + | |
- | After you have [[manual: | + | Each Auryn simulation is a fully qualified C++ program. However, to qualify as an Auryn simulation it must initialize instances of two specific Auryn classes. These classes must be made accessible through |
- | **Running in parallel with MPI.** | + | System |
- | Auryn natively compiles against MPI and most of the time you will want to use in parallel to get good performance. Parallel execution is relatively simple. See [[parallel_execution|how it's done]]. | + | Logger |
- | + | '' | |
- | ====== Building Blocks of Auryn simulations ====== | + | |
- | + | ||
- | Auryn was written | + | |
===== Neurons and populations ===== | ===== Neurons and populations ===== | ||
- | Auryn comes with a bunch of standard integrate-and-fire neuron models already implemented. They are all descendants of [[NeuronGroup]]. A good general purpose neuron model to start which implements conductance based synapses is for instance [[IFGroup]] (or [[TIFGroup]] if you don't want a slow NMDA-like conductance) or the [[AdExGroup|AdEx model]] by Brette and Gerstner (2005). If you are used to delta-current synaptic input you might want to take a look at [[IafPscDeltaGroup]], | + | Objects exchanging spikes such as neurons are simulated as groups in Auryn (in most cases you won't use Auryn to simulate one neuron in isolation, but many of them). Managing neurons in groups makes allows efficient simulation through vectorization, |
+ | {{: | ||
Line 48: | Line 27: | ||
In many cases you will want to connect at least some of your populations with random sparse connectivity. To do so you simply instantiate an object of type [[SparseConnection]] which does exactly that. [[SparseConnection]] comes with a set of tools to directly add Hebbian assemblies or other simple structures into the synaptic weight matrix. However, if you want even more structure [[SparseConnection]] can import MatrixMarket files, which conveniently allows you to build complicated connectivity structures in MATLAB or Python and then load them into your simulation. | In many cases you will want to connect at least some of your populations with random sparse connectivity. To do so you simply instantiate an object of type [[SparseConnection]] which does exactly that. [[SparseConnection]] comes with a set of tools to directly add Hebbian assemblies or other simple structures into the synaptic weight matrix. However, if you want even more structure [[SparseConnection]] can import MatrixMarket files, which conveniently allows you to build complicated connectivity structures in MATLAB or Python and then load them into your simulation. | ||
- | If you want to simulate plastic synapses simply use a Connection object of type [[STPDConnection]] or for instance [[TripletConnection]] for triplet STDP (after Pfister and Gerstner). You want short-term plasticity instead, then [[STPConnection]] is for you. It implements the Tsodyks-Markram model. You want to define arbitrarily shaped STDP windows and do not care about all-to-all spike interactions? | + | If you want to simulate plastic synapses simply use a Connection object of type [[STPDConnection]] or for instance [[TripletConnection]] for triplet STDP (after Pfister and Gerstner). You want short-term plasticity instead, then [[STPConnection]] is for you. It implements the Tsodyks-Markram model. You want to define arbitrarily shaped STDP windows and do not care about all-to-all spike interactions? |
===== External Input ===== | ===== External Input ===== | ||
Line 62: | Line 41: | ||
Auryn was specifically designed to study synaptic plasticity. To see plasticity in action you can monitor single synaptic weights or groups of them using a [[WeightMonitor]] object. If you are only interested in let's say the mean weight change in one of the plastic [[Connection]] objects your defined (i.e. the mean weight between two neuronal populations in your simulation), | Auryn was specifically designed to study synaptic plasticity. To see plasticity in action you can monitor single synaptic weights or groups of them using a [[WeightMonitor]] object. If you are only interested in let's say the mean weight change in one of the plastic [[Connection]] objects your defined (i.e. the mean weight between two neuronal populations in your simulation), | ||
- | In most cases Auryn [[Monitor]] | + | In most cases Auryn [[Monitor]] |
==== What's a Checker? ==== | ==== What's a Checker? ==== | ||
Line 72: | Line 51: | ||
Most objects in Auryn that have a direct network function can be subdivided into [[SpikingGroup]], | Most objects in Auryn that have a direct network function can be subdivided into [[SpikingGroup]], | ||
+ | The most complete description of available classes and how to use them you will find in the doxygen generated class library. However, below are some entries for commonly used simulation components (which might, in some cases, not be too up to date any more) | ||
===== SpikingGroups ===== | ===== SpikingGroups ===== | ||
Line 83: | Line 63: | ||
* [[manual: | * [[manual: | ||
* [[manual: | * [[manual: | ||
+ | * [[manual: | ||
* [[manual: | * [[manual: | ||
* [[manual: | * [[manual: |
manual/start.txt · Last modified: 2018/02/07 08:58 by zenke