Skip to content

Conversation

med-ayssar
Copy link
Contributor

Fix for #3532

@med-ayssar med-ayssar changed the title Fix issue: #3532: Disconnect given compressedSpikes Fix issue: #3532: Disconnect issue with CompressedSpikes:ON/Off Jul 20, 2025
@gtrensch gtrensch added T: Bug Wrong statements in the code or documentation S: Normal Handle this with default priority labels Jul 25, 2025
@gtrensch gtrensch added this to Kernel Jul 25, 2025
@github-project-automation github-project-automation bot moved this to In progress in Kernel Jul 25, 2025
@heplesser heplesser added S: High Should be handled next I: No breaking change Previously written code will work as before, no one should note anything changing (aside the fix) and removed S: Normal Handle this with default priority labels Aug 7, 2025
@heplesser
Copy link
Contributor

@med-ayssar Thanks for your detective work and the PR! I will look at it in detail asap.

Copy link
Contributor

@heplesser heplesser left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@med-ayssar Thanks for the PR! I am not entirely sure I follow the logic around nth_equal(), see comments below.

I also wonder if, for the uncompressed case, we should not take a different approach. In that case, I believe, we simply need to run through all connections of a given synapse type linearly and disconnect the first one for which source and target match, and which has not yet been disconnected. I guess that means parallel iteration through source and target tables. The split into find_first_source() and find_first_target() does not make sense in that case.

We also need some tests, including tests where there are multiple connections between the same source-target pair and we delete one at a time.

return lcid;
}
++pos;
res = nth_equal( std::next( res.second ), end, value, pos );
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't get your logic here with counting pos up and then doing pos rounds in nth_equal(). Since you call nth_equal() with first == std::next( res.second ), aren't you already looking for the next occurence of value?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right, I was thinking to put the nth_equal function in some different namespace or file. The idea was just to make it too general, trying to find thenth element equal to val.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will try applying your suggestion and let you know ASAP!

};
size_t pos = 0;
auto res = nth_equal( begin, end, value, pos );
if ( !res.first )
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to NEST coding standards, please write out not, and, or. A bit surprised that our CI setup didn't detect his, @terhorstd.

@github-project-automation github-project-automation bot moved this from In progress to PRs pending approval in Kernel Aug 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
I: No breaking change Previously written code will work as before, no one should note anything changing (aside the fix) S: High Should be handled next T: Bug Wrong statements in the code or documentation
Projects
Status: PRs pending approval
Development

Successfully merging this pull request may close these issues.

3 participants