NeuroML / NeuroML2

This repository hosts the NeuroML 2 Schema, the ComponentType definitions in LEMS and the core documentation of NeuroML2.
https://docs.neuroml.org
GNU Lesser General Public License v3.0
50 stars 24 forks source link

Add new noisy current sources #99

Open pgleeson opened 7 years ago

pgleeson commented 7 years ago

In addition to a NeuroML equivalent for PyNN's NoisyCurrentSource (being discussed here), it would be good to investigate what other types of noisy current sources could/should be added to NeuroML2. This was discussed during this recent exchange on the NeuralEnsemble mailing list.

@rgerkin and @MRIO may be interested in working on this.

MRIO commented 7 years ago

Hi,

Indeed, adding an orstein-uhlenbeck source would be in my personal roadmap (and i may shortly get a student to work on this). There are many statistical advantages of using a process that has a well defined mean (for either estimation of I-F curves or Phase Responses in oscillating cells).

M.

On 13 Dec 2016, at 12:36, Padraig Gleeson notifications@github.com wrote:

In addition to a NeuroML equivalent for PyNN's NoisyCurrentSource (being discussed here https://github.com/NeuroML/NeuroML2/issues/97), it would be good to investigate what other types of noisy current sources could/should be added to NeuroML2. This was discussed during this recent exchange on the NeuralEnsemble mailing list https://groups.google.com/forum/#!topic/neuralensemble/1-vCUWM7su4.

@rgerkin https://github.com/rgerkin and @MRIO https://github.com/MRIO may be interested in working on this.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/NeuroML/NeuroML2/issues/99, or mute the thread https://github.com/notifications/unsubscribe-auth/AHpDFOdBD_GcStKmnJghp7zUuaW160mxks5rHoNBgaJpZM4LLoP9.

rgerkin commented 7 years ago

I've implemented something shown here

MRIO commented 7 years ago

Hi Richard, Cool! Any idea how to best implement control over random seeds? Cheers, M.

On 3 Feb 2017, at 23:44, Richard C Gerkin notifications@github.com wrote:

I've implemented something shown here https://github.com/rgerkin/StochasticityShowcase/blob/rgerkin/NeuroML2/scratch.ipynb — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/NeuroML/NeuroML2/issues/99#issuecomment-277383123, or mute the thread https://github.com/notifications/unsubscribe-auth/AHpDFN7LDAZrAFRR4Olum0I4SUe43Ywtks5rY63GgaJpZM4LLoP9.

rgerkin commented 7 years ago

@MRIO I think a seed attribute can be added to the Simulation element in the xml file, based on the example here

MRIO commented 7 years ago

That covers all my use cases, i think! Thanks heaps, M.

pgleeson commented 7 years ago

@MRIO bear in mind that that's one single seed value for all elements of the simulation, and the same seed used for jNeuroML and NEURON will give different results, as random numbers are calculated by different libraries.

@rgerkin nice work. One minor point, I think the labels for the red and green traces in the notebook need to be switched.

Also, it might be better once the current switches on at t=start to jump the current to the value mean, and let it drift from there, as opposed to keeping at zero and slowly drifting up to mean:

screen shot 2017-02-07 at 11 34 30
rgerkin commented 7 years ago

@pgleeson Good catch; I've fixed the labels.

As for whether the mean should be reached immediately or gradually, I thought about that when I was implementing it and initially decided to let it rise gradually so that there was only one process being described. But I guess the more natural use case is to have it be more like a square pulse with the desired mean super-imposed on an OU process with mean 0. Then it would both rise and fall instantly when the pulse is turned on and off, respectively. I've modified it accordingly, as shown here.

pgleeson commented 7 years ago

Thanks for making those updates @rgerkin. I do think that it's more natural to assume in this pulse like case that the current will instantly have a mean of that value; if the stdev was << mean it would take a long time to rise to the mean, when in fact an IClamp with a small amount of noise is probably what's desired.

Also:

MRIO commented 7 years ago

Thanks for making those updates @rgerkin https://github.com/rgerkin. I do think that it's more natural to assume in this pulse like case that the current will instantly have a mean of that value; if the stdev was << mean it would take a long time to rise to the mean, when in fact an IClamp with a small amount of noise is probably what's desired.

Second that. This is in fact my main use case.

Thanks for your efforts!

M.