Skip to content
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

Review semantics of symmetric_pairwise_bernoulli #3288

Open
heplesser opened this issue Aug 12, 2024 · 2 comments
Open

Review semantics of symmetric_pairwise_bernoulli #3288

heplesser opened this issue Aug 12, 2024 · 2 comments
Labels
I: Behavior changes Introduces changes that produce different results for some users S: Normal Handle this with default priority stale Automatic marker for inactivity, please have another look here T: Discussion Still searching for the right way to proceed / suggestions welcome

Comments

@heplesser
Copy link
Contributor

heplesser commented Aug 12, 2024

The symmetric_pairwise_bernoulli connection rules prohibits autapses and requires allow_multapses==true. It also requires p < 1. These constraints are not entirely plausible.
Furthermore, is p is very close to 1, each connection is created twice. Is this really what we want? If so, it should be documented more clearly.

I also seems curious that even though the rule's name explicitly includes symmetric, one still needs to pass 'make_symmetric': True in the conn_spec.

Here is a small example:

n = nest.Create('parrot_neuron', 3)
nest.Connect(n, n, {'rule': 'symmetric_pairwise_bernoulli', 'p': .999999, 
                    'allow_autapses': False, 'make_symmetric': True})
print(nest.GetConnections())

 source   target   synapse model   weight   delay 
-------- -------- --------------- -------- -------
      1        2  static_synapse    1.000   1.000
      1        3  static_synapse    1.000   1.000
      1        2  static_synapse    1.000   1.000
      1        3  static_synapse    1.000   1.000
      2        1  static_synapse    1.000   1.000
      2        1  static_synapse    1.000   1.000
      2        3  static_synapse    1.000   1.000
      2        3  static_synapse    1.000   1.000
      3        1  static_synapse    1.000   1.000
      3        2  static_synapse    1.000   1.000
      3        1  static_synapse    1.000   1.000
      3        2  static_synapse    1.000   1.000
@heplesser heplesser added T: Discussion Still searching for the right way to proceed / suggestions welcome S: Normal Handle this with default priority I: Behavior changes Introduces changes that produce different results for some users labels Aug 12, 2024
@github-project-automation github-project-automation bot moved this to To do (open issues) in Kernel Aug 12, 2024
@jhnnsnk
Copy link
Contributor

jhnnsnk commented Aug 13, 2024

It could also be an option to just get rid of this rule and add the flag make_symmetric to the generic pairwise Bernoulli rule with the default being False. Thinking about further generalization: Are there use cases for other rules where symmetric connections might also be useful?

Copy link

Issue automatically marked stale!

@github-actions github-actions bot added the stale Automatic marker for inactivity, please have another look here label Oct 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
I: Behavior changes Introduces changes that produce different results for some users S: Normal Handle this with default priority stale Automatic marker for inactivity, please have another look here T: Discussion Still searching for the right way to proceed / suggestions welcome
Projects
Status: To do
Status: To do (open issues)
Development

No branches or pull requests

2 participants