-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
0e2d538
commit aaad187
Showing
2 changed files
with
196 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
<?xml version="1.0" encoding="ISO-8859-1"?> | ||
<neuroml xmlns="http://www.neuroml.org/schema/neuroml2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.neuroml.org/schema/neuroml2 https://raw.github.com/NeuroML/NeuroML2/development/Schemas/NeuroML2/NeuroML_v2.3.xsd" id="ProbUDFSynDoc"> | ||
|
||
<!-- Note that order of different LEMS types matters for validation, since the schema defines what order they should appear in --> | ||
|
||
<!-- Reference: | ||
https://doi.org/10.1016/S0306-4522(01)00344-X | ||
Destexhe, A.; Rudolph, M.; Fellous, J.-M. & Sejnowski, T. J. Fluctuating synaptic conductances recreate in vivo-like activity in neocortical neurons Neuroscience, 2001, 107, 13-24 | ||
Original mod source: https://modeldb.science/8115 | ||
--> | ||
|
||
<ComponentType name="Gfluct" | ||
extends="baseVoltageDepPointCurrent" | ||
description="Fluctuating conductance model for synaptic bombardment: Destexhe et al 2001" | ||
> | ||
|
||
<Parameter name="start" dimension="time" description="start time"/> | ||
<Parameter name="stop" dimension="time" description="stop time"/> | ||
|
||
<Parameter name="dt" dimension="time" description="simulation time step"/> | ||
<Parameter name="E_e" dimension="voltage" description="Excitatory conductance reversal potential"/> | ||
<Parameter name="E_i" dimension="voltage" description="Inhibitory conductance reversal potential"/> | ||
|
||
<Parameter name="g_e0" dimension="conductance" description="Average excitatory conductance"/> | ||
<Parameter name="g_i0" dimension="conductance" description="Average inhibitory conductance"/> | ||
|
||
<Parameter name="std_e" dimension="conductance" description="Std dev of excitatory conductance"/> | ||
<Parameter name="std_i" dimension="conductance" description="Std dev of inhibitory conductance"/> | ||
|
||
<Parameter name="tau_e" dimension="time" description="Time constant of excitatory conductance"/> | ||
<Parameter name="tau_i" dimension="time" description="Time constant of inhibitory conductance"/> | ||
|
||
<EventPort name="in" direction="in" description="Note this is not used here. Will be removed in future"/> | ||
|
||
<Exposure name="g_e" dimension="conductance" /> | ||
<Exposure name="g_i" dimension="conductance" /> | ||
|
||
<Dynamics> | ||
<!-- total conductances --> | ||
<StateVariable name="g_e" exposure="g_e" dimension="conductance" /> | ||
<StateVariable name="g_i" exposure="g_i" dimension="conductance" /> | ||
<!-- fluctuating conductances --> | ||
<StateVariable name="g_e1" dimension="conductance" /> | ||
<StateVariable name="g_i1" dimension="conductance" /> | ||
<StateVariable name="i" exposure="i" dimension="current" /> | ||
|
||
<OnEvent port="in"><!--TODO: remove, see above... | ||
<StateAssignment variable="i" value="0"/>--> | ||
</OnEvent> | ||
|
||
<!-- required ? --> | ||
<OnStart> | ||
<StateAssignment variable="i" value="0"/> | ||
<StateAssignment variable="g_e" value="0"/> | ||
<StateAssignment variable="g_i" value="0"/> | ||
<StateAssignment variable="g_e1" value="0" /> | ||
<StateAssignment variable="g_i1" value="0" /> | ||
</OnStart> | ||
|
||
<!-- before start --> | ||
<OnCondition test="t .lt. start"> | ||
<StateAssignment variable="i" value="0"/> | ||
<StateAssignment variable="g_e" value="0"/> | ||
<StateAssignment variable="g_i" value="0"/> | ||
</OnCondition> | ||
|
||
<!-- oup()--> | ||
<OnCondition test="tau_e .neq. 0" > | ||
<!-- let exp_e and std_e be computed for each step: we can't have conditionals inside OnStart, although I could use H etc. to hack it --> | ||
<StateAssignment variable="g_e" value="exp(-dt/tau_e) * g_e1 + ((std_e * sqrt(1 - exp(-2 * dt/tau_e))) * random(1))" /> | ||
</OnCondition> | ||
|
||
<OnCondition test="tau_i .neq. 0" > | ||
<StateAssignment variable="g_i" value="exp(-dt/tau_i) * g_i1 + ((std_i * sqrt(1 - exp(-2 * dt/tau_i))) * random(1))" /> | ||
</OnCondition> | ||
|
||
<!-- original mod says g_e = std_e * grand() but that would immediately get overwritten in the next bit, so we think it's the fluctuating current that is calculated here, g_e1 --> | ||
<OnCondition test="tau_e .eq. 0" > | ||
<StateAssignment variable="g_e1" value="std_e * random(1)" /> | ||
</OnCondition> | ||
<OnCondition test="tau_i .eq. 0" > | ||
<StateAssignment variable="g_i1" value="std_i * random(1)" /> | ||
</OnCondition> | ||
|
||
<OnCondition test="t .geq. start .and. t .lt. stop"> | ||
<StateAssignment variable="g_e" value="g_e0 + g_e1" /> | ||
<StateAssignment variable="g_i" value="g_i0 + g_i1" /> | ||
<StateAssignment variable="i" value="-1 * g_e * (v - E_e) + g_i * (v - E_i)" /> | ||
</OnCondition> | ||
|
||
<!-- after end --> | ||
<OnCondition test="t .geq. stop"> | ||
<StateAssignment variable="i" value="0"/> | ||
<StateAssignment variable="g_e" value="0"/> | ||
<StateAssignment variable="g_i" value="0"/> | ||
</OnCondition> | ||
</Dynamics> | ||
|
||
</ComponentType> | ||
|
||
</neuroml> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
<Lems> | ||
|
||
|
||
<!-- Specify which component to run --> | ||
<Target component="simnet1"/> | ||
|
||
<!-- Include core NeuroML2 ComponentType definitions --> | ||
<Include file="PyNN.xml"/> | ||
<Include file="Cells.xml"/> | ||
<Include file="Networks.xml"/> | ||
<Include file="Simulation.xml"/> | ||
|
||
|
||
<Include file="Gfluct.nml"/> | ||
|
||
|
||
<IF_curr_exp id="IF_curr_exp" cm="1.0" i_offset="0" tau_m="20.0" tau_refrac="5.0" | ||
tau_syn_E="0.5" tau_syn_I="0.5" v_init="-65" v_reset="-65.0" v_rest="-65.0" v_thresh="-55.0"/> | ||
|
||
|
||
<pulseGenerator id="pulseGen0" delay="0ms" duration="30000ms" amplitude="0.15 nA" /> | ||
|
||
<Gfluct id="noisyCurrentSource1" start="0ms" stop="30000ms" dt="0.05ms" E_e="0mV" E_i="-75mV" g_e0="0.0121 uS" g_i0="0.573 uS" std_e="0.003 uS" std_i="0.0066 uS" tau_e="2.728 ms" tau_i="10.49 ms"/> | ||
<Gfluct id="noisyCurrentSource2" start="0ms" stop="30000ms" dt="0.05ms" E_e="0mV" E_i="-75mV" g_e0="0.0121 uS" g_i0="0.573 uS" std_e="0.003 uS" std_i="0.0066 uS" tau_e="2.728 ms" tau_i="10.49 ms"/> | ||
<Gfluct id="noisyCurrentSource3" start="0ms" stop="30000ms" dt="0.05ms" E_e="0mV" E_i="-75mV" g_e0="0.0121 uS" g_i0="0.573 uS" std_e="0.003 uS" std_i="0.0066 uS" tau_e="2.728 ms" tau_i="10.49 ms"/> | ||
|
||
<network id="net1"> | ||
<population component="IF_curr_exp" id="Pop0" type="populationList" size="3"> | ||
<instance id="0"> | ||
<location x="120" y="230" z="567"/> | ||
</instance> | ||
<instance id="1"> | ||
<location x="270" y="450" z="56"/> | ||
</instance> | ||
<instance id="2"> | ||
<location x="54" y="234" z="89"/> | ||
</instance> | ||
<instance id="3"> | ||
<location x="1" y="2" z="3"/> | ||
</instance> | ||
</population> | ||
|
||
|
||
<inputList id="stimInput" component="pulseGen0" population="Pop0"> | ||
<input id="0" target="../Pop0/0/IF_curr_exp" destination="synapses"/> | ||
</inputList> | ||
|
||
<inputList id="noisy1" component="noisyCurrentSource1" population="Pop0"> | ||
<input id="0" target="../Pop0/1/IF_curr_exp" destination="synapses"/> | ||
</inputList> | ||
|
||
<inputList id="noisy2" component="noisyCurrentSource2" population="Pop0"> | ||
<input id="0" target="../Pop0/2/IF_curr_exp" destination="synapses"/> | ||
</inputList> | ||
|
||
<inputList id="noisy3" component="noisyCurrentSource3" population="Pop0"> | ||
<input id="0" target="../Pop0/3/IF_curr_exp" destination="synapses"/> | ||
</inputList> | ||
|
||
</network> | ||
|
||
<Simulation id="simnet1" length="30000ms" step="0.05ms" target="net1"> | ||
|
||
<Display id="display_voltages" title="Voltages" timeScale="1ms" xmin="-2.0" xmax="10020.0" ymin="-68" ymax="-47"> | ||
<Line id="Pop0/0: Vm" quantity="Pop0/0/IF_curr_exp/v" scale="1mV" color="#0000ff" timeScale="1ms"/> | ||
<Line id="Pop0/1: Vm" quantity="Pop0/1/IF_curr_exp/v" scale="1mV" color="#00ff00" timeScale="1ms"/> | ||
<Line id="Pop0/2: Vm" quantity="Pop0/2/IF_curr_exp/v" scale="1mV" color="#ff0000" timeScale="1ms"/> | ||
<Line id="Pop0/3: Vm" quantity="Pop0/3/IF_curr_exp/v" scale="1mV" color="#00ffff" timeScale="1ms"/> | ||
</Display> | ||
|
||
<Display id="display_currents" title="Voltages" timeScale="1ms" xmin="-2.0" xmax="10020.0" ymin="-0.05" ymax="0.6"> | ||
<Line id="Pop0/0: i" quantity="Pop0/0/IF_curr_exp/pulseGen0/i" scale="1nA" color="#0000ff" timeScale="1ms"/> | ||
<Line id="Pop0/1: i" quantity="Pop0/1/IF_curr_exp/noisyCurrentSource1/i" scale="1nA" color="#00ff00" timeScale="1ms"/> | ||
<Line id="Pop0/2: i" quantity="Pop0/2/IF_curr_exp/noisyCurrentSource2/i" scale="1nA" color="#ff0000" timeScale="1ms"/> | ||
<Line id="Pop0/3: i" quantity="Pop0/3/IF_curr_exp/noisyCurrentSource3/i" scale="1nA" color="#00ffff" timeScale="1ms"/> | ||
</Display> | ||
|
||
<OutputFile id="Volts_file" fileName="v_ou.dat"> | ||
<OutputColumn id="v0" quantity="Pop0/0/IF_curr_exp/v"/> | ||
<OutputColumn id="v1" quantity="Pop0/1/IF_curr_exp/v"/> | ||
<OutputColumn id="v2" quantity="Pop0/2/IF_curr_exp/v"/> | ||
<OutputColumn id="v3" quantity="Pop0/3/IF_curr_exp/v"/> | ||
</OutputFile> | ||
|
||
<OutputFile id="Currents_file" fileName="i_ou.dat"> | ||
<OutputColumn id="i0" quantity="Pop0/0/IF_curr_exp/pulseGen0/i"/> | ||
<OutputColumn id="i1" quantity="Pop0/1/IF_curr_exp/noisyCurrentSource1/i"/> | ||
<OutputColumn id="i2" quantity="Pop0/2/IF_curr_exp/noisyCurrentSource2/i"/> | ||
<OutputColumn id="i3" quantity="Pop0/3/IF_curr_exp/noisyCurrentSource3/i"/> | ||
</OutputFile> | ||
|
||
</Simulation> | ||
|
||
</Lems> |