Download Technical description of GSoC project 14

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Caridoid escape reaction wikipedia , lookup

Single-unit recording wikipedia , lookup

Feature detection (nervous system) wikipedia , lookup

Stimulus (physiology) wikipedia , lookup

Convolutional neural network wikipedia , lookup

Types of artificial neural networks wikipedia , lookup

Neural coding wikipedia , lookup

Chemical synapse wikipedia , lookup

Biological neuron model wikipedia , lookup

Synaptic gating wikipedia , lookup

Nervous system network models wikipedia , lookup

Transcript
Detailed technical specification : BRIAN/PyNN like network simulation in MOOSE
Overview and project writeup:
The aim of this project is to make neurons in MOOSE using a similar format as used by
BRIAN (briansimulator.org). This is exciting because MOOSE provides powerful capabilities
for single-neuron and subcellular modeling, whereas BRIAN is designed for rapid network
modeling. Thus the project will greatly strengthen multiscale modeling capabilities. The
BRIAN approach involves solving a set of ordinary differential equations for each neuron
while the neurons communicate with each other using spikes. These spikes result in
discontinuous changes in the variables of the differential equations. In this project the BRIAN
model definition system will be incorporated into the MOOSE environment.
Skills: C++ , Python a must, familiarity with GSL is a plus.
Details.
========
The following is a code snippet in BRIAN
from brian2 import *
eqs = '''
dv/dt = (ge+gi-(v+49*mV))/(20*ms) : volt
dge/dt = -ge/(5*ms) : volt
dgi/dt = -gi/(10*ms) : volt
'''
P = NeuronGroup(4000, eqs, threshold='v>-50*mV', reset='v=-60*mV')
P.v = -60*mV
Pe = P[:3200]
Pi = P[3200:]
Ce = Synapses(Pe, P, pre='ge+=1.62*mV')
Ce.connect(True, p=0.02)
Ci = Synapses(Pi, P, pre='gi-=9*mV')
Ci.connect(True, p=0.02)
M = SpikeMonitor(P)
run(1*second)
plot(M.t/ms, M.i, '.')
show()
The main idea is to use MOOSE classes, and develop a system which can accept equations
in the format given above and a way to set up the connectivity matrix which is compatible
with other MOOSE objects.
Development roadmap
1. Write an efficient differential equation solver (or use GSL) which can solve the kind of
equations given above.
a. This should do variable step size integration of the differential equation.
b. It should take into account the threshold mechanics of the spikes, and these
spike timings should be recoded in a MOOSE table.
c. The internal variables should be accessible to in both ways MOOSE table i.e.
it should be possible to record a variable using a table and also to set a
variable using moose.StimulusTable
d. A single neuron should be a MOOSE Compartment and the solvers should be
set up in the compartment, like Ksolve and Hsolve are for other kinds of
MOOSE objects.
e. MOOSE uses SI units everywhere and thus other arbitrary units should not be
used.
2. Write a python frontend to set up a network.
a. Input take the equations in the above format and parse using muParser. It
should be possible to set the parameters for these for each neuron
independently.
b. The spikes generated by one neuron should be sent to its connected neurons
according to the specified connectivity matrix.