NeuralEnsemble / PyNN

A Python package for simulator-independent specification of neuronal network models.
Other
276 stars 125 forks source link

EIF_cond_alpha_isfa_ista cell giving different results on NEURON #559

Closed pgleeson closed 5 years ago

pgleeson commented 6 years ago

This example produces different results for the EIF_cond_alpha_isfa_ista cell when run on NEURON (green trace):

 python NeuroMLTest_PyNN0.9.py nest -gui

image

 python NeuroMLTest_PyNN0.9.py brian -gui

image

 python NeuroMLTest_PyNN0.9.py neuron -gui

image

NEURON cell model behaviour seems to be highly depend on dt (dt=0.005 used above), whereas NEST and Brian are well behaved with changes to this. NEURON with dt=0.025:

image

appukuttan-shailesh commented 6 years ago

I have reproduced the problem (here) with a small example. As @pgleeson has pointed out, the NEURON implementation of EIF_cond_alpha_isfa_ista seems highly dependent on the timestep, while this rightly isn't so for Brian and NEST: brian nest neuron Shall take a closer look to identify the problem. But that apart, shouldn't we also be concerned about the differences (e.g. in peak amplitudes) between the NEST and Brian implementations (and NEURON, once fixed)?

apdavison commented 6 years ago

There is an open issue for this problem: #266

appukuttan-shailesh commented 6 years ago

Do we have any leads on this? ... where to start off?

And,

shouldn't we also be concerned about the differences (e.g. in peak amplitudes) between the NEST and Brian implementations (and NEURON, once fixed)?

apdavison commented 6 years ago

I would start by looking at the .mod file that implements the AdExp mechanism for NEURON (https://github.com/NeuralEnsemble/PyNN/blob/master/pyNN/neuron/nmodl/adexp.mod). It may be that it can be improved.

However, it may be that there is a fundamental limitation to splitting the integration between the POINT_PROCESS and the built-in NEURON integration of the compartment, in which case we might get better results implementing AdExp as an ARTIFICIAL_CELL in NMODL. This would then require more work on the pyNN.neuron backend (support for CurrentSources would have to be re-done, in particular) - see #10

I suggest checking out the NEURON forum to see if someone else has a good AdEx implementation for NEURON.

Concerning the peak amplitudes, I don't think this is a solvable problem: the exponential term makes this extremely sensitive to differences in integration methods between simulators.

apdavison commented 5 years ago

closing as a duplicate of #266