Closed pgleeson closed 5 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:
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)?
There is an open issue for this problem: #266
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)?
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.
closing as a duplicate of #266
This example produces different results for the EIF_cond_alpha_isfa_ista cell when run on NEURON (green trace):
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: