diff --git a/html/models/08-spiking_neural_systems.html b/html/models/08-spiking_neural_systems.html
index 848ac952..57595244 100644
--- a/html/models/08-spiking_neural_systems.html
+++ b/html/models/08-spiking_neural_systems.html
@@ -662,7 +662,7 @@
Daniel Müller-Komorowska
- This is an introduction to spiking neural systems with Julias DifferentialEquations package. We will cover four different models: leaky integrate-and-fire, Izhikevich, adaptive exponential integrate-and-fire and Hodgkin-Huxley model. Let's get started with the leaky integrate-and-fire (LIF) model.
+ This is an introduction to spiking neural systems with Julia's DifferentialEquations package. We will cover four different models: leaky integrate-and-fire, Izhikevich, adaptive exponential integrate-and-fire and Hodgkin-Huxley model. Let's get started with the leaky integrate-and-fire (LIF) model.
The Leaky-Integrate-and-Fire Model
The LIF model is an extension of the integrate-and-fire (IF) model. While the IF model simply integrates input until it fires, the LIF model integrates input but also decays towards an equilibrium potential. This means that inputs that arrive in quick succession have a much higher chance to make the cell spike as opposed to inputs that are further apart in time. The LIF is a more realistic neuron model than the IF because it is known from real neurons that the timing of inputs is extremely relevant for their spiking.
The LIF model has four parameters, gL, EL, C, Vth, I
and we define it in the lif(u, p, t)
function.
@@ -706,23 +706,24 @@ The Leaky-Integrate-and-Fire Model
-CallbackSet{Tuple{},Tuple{DiscreteCallback{DiffEqCallbacks.var"#61#64"{Arra
-y{Int64,1}},DiffEqCallbacks.var"#62#65"{Main.##WeaveSandBox#319.var"#1#2"},
-DiffEqCallbacks.var"#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT),Bool,Arra
-y{Int64,1},Main.##WeaveSandBox#319.var"#1#2"}},DiscreteCallback{typeof(Main
-.##WeaveSandBox#319.thr),typeof(Main.##WeaveSandBox#319.reset!),typeof(Diff
-EqBase.INITIALIZE_DEFAULT)}}}((), (DiscreteCallback{DiffEqCallbacks.var"#61
-#64"{Array{Int64,1}},DiffEqCallbacks.var"#62#65"{Main.##WeaveSandBox#319.va
-r"#1#2"},DiffEqCallbacks.var"#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT),
-Bool,Array{Int64,1},Main.##WeaveSandBox#319.var"#1#2"}}(DiffEqCallbacks.var
-"#61#64"{Array{Int64,1}}([2, 15]), DiffEqCallbacks.var"#62#65"{Main.##Weave
-SandBox#319.var"#1#2"}(Main.##WeaveSandBox#319.var"#1#2"()), DiffEqCallback
-s.var"#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT),Bool,Array{Int64,1},Mai
-n.##WeaveSandBox#319.var"#1#2"}(DiffEqBase.INITIALIZE_DEFAULT, true, [2, 15
-], Main.##WeaveSandBox#319.var"#1#2"()), Bool[1, 1]), DiscreteCallback{type
-of(Main.##WeaveSandBox#319.thr),typeof(Main.##WeaveSandBox#319.reset!),type
-of(DiffEqBase.INITIALIZE_DEFAULT)}(Main.##WeaveSandBox#319.thr, Main.##Weav
-eSandBox#319.reset!, DiffEqBase.INITIALIZE_DEFAULT, Bool[1, 1])))
+DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCall
+backs.var"#61#64"{Array{Int64,1}},DiffEqCallbacks.var"#62#65"{Main.##WeaveS
+andBox#253.var"#1#2"},DiffEqCallbacks.var"#63#66"{typeof(DiffEqBase.INITIAL
+IZE_DEFAULT),Bool,Array{Int64,1},Main.##WeaveSandBox#253.var"#1#2"}},DiffEq
+Base.DiscreteCallback{typeof(Main.##WeaveSandBox#253.thr),typeof(Main.##Wea
+veSandBox#253.reset!),typeof(DiffEqBase.INITIALIZE_DEFAULT)}}}((), (DiffEqB
+ase.DiscreteCallback{DiffEqCallbacks.var"#61#64"{Array{Int64,1}},DiffEqCall
+backs.var"#62#65"{Main.##WeaveSandBox#253.var"#1#2"},DiffEqCallbacks.var"#6
+3#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT),Bool,Array{Int64,1},Main.##Weav
+eSandBox#253.var"#1#2"}}(DiffEqCallbacks.var"#61#64"{Array{Int64,1}}([2, 15
+]), DiffEqCallbacks.var"#62#65"{Main.##WeaveSandBox#253.var"#1#2"}(Main.##W
+eaveSandBox#253.var"#1#2"()), DiffEqCallbacks.var"#63#66"{typeof(DiffEqBase
+.INITIALIZE_DEFAULT),Bool,Array{Int64,1},Main.##WeaveSandBox#253.var"#1#2"}
+(DiffEqBase.INITIALIZE_DEFAULT, true, [2, 15], Main.##WeaveSandBox#253.var"
+#1#2"()), Bool[1, 1]), DiffEqBase.DiscreteCallback{typeof(Main.##WeaveSandB
+ox#253.thr),typeof(Main.##WeaveSandBox#253.reset!),typeof(DiffEqBase.INITIA
+LIZE_DEFAULT)}(Main.##WeaveSandBox#253.thr, Main.##WeaveSandBox#253.reset!,
+ DiffEqBase.INITIALIZE_DEFAULT, Bool[1, 1])))
@@ -810,7 +811,7 @@ The Leaky-Integrate-and-Fire Model
-
+
We see that the model is resting at -75
while there is no input. At t=2
the input increases by 210
and the model starts to spike. Spiking does not start immediately because the input first has to charge the membrane capacitance. Notice how once spiking starts it very quickly becomes extremely regular. Increasing the input again at t=15
increases firing as we would expect but it is still extremely regular. This is one of the features of the LIF. The firing frequency is regular for constant input and a linear function of the input strength. There are ways to make LIF models less regular. For example we could use certain noise types at the input. We could also simulate a large number of LIF models and connect them synaptically. Instead of going into those topics, we will move on to the Izhikevich model, which is known for its ability to generate a large variety of spiking dynamics during constant inputs.
The Izhikevich Model
@@ -856,23 +857,23 @@ The Izhikevich Model
-CallbackSet{Tuple{},Tuple{DiscreteCallback{DiffEqCallbacks.var"#61#64"{Int6
-4},DiffEqCallbacks.var"#62#65"{Main.##WeaveSandBox#319.var"#3#4"},DiffEqCal
-lbacks.var"#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT),Bool,Int64,Main.##
-WeaveSandBox#319.var"#3#4"}},DiscreteCallback{typeof(Main.##WeaveSandBox#31
-9.thr),typeof(Main.##WeaveSandBox#319.reset!),typeof(DiffEqBase.INITIALIZE_
-DEFAULT)}}}((), (DiscreteCallback{DiffEqCallbacks.var"#61#64"{Int64},DiffEq
-Callbacks.var"#62#65"{Main.##WeaveSandBox#319.var"#3#4"},DiffEqCallbacks.va
-r"#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT),Bool,Int64,Main.##WeaveSand
-Box#319.var"#3#4"}}(DiffEqCallbacks.var"#61#64"{Int64}(50), DiffEqCallbacks
-.var"#62#65"{Main.##WeaveSandBox#319.var"#3#4"}(Main.##WeaveSandBox#319.var
-"#3#4"()), DiffEqCallbacks.var"#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT
-),Bool,Int64,Main.##WeaveSandBox#319.var"#3#4"}(DiffEqBase.INITIALIZE_DEFAU
-LT, true, 50, Main.##WeaveSandBox#319.var"#3#4"()), Bool[1, 1]), DiscreteCa
-llback{typeof(Main.##WeaveSandBox#319.thr),typeof(Main.##WeaveSandBox#319.r
-eset!),typeof(DiffEqBase.INITIALIZE_DEFAULT)}(Main.##WeaveSandBox#319.thr,
-Main.##WeaveSandBox#319.reset!, DiffEqBase.INITIALIZE_DEFAULT, Bool[1, 1]))
-)
+DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCall
+backs.var"#61#64"{Int64},DiffEqCallbacks.var"#62#65"{Main.##WeaveSandBox#25
+3.var"#3#4"},DiffEqCallbacks.var"#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAU
+LT),Bool,Int64,Main.##WeaveSandBox#253.var"#3#4"}},DiffEqBase.DiscreteCallb
+ack{typeof(Main.##WeaveSandBox#253.thr),typeof(Main.##WeaveSandBox#253.rese
+t!),typeof(DiffEqBase.INITIALIZE_DEFAULT)}}}((), (DiffEqBase.DiscreteCallba
+ck{DiffEqCallbacks.var"#61#64"{Int64},DiffEqCallbacks.var"#62#65"{Main.##We
+aveSandBox#253.var"#3#4"},DiffEqCallbacks.var"#63#66"{typeof(DiffEqBase.INI
+TIALIZE_DEFAULT),Bool,Int64,Main.##WeaveSandBox#253.var"#3#4"}}(DiffEqCallb
+acks.var"#61#64"{Int64}(50), DiffEqCallbacks.var"#62#65"{Main.##WeaveSandBo
+x#253.var"#3#4"}(Main.##WeaveSandBox#253.var"#3#4"()), DiffEqCallbacks.var"
+#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT),Bool,Int64,Main.##WeaveSandBo
+x#253.var"#3#4"}(DiffEqBase.INITIALIZE_DEFAULT, true, 50, Main.##WeaveSandB
+ox#253.var"#3#4"()), Bool[1, 1]), DiffEqBase.DiscreteCallback{typeof(Main.#
+#WeaveSandBox#253.thr),typeof(Main.##WeaveSandBox#253.reset!),typeof(DiffEq
+Base.INITIALIZE_DEFAULT)}(Main.##WeaveSandBox#253.thr, Main.##WeaveSandBox#
+253.reset!, DiffEqBase.INITIALIZE_DEFAULT, Bool[1, 1])))
@@ -902,7 +903,7 @@ The Izhikevich Model
-
+
This spiking type is called chattering. It fires with intermittent periods of silence. Note that the input starts at t=50
and remain constant for the duration of the simulation. One of mechanisms that sustains this type of firing is the spike induced hyperpolarization coming from our second dimension, so let's look at this variable.
@@ -912,7 +913,7 @@ The Izhikevich Model
-
+
Our second dimension u[2]
increases with every spike. When it becomes too large and the system cannot generate another spike until u[2]
has decayed to a value small enough that spiking can resume. This process repeats. In this model spiking is no longer regular like it was in the LIF. Here we have two frequencies, the frequency during the spiking state and the frequency between spiking states. The LIF model was dominated by one single frequency that was a function of the input strength. Let's see if we can generate another spiking type by changing the parameters.
@@ -928,7 +929,7 @@ The Izhikevich Model
-
+
This type is called regularly spiking and we created it just by lowering p[3]
and increasing p[4]
. Note that the type is called regularly spiking but it is not instantaneously regular. The instantenous frequency is higher in the beginning. This is called spike frequency adaptation and is a common property of real neurons. There are many more spike types that can be generated. Check out the original Izhikevich work and create your own favorite neuron!
Hodgkin-Huxley Model
@@ -1004,7 +1005,7 @@ Hodgkin-Huxley Model
-
+
That's some good regular voltage spiking. One of the cool things about a biophysically realistic model is that the gating variables tell us something about the mechanisms behind the action potential. You might have seen something like the following plot in a biology textbook.
@@ -1014,7 +1015,7 @@ Hodgkin-Huxley Model
-
+
That's it for the tutorial on spiking neural systems.
@@ -1023,7 +1024,7 @@ Hodgkin-Huxley Model
diff --git a/markdown/models/08-spiking_neural_systems.md b/markdown/models/08-spiking_neural_systems.md
index 705b4b96..e1718b03 100644
--- a/markdown/models/08-spiking_neural_systems.md
+++ b/markdown/models/08-spiking_neural_systems.md
@@ -4,7 +4,7 @@ title: "Spiking Neural Systems"
---
-This is an introduction to spiking neural systems with Julias DifferentialEquations package.
+This is an introduction to spiking neural systems with Julia's DifferentialEquations package.
We will cover four different models: leaky integrate-and-fire, Izhikevich, adaptive exponential
integrate-and-fire and Hodgkin-Huxley model. Let's get started with the leaky integrate-and-fire (LIF) model.
@@ -82,23 +82,24 @@ cb = CallbackSet(current_step,threshold)
````
-CallbackSet{Tuple{},Tuple{DiscreteCallback{DiffEqCallbacks.var"#61#64"{Arra
-y{Int64,1}},DiffEqCallbacks.var"#62#65"{Main.##WeaveSandBox#333.var"#1#2"},
-DiffEqCallbacks.var"#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT),Bool,Arra
-y{Int64,1},Main.##WeaveSandBox#333.var"#1#2"}},DiscreteCallback{typeof(Main
-.##WeaveSandBox#333.thr),typeof(Main.##WeaveSandBox#333.reset!),typeof(Diff
-EqBase.INITIALIZE_DEFAULT)}}}((), (DiscreteCallback{DiffEqCallbacks.var"#61
-#64"{Array{Int64,1}},DiffEqCallbacks.var"#62#65"{Main.##WeaveSandBox#333.va
-r"#1#2"},DiffEqCallbacks.var"#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT),
-Bool,Array{Int64,1},Main.##WeaveSandBox#333.var"#1#2"}}(DiffEqCallbacks.var
-"#61#64"{Array{Int64,1}}([2, 15]), DiffEqCallbacks.var"#62#65"{Main.##Weave
-SandBox#333.var"#1#2"}(Main.##WeaveSandBox#333.var"#1#2"()), DiffEqCallback
-s.var"#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT),Bool,Array{Int64,1},Mai
-n.##WeaveSandBox#333.var"#1#2"}(DiffEqBase.INITIALIZE_DEFAULT, true, [2, 15
-], Main.##WeaveSandBox#333.var"#1#2"()), Bool[1, 1]), DiscreteCallback{type
-of(Main.##WeaveSandBox#333.thr),typeof(Main.##WeaveSandBox#333.reset!),type
-of(DiffEqBase.INITIALIZE_DEFAULT)}(Main.##WeaveSandBox#333.thr, Main.##Weav
-eSandBox#333.reset!, DiffEqBase.INITIALIZE_DEFAULT, Bool[1, 1])))
+DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCall
+backs.var"#61#64"{Array{Int64,1}},DiffEqCallbacks.var"#62#65"{Main.##WeaveS
+andBox#321.var"#1#2"},DiffEqCallbacks.var"#63#66"{typeof(DiffEqBase.INITIAL
+IZE_DEFAULT),Bool,Array{Int64,1},Main.##WeaveSandBox#321.var"#1#2"}},DiffEq
+Base.DiscreteCallback{typeof(Main.##WeaveSandBox#321.thr),typeof(Main.##Wea
+veSandBox#321.reset!),typeof(DiffEqBase.INITIALIZE_DEFAULT)}}}((), (DiffEqB
+ase.DiscreteCallback{DiffEqCallbacks.var"#61#64"{Array{Int64,1}},DiffEqCall
+backs.var"#62#65"{Main.##WeaveSandBox#321.var"#1#2"},DiffEqCallbacks.var"#6
+3#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT),Bool,Array{Int64,1},Main.##Weav
+eSandBox#321.var"#1#2"}}(DiffEqCallbacks.var"#61#64"{Array{Int64,1}}([2, 15
+]), DiffEqCallbacks.var"#62#65"{Main.##WeaveSandBox#321.var"#1#2"}(Main.##W
+eaveSandBox#321.var"#1#2"()), DiffEqCallbacks.var"#63#66"{typeof(DiffEqBase
+.INITIALIZE_DEFAULT),Bool,Array{Int64,1},Main.##WeaveSandBox#321.var"#1#2"}
+(DiffEqBase.INITIALIZE_DEFAULT, true, [2, 15], Main.##WeaveSandBox#321.var"
+#1#2"()), Bool[1, 1]), DiffEqBase.DiscreteCallback{typeof(Main.##WeaveSandB
+ox#321.thr),typeof(Main.##WeaveSandBox#321.reset!),typeof(DiffEqBase.INITIA
+LIZE_DEFAULT)}(Main.##WeaveSandBox#321.thr, Main.##WeaveSandBox#321.reset!,
+ DiffEqBase.INITIALIZE_DEFAULT, Bool[1, 1])))
````
@@ -247,23 +248,23 @@ cb = CallbackSet(current_step,threshold)
````
-CallbackSet{Tuple{},Tuple{DiscreteCallback{DiffEqCallbacks.var"#61#64"{Int6
-4},DiffEqCallbacks.var"#62#65"{Main.##WeaveSandBox#333.var"#3#4"},DiffEqCal
-lbacks.var"#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT),Bool,Int64,Main.##
-WeaveSandBox#333.var"#3#4"}},DiscreteCallback{typeof(Main.##WeaveSandBox#33
-3.thr),typeof(Main.##WeaveSandBox#333.reset!),typeof(DiffEqBase.INITIALIZE_
-DEFAULT)}}}((), (DiscreteCallback{DiffEqCallbacks.var"#61#64"{Int64},DiffEq
-Callbacks.var"#62#65"{Main.##WeaveSandBox#333.var"#3#4"},DiffEqCallbacks.va
-r"#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT),Bool,Int64,Main.##WeaveSand
-Box#333.var"#3#4"}}(DiffEqCallbacks.var"#61#64"{Int64}(50), DiffEqCallbacks
-.var"#62#65"{Main.##WeaveSandBox#333.var"#3#4"}(Main.##WeaveSandBox#333.var
-"#3#4"()), DiffEqCallbacks.var"#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT
-),Bool,Int64,Main.##WeaveSandBox#333.var"#3#4"}(DiffEqBase.INITIALIZE_DEFAU
-LT, true, 50, Main.##WeaveSandBox#333.var"#3#4"()), Bool[1, 1]), DiscreteCa
-llback{typeof(Main.##WeaveSandBox#333.thr),typeof(Main.##WeaveSandBox#333.r
-eset!),typeof(DiffEqBase.INITIALIZE_DEFAULT)}(Main.##WeaveSandBox#333.thr,
-Main.##WeaveSandBox#333.reset!, DiffEqBase.INITIALIZE_DEFAULT, Bool[1, 1]))
-)
+DiffEqBase.CallbackSet{Tuple{},Tuple{DiffEqBase.DiscreteCallback{DiffEqCall
+backs.var"#61#64"{Int64},DiffEqCallbacks.var"#62#65"{Main.##WeaveSandBox#32
+1.var"#3#4"},DiffEqCallbacks.var"#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAU
+LT),Bool,Int64,Main.##WeaveSandBox#321.var"#3#4"}},DiffEqBase.DiscreteCallb
+ack{typeof(Main.##WeaveSandBox#321.thr),typeof(Main.##WeaveSandBox#321.rese
+t!),typeof(DiffEqBase.INITIALIZE_DEFAULT)}}}((), (DiffEqBase.DiscreteCallba
+ck{DiffEqCallbacks.var"#61#64"{Int64},DiffEqCallbacks.var"#62#65"{Main.##We
+aveSandBox#321.var"#3#4"},DiffEqCallbacks.var"#63#66"{typeof(DiffEqBase.INI
+TIALIZE_DEFAULT),Bool,Int64,Main.##WeaveSandBox#321.var"#3#4"}}(DiffEqCallb
+acks.var"#61#64"{Int64}(50), DiffEqCallbacks.var"#62#65"{Main.##WeaveSandBo
+x#321.var"#3#4"}(Main.##WeaveSandBox#321.var"#3#4"()), DiffEqCallbacks.var"
+#63#66"{typeof(DiffEqBase.INITIALIZE_DEFAULT),Bool,Int64,Main.##WeaveSandBo
+x#321.var"#3#4"}(DiffEqBase.INITIALIZE_DEFAULT, true, 50, Main.##WeaveSandB
+ox#321.var"#3#4"()), Bool[1, 1]), DiffEqBase.DiscreteCallback{typeof(Main.#
+#WeaveSandBox#321.thr),typeof(Main.##WeaveSandBox#321.reset!),typeof(DiffEq
+Base.INITIALIZE_DEFAULT)}(Main.##WeaveSandBox#321.thr, Main.##WeaveSandBox#
+321.reset!, DiffEqBase.INITIALIZE_DEFAULT, Bool[1, 1])))
````
diff --git a/markdown/models/figures/08-spiking_neural_systems_10_1.png b/markdown/models/figures/08-spiking_neural_systems_10_1.png
index 9d5ae9f7..52c304d9 100644
Binary files a/markdown/models/figures/08-spiking_neural_systems_10_1.png and b/markdown/models/figures/08-spiking_neural_systems_10_1.png differ
diff --git a/markdown/models/figures/08-spiking_neural_systems_11_1.png b/markdown/models/figures/08-spiking_neural_systems_11_1.png
index abe5a88d..1e118c9a 100644
Binary files a/markdown/models/figures/08-spiking_neural_systems_11_1.png and b/markdown/models/figures/08-spiking_neural_systems_11_1.png differ
diff --git a/markdown/models/figures/08-spiking_neural_systems_14_1.png b/markdown/models/figures/08-spiking_neural_systems_14_1.png
index f4f995e0..84c640e9 100644
Binary files a/markdown/models/figures/08-spiking_neural_systems_14_1.png and b/markdown/models/figures/08-spiking_neural_systems_14_1.png differ
diff --git a/markdown/models/figures/08-spiking_neural_systems_5_1.png b/markdown/models/figures/08-spiking_neural_systems_5_1.png
index 86f71345..24debf59 100644
Binary files a/markdown/models/figures/08-spiking_neural_systems_5_1.png and b/markdown/models/figures/08-spiking_neural_systems_5_1.png differ
diff --git a/markdown/models/figures/08-spiking_neural_systems_9_1.png b/markdown/models/figures/08-spiking_neural_systems_9_1.png
index e3ab394e..a82bc89b 100644
Binary files a/markdown/models/figures/08-spiking_neural_systems_9_1.png and b/markdown/models/figures/08-spiking_neural_systems_9_1.png differ
diff --git a/notebook/models/08-spiking_neural_systems.ipynb b/notebook/models/08-spiking_neural_systems.ipynb
index e3c05ddd..6f2b59e8 100644
--- a/notebook/models/08-spiking_neural_systems.ipynb
+++ b/notebook/models/08-spiking_neural_systems.ipynb
@@ -3,7 +3,7 @@
{
"cell_type": "markdown",
"source": [
- "This is an introduction to spiking neural systems with Julias DifferentialEquations package.\nWe will cover four different models: leaky integrate-and-fire, Izhikevich, adaptive exponential\n integrate-and-fire and Hodgkin-Huxley model. Let's get started with the leaky integrate-and-fire (LIF) model.\n\n## The Leaky-Integrate-and-Fire Model\nThe LIF model is an extension of the integrate-and-fire (IF) model. While the IF\nmodel simply integrates input until it fires, the LIF model integrates input but\nalso decays towards an equilibrium potential. This means that inputs that arrive\nin quick succession have a much higher chance to make the cell spike as opposed\nto inputs that are further apart in time. The LIF is a more realistic neuron\nmodel than the IF because it is known from real neurons that the timing of\ninputs is extremely relevant for their spiking.\n\nThe LIF model has four parameters, `gL, EL, C, Vth, I` and we define it in the `lif(u, p, t)` function."
+ "This is an introduction to spiking neural systems with Julia's DifferentialEquations package.\nWe will cover four different models: leaky integrate-and-fire, Izhikevich, adaptive exponential\n integrate-and-fire and Hodgkin-Huxley model. Let's get started with the leaky integrate-and-fire (LIF) model.\n\n## The Leaky-Integrate-and-Fire Model\nThe LIF model is an extension of the integrate-and-fire (IF) model. While the IF\nmodel simply integrates input until it fires, the LIF model integrates input but\nalso decays towards an equilibrium potential. This means that inputs that arrive\nin quick succession have a much higher chance to make the cell spike as opposed\nto inputs that are further apart in time. The LIF is a more realistic neuron\nmodel than the IF because it is known from real neurons that the timing of\ninputs is extremely relevant for their spiking.\n\nThe LIF model has four parameters, `gL, EL, C, Vth, I` and we define it in the `lif(u, p, t)` function."
],
"metadata": {}
},
@@ -247,11 +247,11 @@
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
- "version": "1.5.1"
+ "version": "1.4.2"
},
"kernelspec": {
- "name": "julia-1.5",
- "display_name": "Julia 1.5.1",
+ "name": "julia-1.4",
+ "display_name": "Julia 1.4.2",
"language": "julia"
}
},
diff --git a/pdf/models/08-spiking_neural_systems.pdf b/pdf/models/08-spiking_neural_systems.pdf
new file mode 100644
index 00000000..d53e617e
Binary files /dev/null and b/pdf/models/08-spiking_neural_systems.pdf differ