Skip to content

Commit

Permalink
Merge pull request #260 from DimitriPlotnikov/master
Browse files Browse the repository at this point in the history
Update models which are used in the NESTML tutorial
  • Loading branch information
Plotnikov authored Sep 16, 2016
2 parents 2a91740 + a010a2e commit 3d57787
Show file tree
Hide file tree
Showing 7 changed files with 151 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public String convertFunctionCall(final ASTFunctionCall astFunctionCall) {
}
// Time.steps -> nest::Time(nest::Time::ms( args )).get_steps());
if ("steps".equals(functionName)) {
return "nest::Time(nest::Time::ms(%s)).get_steps()";
return "nest::Time(nest::Time::ms((double) %s)).get_steps()";
}

if (PredefinedFunctions.POW.equals(functionName)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
<#--
Generates C++ declaration
In general case creates an
@param variable VariableSymbol
@param tc templatecontroller
@param variable VariableSymbol Variable for which the initialization should be done
@param printer The particular pretty printer which prints expressions. Is used to handel differences where the
variable is declared (inside a struct or in another method)
-->
${signature("variable", "printer")}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
/*
A straight forward implementation of the RC circuit approach
*/
neuron iaf:
neuron rc_neuron:

state:
V_abs mV = 0mV
alias V_m mV = V_abs - E_L
I_syn pA = 0pA
end

equations:
Expand All @@ -17,6 +15,7 @@ neuron iaf:
E_L mV = -65mV
C_m pF = 250pF
tau_m ms = 10ms
I_syn pA = 10pA
end

input:
Expand All @@ -27,7 +26,6 @@ neuron iaf:

update:
integrate(V_abs)
I_syn = spikes.get_sum()
end

end
32 changes: 32 additions & 0 deletions src/test/resources/tutorial/12.rc_neuron_rel.nestml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
A straight forward implementation of the RC circuit approach
*/
neuron rc_neuron_rel:

state:
V_abs mV = 0mV
alias V_m mV = V_abs + E_L
end

equations:
V_abs' = -1/tau_m * V_abs + 1/C_m*I_syn
end

parameter:
E_L mV = -70mV
C_m pF = 250pF
tau_m ms = 10ms
I_syn pA = 10pA
end

input:
spikes <- spike
end

output: spike

update:
integrate(V_abs)
end

end
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,24 @@
A straight forward implementation of the RC circuit approach.
Extends the integrate method with a threshold and fire behaviour.
*/
neuron iaf_reset:
neuron rc_fire:

state:
V_abs mV = 0mV
alias V_m mV = V_abs + E_L
I_syn pA = 0pA
end

equations:
V_abs' = -1/tau_m * V_abs + 1/C_m*I_syn
end

parameter:
E_L mV = -65mV
E_L mV = -70mV
C_m pF = 250pF
tau_m ms = 10ms
alias V_th mV = 55mV + E_L
alias V_reset mV = 10mV + E_L
I_syn pA = 10pA
alias V_th mV = -55mV - E_L
alias V_reset mV = -65mV - E_L
end

input:
Expand All @@ -32,8 +32,9 @@ neuron iaf_reset:
integrate(V_abs)
if V_abs > V_th:
V_abs = V_reset
emit_spike()
end
I_syn = spikes.get_sum()
end


end
47 changes: 47 additions & 0 deletions src/test/resources/tutorial/22_rc_refractory.nestml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/*
A straight forward implementation of the RC circuit approach.
Extends firing model with an additional refractory state. It is entered directly after a spike is fired.
*/
neuron rc_refractory:

state:
V_abs mV = 0mV
alias V_m mV = V_abs + E_L
end

equations:
V_abs' = -1/tau_m * V_abs + 1/C_m*I_syn
end

parameter:
E_L mV = -70mV
C_m pF = 250pF
tau_m ms = 10ms
I_syn pA = 10pA
alias V_th mV = -55mV - E_L
alias V_reset mV = -65mV - E_L
refractory_timeout ms = 5ms
refractory_counts integer = 0
end

input:
spikes <- spike
end

output: spike

update:
if refractory_counts == 0:
integrate(V_abs)
if V_abs > V_th:
V_abs = V_reset
emit_spike()
refractory_counts = steps(refractory_timeout)
end
else:
refractory_counts -= 1
end
end


end
58 changes: 58 additions & 0 deletions src/test/resources/tutorial/23_rc_alpha.nestml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/*
A straight forward implementation of the RC circuit approach.
Extends firing model with an additional refractory state. It is entered directly after a spike is fired.
*/
neuron rc_alpha:

state:
V_abs mV = 0mV
alias V_m mV = V_abs + E_L
g_in pA = 0pA # inputs from the inh conductance
end

equations:
# alpha function for the g_in
g_in'' = -g_in'/tau_syn_in
g_in' = g_in' - g_in/tau_syn_in
I_syn pA = g_in
V_abs' = -1/tau_m * V_abs + 1/C_m*I_syn
end

parameter:
E_L mV = -70mV
C_m pF = 250pF
tau_m ms = 10ms

alias V_th mV = -55mV - E_L
alias V_reset mV = -65mV - E_L
refractory_timeout ms = 5ms
refractory_counts integer = 0
end

input:
spikes <- spike
end

internal:
tau_syn_in ms = 2ms
PSConInit_I real = 1.0 * e / tau_syn_in
end

output: spike

update:
if refractory_counts == 0:
integrate(V_abs)
if V_abs > V_th:
V_abs = V_reset
emit_spike()
refractory_counts = steps(refractory_timeout)
end
else:
refractory_counts -= 1
end
g_in' += PSConInit_I*spikes.get_sum()
end


end

0 comments on commit 3d57787

Please sign in to comment.