AllenInstitute / AllenSDK

code for reading and processing Allen Institute for Brain Science data
https://allensdk.readthedocs.io/en/latest/
Other
346 stars 151 forks source link

units of GLIF parameters hard to find #33

Open awakenting opened 8 years ago

awakenting commented 8 years ago

Hey,

first I have a question: Is it true that the parameters that you get from get_neuron_config() are the fitted values as described by the fitting procedure in the glif white paper ?

Further I wanted to suggest to put the units of the parameters maybe into a second dictionairy with the same keys as the neuron_config dict because if you overlooked them on the website, as I did, it's not so obvious where to find them. Another alternative that I find more intuitive would be the api docs.

Also, I couldn't figure out yet what to do with the neuron.coeffs (also returned by get_neuron_config()), do I have to multiply them to the parameters with the same name ? Did I just miss something in the white paper ?

Cheers, awakenting

corinneteeter commented 8 years ago

Thanks for catching our lack of unit documentation. We will take care of that in a future release. All units are in SI (International System of Units).

The values fit via optimization are the values multiplied by the coefficients (as you mention in your question). We optimize the coefficients not the actual value. This gives a quick idea of how much the value changed from the original value.

awakenting commented 8 years ago

Thanks for the quick answers, it already helped a lot. So although I saw that the coefficients "a" and "b" are always equal to 1 so that I can ignore them in practice, I wanted to point out that I'm still confused about which parameter they belong to. My guess would be that they belong to the voltage_reset_method which does have two parameters "a" and "b" when the method is "v_before" (see here). But there are also parameters a and b here.

What confuses me, is that "a" and "b" don't appear in the white paper as parameters for the voltage reset but instead as parameters for the threshold dynamics (b_s, b_v and a). Those appear in the api parameters but with appropriate suffixes (e.g. here). I would find a clarification here in the api very useful.

dyf commented 7 years ago

Agreed, some API cleanup and documentation is a good idea. We're in the process of doing this internally now and will be updating the GLIF simulator early next year.

The coefficients of a and b are always equal to 1 because we do not optimize them for any of our models right now. You can see how they are used by taking a look at the code:

https://github.com/AllenInstitute/AllenSDK/blob/master/allensdk/model/glif/glif_neuron_methods.py#L263 https://github.com/AllenInstitute/AllenSDK/blob/master/allensdk/model/glif/glif_neuron_methods.py#L479 https://github.com/AllenInstitute/AllenSDK/blob/master/allensdk/model/glif/glif_neuron_methods.py#L515

As an aside -- I now see that there's a bug in dynamics_threshold_three_components_forward. th_t0 should probably be threshold_t0.

reset_voltage_v_before does have two arguments a and b, but these are poorly named. They are just linear scaling parameters applied to threshold. The a and b coefficients of the optimizer are meant to be coefficients of voltage and threshold components of the dynamics equations.

Sorry for the confusion. We'll be cleaning this up and improving test coverage for this early next year. If you join our Gitter channel you'll get a notification when that happens.
https://gitter.im/AllenInstitute/AllenSDK