New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extended rate-model framework #858

Merged
merged 47 commits into from Feb 6, 2018

Conversation

Projects
None yet
6 participants
@janhahne
Contributor

janhahne commented Nov 21, 2017

This PR extends the functionality of the rate-model framework by several options that are needed to for more complex rate models. All extensions and changes are implement such that previous simulation scripts do not need to be adjusted and all added models are actually needed in ongoing projects. The credit of this PR mostly belongs to @MSenden

Quick overview:

  • the rate_neuron_ipn model now has a parameter lambda for the passive decay rate and the possibility to restrict the rate to positive values via a boolean parameter rectify_output.

  • the rate_neuron_ipn class is extended such that it allows to build models with multiplicative coupling with different factors for excitatory and inhibitory coupling. The template class now has three functions: nonlinearities_.input (previously operator()), nonlinearities_.mult_coupling_ex and nonlinearities_.mult_coupling_in. So the type of multiplicative coupling can be defined in the template derived classes. return 1; achives nonmutliplicative coupling. In order to keep the number of models low the multiplicative coupling version of a model can be implemented in the same NEST model as the nonmultiplicative coupling version and can be switched on via the boolean mult_coupling (see lin_rate.h)

  • A new template class parrot_rate_neuron was added. The functionality is similar to that of parrot_neuron but for secondary events. See the documentation in the file for details.

  • the threshold_lin_rate model is now implemented in a more general way and allows further settings.

  • three additional models (gauss_rate, sigm_rate and sigmoid_rate) have been added.

  • a decision making example that uses some of the new functionality was added

  • the rate model unit test was extended to check the lin_rate model with multiplicative coupling.

jschuecker and others added some commits Nov 2, 2017

@janhahne

This comment has been minimized.

Show comment
Hide comment
@janhahne

janhahne Nov 21, 2017

Contributor

I suggest @ddahmen and @mschmidt87 as reviewers.

Contributor

janhahne commented Nov 21, 2017

I suggest @ddahmen and @mschmidt87 as reviewers.

@ddahmen

Very nice work @MSenden , @janhahne , @jschuecker! It is great to see that people have developed so many new features for rate models in NEST. I think you integrated them in nice and concise way.

I have a few minor suggestions regarding naming of models and definitions of parameters and their defaults.

In addition, I have two main points concerning this PR (details: see comments in files):

  1. Is the new model 'parrot_rate_neuron' necessary as a separate class? Is the name maybe misleading as its output is a transformed version of its input? I would also like to see what @heplesser thinks about this issue.

  2. I have the feeling that the splitting into excitatory and inhibitory inputs in rate_neuron_ipn/opn changes the neuron behavior for linear_summation=True with respect to the implementation in nest::master. Please check whether my intuition is correct. If so, you would need to find another way of implementing this, as your proposal is a bit unintuitive because excitatory and inhibitory inputs would not be summed linearly for linear_summation=True. This actually would mean that many neuron models would not be captured anymore by the template class. I hope that I am wrong ;)

Show outdated Hide outdated models/rate_neuron_ipn_impl.h
Show outdated Hide outdated models/rate_neuron_ipn_impl.h
Show outdated Hide outdated models/rate_neuron_opn.h
Show outdated Hide outdated models/rate_neuron_opn_impl.h
Show outdated Hide outdated models/rate_neuron_opn_impl.h
insert_( names::rate, &nest::sigmoid_rate_ipn::get_rate_ );
insert_( names::noise, &nest::sigmoid_rate_ipn::get_noise_ );
}

This comment has been minimized.

@ddahmen

ddahmen Jan 12, 2018

Contributor

no parrot for this neuron model?

@ddahmen

ddahmen Jan 12, 2018

Contributor

no parrot for this neuron model?

Show outdated Hide outdated models/sigmoid_rate.h
Show outdated Hide outdated models/tanh_rate.h
Show outdated Hide outdated models/threshold_lin_rate.h
Show outdated Hide outdated models/parrot_rate_neuron.h
@janhahne

This comment has been minimized.

Show comment
Hide comment
@janhahne

janhahne Jan 15, 2018

Contributor

@ddahmen Thank you for the careful review. I resolved some of your requests with the two new commits. Regarding some other points I replied to your comments and wait for further input from you, the second reviewer @heplesser or @MSenden.

I will think about how to resolve the inconsistency/loss of functionality due to the input splitting/multiplicative coupling.

Contributor

janhahne commented Jan 15, 2018

@ddahmen Thank you for the careful review. I resolved some of your requests with the two new commits. Regarding some other points I replied to your comments and wait for further input from you, the second reviewer @heplesser or @MSenden.

I will think about how to resolve the inconsistency/loss of functionality due to the input splitting/multiplicative coupling.

@ddahmen

I approve this pull request. Residual open issues are concerning naming problems and whether all rate neurons should have parrot versions already integrated. These issues should be discussed with @heplesser .

@heplesser

@janhahne Nice work, apologies for my late response. My comments mostly concern names and documentation. But @ddahmen remarked somewhere that the separate handling of ex and in changed behavior relative to earlier versions. That is problematic. Could you comment?

Show outdated Hide outdated models/CMakeLists.txt
Show outdated Hide outdated models/CMakeLists.txt
Show outdated Hide outdated models/gauss_rate.h
Show outdated Hide outdated models/gauss_rate.h
Show outdated Hide outdated models/lin_rate.h
Show outdated Hide outdated models/parrot_rate_neuron.h
Show outdated Hide outdated models/parrot_rate_neuron.h
Show outdated Hide outdated models/parrot_rate_neuron_impl.h
Show outdated Hide outdated models/sigmoid_rate.h
Show outdated Hide outdated pynest/examples/rate_neuron_DM.py
@janhahne

This comment has been minimized.

Show comment
Hide comment
@janhahne

janhahne Jan 26, 2018

Contributor

@heplesser Thank you for the careful review! I addressed all your comments, please have another look.

The inconsistency was removed with one of the commits following on Davids suggestion: Now the behavior is completely consistent with NEST 2.14.0 (in case of non-multiplicative coupling - which is the only coupling available in 2.14.0 - the exc+inh input is summed up before the nonlinearity is applied).

Contributor

janhahne commented Jan 26, 2018

@heplesser Thank you for the careful review! I addressed all your comments, please have another look.

The inconsistency was removed with one of the commits following on Davids suggestion: Now the behavior is completely consistent with NEST 2.14.0 (in case of non-multiplicative coupling - which is the only coupling available in 2.14.0 - the exc+inh input is summed up before the nonlinearity is applied).

@heplesser

This comment has been minimized.

Show comment
Hide comment
@heplesser

heplesser Feb 6, 2018

Contributor

@janhahne @MSenden @jschuecker @ddahmen Thanks a lot for your efforts! This looks fine now and I will merge it right away.

Contributor

heplesser commented Feb 6, 2018

@janhahne @MSenden @jschuecker @ddahmen Thanks a lot for your efforts! This looks fine now and I will merge it right away.

@heplesser heplesser merged commit 7d4b03c into nest:master Feb 6, 2018

1 check passed

continuous-integration/travis-ci/pr The Travis CI build passed
Details

@janhahne janhahne deleted the janhahne:merge_grossberg branch Feb 7, 2018

@otizonaizit otizonaizit referenced this pull request Feb 20, 2018

Closed

Review Request: Senden Schuecker Hahne Diesmann Goebel #46

7 of 9 tasks complete
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment