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ยถ

Different names for different simulatorsยถ

Term

EDEN

NEURON

GENESIS

Arbor

BRIAN

Comments

Point neuron

<ComponentType extends="baseCell">

ARTIFICIAL_CELL

Whatโ€™s not a cable cell

Whatโ€™s not a SpatialNeuron

A neuron model with the morphology largely simplified out.

Multi-compartment cell

<cell>

whatโ€™s not an ARTIFICIAL_CELL

All of them really

cable cell

SpatialNeuron

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 <segment>'s <proximal> and <distal>

pt3d

Same as compartment

point or segment for a pair

Same as compartment

A (x,y,z,d) data point for a traced neurite.

Neurite span

sao864921383

section

branch

section

A distinct unbranched section of neuritic cable.

Arbitrary dependence

<VariableReference>

POINTER

addmsg

linked

An continuous-time dependency of a variable on any other variable.

Aggregate flux

Multiflux

WRITE

addmsg

WRITE

summed

Distinct flows of chemical species, supplied by various mechanisms.

Spike train

<spikeArray>, <EdenEventSetReader>

VecStim

TBD

Spiking cell

SpikeGeneratorGroup and others

A disembodied source of spikes

Time series

<EdenTimeSeriesReader>

Vector.play()

TBD

value_name(x,t)

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 &lt; (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.