Frequently asked questionsยถ
Here are some answered questions that may come to mind while reading this guide. Many of them have been asked by real users in the past!
Terminology dictionaryยถ
Term |
EDEN |
Comments |
||||
---|---|---|---|---|---|---|
Point neuron |
|
|
Whatโs not a cable cell |
Whatโs not a |
A neuron model with the morphology largely simplified out. |
|
Multi-compartment cell |
|
whatโs not an |
All of them really |
cable cell |
|
A neuron model of multiple finely detailed finite elements. |
finite element |
compartment |
compartment, segment |
compartment |
control volume (CV) |
compartment |
A piece of neuron whose state is assumed to be uniform. |
Tracing point |
A |
|
Same as compartment |
|
Same as compartment |
A |
Neurite span |
|
section |
branch |
section |
A distinct unbranched section of neuritic cable. |
|
Arbitrary dependence |
|
|
|
|
An continuous-time dependency of a variable on any other variable. |
|
Aggregate flux |
|
|
|
|
Distinct flows of chemical species, supplied by various mechanisms. |
|
Spike train |
TBD |
Spiking cell |
|
A disembodied source of spikes |
||
Time series |
TBD |
|
A disembodied evolving quantity |
Using the simulatorยถ
What units are simulation results recorded in?ยถ
The unspoken NeuroML convention is to use SI-derived units that are products of the seven base SI units. Keep in mind that that the typical real-life unit for concentration is \({mol}/L\) whereas the SI unit is \({mol}/{m^3}\)!
If you prefer quantities to be recorded in specific units, refer to Extended input-output options.
The simulation output is too large! How can I record values every millisecond or so?ยถ
Using <๐ด๐๐๐๐พ๐๐๐๐๐๐ต๐๐๐>.
The neuron potential recording is too large! How can I record only when spikes happened?ยถ
Using <๐ด๐๐๐๐๐พ๐๐๐๐๐๐ต๐๐๐> or <๐ด๐๐๐๐ด๐๐๐๐๐พ๐๐๐๐๐๐ต๐๐๐>.
How can I have the same result, every time I run my randomised simulation?ยถ
EDEN does have a provision for that; set the seed
attribute in your <๐ด๐๐๐๐พ๐๐๐๐๐๐ต๐๐๐> tag. The generated random numbers should be the same at least per model contents, and program version.
But this is not the end of the story! There are ways for a small perturbation to slip through and be amplified (in principle) indefinitely by chaotic systems, like neural networks tend to be.
The ways that perturbations can slip in the numbers are allowed by the finite accuracy in out computers and the resulting round-off that takes place during calculations, and caused by carrying out the calculations differently at times.
These are some factors that can lead to calculations being run differently:
Different (versions of) the computersโ operating systems and code generators;
The need for speed that pushes us to do the processing in whichever way it is convenient on each machine;
A different order of summation, that happens they are split over multiple cores in a computer;
The distribution of model parts between computers in a multi-machine simulation.
To study the issue and potential causes further, refer to a web search on โfloating point determinismโ (for example, โโDeterminism and Reproducibility in Large-Scale HPC Systemsโ).
In conclusion, measures to attempt deterministic simulation may get the output to be close enough in between simulation runs, but this is regrettably not guaranteed within practical limits.
The good news is that a neural networkโs function should not rely on one specific pick of random samples, otherwise the random numbers wouldnโt be random (being part of the model themselves). It follows that if a modelโs correct behaviour appears only for a small set of random seed
โs, then that is the modelโs fault.
If some random number sequences are of critical importance (to replicate findings exactly), consider writing down the exact waveforms and then playing them back with EDENโs <๐ด๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐> extension to NeuroML, in place of the places where random()
would be used.
How should I use EDEN on a (MPI) computer cluster?ยถ
Just use the same command line as usual on all processes launched, targeting the NeuroML file to run. Refer to Building for MPI for how to build from source on a cluster.
NeuroML resourcesยถ
Where can I find NeuroML models?ยถ
Most published NeuroML models can be found in the following places:
NeuroML-DB for a systematised database of neuron and mechanism models, and a few network models;
Open Source Brain, for more diverse networks and component models in NeuroML, and also other technologies;
NeuroML models in the ModelDB. Browse also the entire ModelDB for lots of models that could be ported to NeuroML.
See also the NeuroML guide on the subject.
Which other tools can I use NeuroML with?ยถ
The official NeuroML guide provides an up-to-date list of these tools:
Setting up and running modelsยถ
What is โdiscretisationโ or โcompartmentsโ and how does it affect my model?ยถ
Refer to the โDiscretisationโ section and try the โsimple cableโ exercise exercise, on the chapter on spatially-modelled neurons. What usually happens is:
Having too large compartments shows as excessive damping (or underestimation) with regard to spatially-sensitive effects: namely spike propagation, and the contribution of point processes like synapses and probes to the neuronโs state.
On the other hand, having too small compartments may stress the numerical methods, over- or undershooting due to numerical round-off when thedifferences become tiny.
Generally, simulators donโt like handling multiple timescales; keep things as rough as they still let your model work as designed.
How do I add calcium-modulated ion channels?ยถ
With a custom LEMS component.
How do I add Ornstein-Uhlenbeck noise?ยถ
With a custom LEMS component.
How do i add other ion-modulated ion channels or other mechanisms (modulated by possibly other quantities)?ยถ
With EDENโs LEMS extension <๐ ๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐>.
How do I control mechanisms with a single โglobalโ variable?ยถ
With <๐ ๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐๐>s that point to the same single quantity (that can be on an abstract cell or wherever).
How do I explicitly set some variables on every single timestep?ยถ
By keeping a state variable timeSince
and adding a tag like:
<OnCondition test="t >= timeSince + (one timestep)">
... update things ...
<StateAssignment variable="timeSince" value="t"/>
</OnCondition>
See also the the OU noise example which updates the state variable i
following a random walk.
EDEN and many other NeuroML-capable simulators also run <OnCondition test="(something unconditional)">
on every timestep which saves one state variable, but itโs not part of the specification. Expect discrete updates to become part of the specification some day.
Where can I lean more about
Writing LEMS equationsยถ
How do I add normally distributed random variables in my LEMS equations?ยถ
A simple way is the Box-Muller transform. Refer to the OU noise example for details.
How do I use the sgn(x) function in expressions?ยถ
Use \(2*H(x) - 1\) instead, and request the feature if it would help a lot to have it.
What does log
mean in equations?ยถ
It stands for the natural logarithm (and is an alias for ln
), so that \(log(e) = 1\). If you prefer the decimal logarithm, log10
can be used instead.
Troubleshootingยถ
Why is my spatial cell behaving exactly as if it was a single compartment?ยถ
Either:
the cytoplasmic
<resistivity>
value
is too low;the lengths of neurites in the
Morphology
are too small;the membraneโs
<specificCapacitance>
is too low;the channelsโ conductance is too high;
or (a cable in) the whole neuron was specified to be a single compartment with the โunbranched sectionโ directive, inadvertently.
My NeuroML model behaves very differently on EDEN compared to when it runs on e.g. NEURON via jNeuroML !ยถ
Please contact us to track down the issue and provide fixes and options.
When I use <
in LEMS conditions, I get XML errors!ยถ
Unfortunately this character annoys XML. Use the FORTRAN spelling .lt.
(less than) or .le.
(less/equal) instead, or escape the character with <
(ugly).
What is Eden capable of?ยถ
Can EDEN run Pong?ยถ
Yes! Check out the example.
Does EDEN support Blockchain?ยถ
In NeuroML, anatomically detailed cells comprise spans of neurite. Each such span can be considered as a chain of interlinked โblocksโ, also called โcompartmentsโ in our terminology. In that sense, EDEN can simulate multiple blockchains within even a single neuron.
Does EDEN support Artificial Intelligence?ยถ
Artificial Intelligence (A.I.) may be implemented in various ways; one thatโs especially bio-inspired is spiking neural networks, whose activity can be simulated in silico using EDEN. Since EDEN is primarily a scientific tool, it is up to the modeller to design effective A.I. architectures.
Can EDEN run Large Language Models?ยถ
As long they can be described as spiking neural networks, they can run. The attention mechanism is not quite SNN-like, but it may be implementable in LEMS. An example is in development.
What does Eden not do, and what are the workarounds?ยถ
Recording <DerivedVariable>
โsยถ
Instead, add a shadow <StateVariable>
for each <DerivedVariable>
; then for each shadow state variable, add a <OnCondition test="1 == 1">
with a <StateAssignment>
of the shadow variable to the DerivedVariable
โ. (Recording <DerivedVariable>
โs will be supported soon.)
<Regime>
โsยถ
Instead, a <StateVariable>
can be used to indicate the type of the regime, with the affected <DerivedVariable>
โs becoming <ConditionalDerivedVariable>
โs.
<Display>
elements in <Simulation>
ยถ
Instead, use <OutputFile>
and display with your preferred graphing system, as shown in the guide.
<doubleSynapse>
โs and <compositeInput>
โsยถ
Instead, merge the involved <ComponentType>
โs into a single LEMS component that includes the dynamics of all parts, and exposes their summed influence.