-
Notifications
You must be signed in to change notification settings - Fork 391
Add support for axonal delays #2989
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
Open
JanVogelsang
wants to merge
129
commits into
nest:master
Choose a base branch
from
JanVogelsang:stdp_long_axonal_delays
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+4,365
−1,328
Open
Changes from 82 commits
Commits
Show all changes
129 commits
Select commit
Hold shift + click to select a range
101a5cc
Handle axonal delay in original stdp-pl synapse
suku248 bb37f53
Add first version of framework for STDP with long axonal delay
0bbfc27
Use ring buffer to temporarily store spike data for retrospective cor…
suku248 7362c26
Added stdp-pl python test and fixed postsynaptic trace history cleanu…
JanVogelsang 1e73b4c
Adding python test for stdp with axonal delays and fixing correction-…
JanVogelsang 811f18e
Applied clang-format v13
JanVogelsang 92a0ca0
Made stdp test runnable
JanVogelsang e69c17c
Improved stdp pl synapse hom test
JanVogelsang 78aadfa
Merged master
JanVogelsang 9d1729e
Update stdp_pl_synapse_hom_ax_delay.h
JanVogelsang dee2589
Fixed formatting
JanVogelsang cd6887b
Merge branch 'stdp_long_axonal_delays' of github.com:JanVogelsang/nes…
JanVogelsang b624ad5
Removed old tests
JanVogelsang d76f654
Made whole kernel axonal-delay aware
JanVogelsang 1e171b0
Fixed issues with min and max delays
JanVogelsang 780915b
Fixed default delays
JanVogelsang 0f91f45
Improved BadDelay exception
JanVogelsang c2dbd84
Improved stdp bugfix
JanVogelsang bf0f6fc
Fixed issues with correction-based STDP
JanVogelsang 75a870c
Fixed issues with correction-based STDP
JanVogelsang c9be932
Fixed issues with correction-based STDP
JanVogelsang cf704e6
Added detailed timers
JanVogelsang 5f60ede
Added stopwatch for time spent for correction
JanVogelsang 68d3a93
Added ignore and fire neuron and collecting number of corrections
JanVogelsang 9731013
Added ignore and fire neuron
JanVogelsang c447b9f
Fixed ignore and fire for corrections
JanVogelsang ed5147e
Reducing correction entry vector size when clearing
JanVogelsang cb83c25
Fixing detailed timers
JanVogelsang 0f540fb
Fixing detailed timers
JanVogelsang 16e68d4
Fixing detailed timers
JanVogelsang e90d973
Fixing detailed timers
JanVogelsang 4f70a06
Merge remote-tracking branch 'nest-master/master' into stdp_long_axon…
JanVogelsang eec3e7b
Fixing bugs related to the addition of axonal delays into the kernel
JanVogelsang f0e183b
Fixing bugs
JanVogelsang 4222534
Fixed remaining bugs
JanVogelsang 4fb5665
Merge remote-tracking branch 'nest-master/master' into stdp_long_axon…
JanVogelsang bd77090
Merging master and fixing format
JanVogelsang be79118
Fixed python formatting
JanVogelsang 7531a9e
Fixed models
JanVogelsang 5ef7af8
Fixed remaining issues in models
JanVogelsang fc5677c
Fixed remaining issues in models
JanVogelsang d086729
Fixed sonata
JanVogelsang adabcaf
Merge remote-tracking branch 'nest-master/master' into stdp_long_axon…
JanVogelsang 7144093
Merged master
JanVogelsang fc5474d
Fixed black fomatting
JanVogelsang fbec6c2
Modified archiving node to work with NESTML
JanVogelsang 371029a
Added stdp power-law synapse with homogeneous axonal delays
JanVogelsang 3b84bf1
Added many-to-one example to generate results for the paper
JanVogelsang 71c3a48
Added many-to-one example to generate results for the paper and some …
JanVogelsang 76f47db
Removed grayscale versions of figures
JanVogelsang 227a0bb
Merge remote-tracking branch 'nest-master/master' into stdp_long_axon…
JanVogelsang 0a8a2f4
Added more results
JanVogelsang 2f0fa6d
Merged master
JanVogelsang 0806b1f
Merged master
JanVogelsang 96c082c
Merged master
JanVogelsang b32ceea
Removed SpikeData from CorrectionEntry class
JanVogelsang f6000fb
Removed SpikeData from CorrectionEntry class
JanVogelsang 9b50af3
New results
JanVogelsang c9c9391
New results
JanVogelsang 7b38dde
Fixed detailed timers
JanVogelsang 73ac032
Generated plots for presentation
JanVogelsang 66a019a
Cleanup
JanVogelsang 0bbf711
Added axonal delays as a member to connection class activated by dema…
JanVogelsang ebaa796
Updated plots
JanVogelsang 343c290
Merge branch 'refs/heads/stdp_long_axonal_delays_paper' into stdp_lon…
JanVogelsang 0a1fee5
Cleanup
JanVogelsang 5564296
Cleanup
JanVogelsang e5223ef
Merge remote-tracking branch 'refs/remotes/nest-master/master' into s…
JanVogelsang 5e88d27
Merging master
JanVogelsang bd9ef84
Merge branch 'refs/heads/nest-master' into stdp_long_axonal_delays
JanVogelsang 120bc78
Cleanup
JanVogelsang c9b7df7
Black formatting
JanVogelsang d58bf7d
Fixed layer implementation
JanVogelsang ed26325
Fixing tests
JanVogelsang bf8a30a
Fixed formatting
JanVogelsang 4d84321
Removed debugging files
JanVogelsang edefa0a
Bugfixes
JanVogelsang 18b74b5
Bugfixes
JanVogelsang b050da0
Bugfixes
JanVogelsang cca3d98
Now throwing an exception if connections change during simulation and…
JanVogelsang bda2f0b
Merge branch 'stdp_long_axonal_delays' of github.com:JanVogelsang/nes…
JanVogelsang e137c86
Added docstring for sizes of newly introduces bitfields
JanVogelsang 5fdd66a
Applied suggestions
JanVogelsang 79304c2
Merge remote-tracking branch 'nest-master/master' into stdp_long_axon…
JanVogelsang 7d3a2a8
Applied suggestions
JanVogelsang 24a1005
Added documentation, example, additional tests, and improved user int…
JanVogelsang 81b913e
Formatting
JanVogelsang 7446f15
Formatting
JanVogelsang 5fbc81d
Merge remote-tracking branch 'nest-master/master' into stdp_long_axon…
JanVogelsang e4cc119
Merged master
JanVogelsang 73bdc9a
Bugfixes
JanVogelsang 4480839
add modified content
jessica-mitchell 7860494
add indexing to new files
jessica-mitchell 4ea9718
rm notebook
jessica-mitchell 9091464
update image
jessica-mitchell 4b6e7d2
Bugfixes
JanVogelsang b2ae907
Merge branch 'stdp_long_axonal_delays' of github.com:jessica-mitchell…
JanVogelsang 9b38135
Merge branch 'jessica-mitchell-stdp_long_axonal_delays' into stdp_lon…
JanVogelsang edaea29
Adjusted docs and now supporting ax-delay synapse and arbitrary neuro…
JanVogelsang bfb3f61
Fixed spatial implementation
JanVogelsang c57da34
Merge branch 'master' into stdp_long_axonal_delays
JanVogelsang d016563
Formatting
JanVogelsang 6532f98
Merge branch 'stdp_long_axonal_delays' of github.com:JanVogelsang/nes…
JanVogelsang 6958b3a
Bugfix
JanVogelsang f2b004a
Adjusted SP tests
JanVogelsang b435e30
Minor changes
JanVogelsang 37e54a2
Fixed weight correction for stdp synapses with axonal delays for edge…
JanVogelsang 17844c0
Improved STDP with axonal delays test
JanVogelsang a6efaeb
Improved STDP with axonal delays tests
JanVogelsang b91389f
Merge remote-tracking branch 'nest-master/master' into stdp_long_axon…
JanVogelsang c475fbd
Merge remote-tracking branch 'nest-master/master' into stdp_long_axon…
JanVogelsang c38085c
Fixed remaining edge case for axonal delay implementation
JanVogelsang 2b8c9ae
Uncommented debugging output
JanVogelsang 5302f09
Fixed STDP pl test comments
JanVogelsang 223910f
Fixed remaining edge case for axonal delay implementation
JanVogelsang 80ac0af
Added ax-delay support to iaf_psc_delta; added edge cases to stdp ax-…
JanVogelsang 20bee12
Update doc/htmldoc/synapses/delays.rst
JanVogelsang 1c1a9b3
Merge remote-tracking branch 'nest-master/master' into stdp_long_axon…
JanVogelsang f9b6d77
Generated new results
JanVogelsang 21ef67f
Merge branch 'stdp_long_axonal_delays' of github.com:JanVogelsang/nes…
JanVogelsang fabfed3
Removed paper plots again
JanVogelsang d6fc2f7
Merge branch 'master' of https://github.com/nest/nest-simulator into …
JanVogelsang 12403bf
Removed paper plots again
JanVogelsang 4df4467
Made iaf_psc_exp axonal-delay compatible
JanVogelsang fd3d024
Merge remote-tracking branch 'nest-master/master' into stdp_long_axon…
JanVogelsang 26a166b
Merge remote-tracking branch 'nest-master/master' into stdp_long_axon…
JanVogelsang 77d75c6
Merge branch 'master' of https://github.com/nest/nest-simulator into …
JanVogelsang e837ccb
Removed iaf_psc_delta from stdp ax-delay test again
JanVogelsang 01440e2
Formatting
JanVogelsang File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -147,7 +147,7 @@ class clopath_synapse : public Connection< targetidentifierT > | |||||
| // ConnectionBase. This avoids explicit name prefixes in all places these | ||||||
| // functions are used. Since ConnectionBase depends on the template parameter, | ||||||
| // they are not automatically found in the base class. | ||||||
| using ConnectionBase::get_delay; | ||||||
| using ConnectionBase::get_delay_ms; | ||||||
| using ConnectionBase::get_delay_steps; | ||||||
| using ConnectionBase::get_rport; | ||||||
| using ConnectionBase::get_target; | ||||||
|
|
@@ -184,13 +184,13 @@ class clopath_synapse : public Connection< targetidentifierT > | |||||
| }; | ||||||
|
|
||||||
| void | ||||||
| check_connection( Node& s, Node& t, size_t receptor_type, const CommonPropertiesType& ) | ||||||
| check_connection( Node& s, Node& t, const size_t receptor_type, const synindex syn_id, const CommonPropertiesType& ) | ||||||
| { | ||||||
| ConnTestDummyNode dummy_target; | ||||||
|
|
||||||
| ConnectionBase::check_connection_( dummy_target, s, t, receptor_type ); | ||||||
| ConnectionBase::check_connection_( dummy_target, s, t, syn_id, receptor_type ); | ||||||
|
|
||||||
| t.register_stdp_connection( t_lastspike_ - get_delay(), get_delay() ); | ||||||
| t.register_stdp_connection( t_lastspike_ - get_delay_ms(), get_delay_ms(), 0 ); | ||||||
| } | ||||||
|
|
||||||
| void | ||||||
|
|
@@ -241,7 +241,7 @@ clopath_synapse< targetidentifierT >::send( Event& e, size_t t, const CommonSyna | |||||
| // use accessor functions (inherited from Connection< >) to obtain delay and | ||||||
| // target | ||||||
| Node* target = get_target( t ); | ||||||
| double dendritic_delay = get_delay(); | ||||||
| double dendritic_delay = get_delay_ms(); | ||||||
|
||||||
| double dendritic_delay = get_delay_ms(); | |
| const double dendritic_delay = get_delay_ms(); |
Contributor
Author
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do not entirely understand the logic here, in part because the old code lacks comments. First of all, which bitfields belong together, i.e., should fit into some given space such as 4 or 8 bytes? Furthermore, we had 21 bits for delay in the past, now we go for an implementation-defined size (number of bytes in an
unsigned int). Is there any specific reason for choosing this size? If so, comment on it. If not, wouldn't it make more sense to use a well defined size, e.g., always 32 bits? That would make for 18:14 split, which seems generous towards the dendritic delays.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right now, in case of axonal+dendritic delays we use a 18:14 split, which is a lot and could be reduced by a few bits in case they were required for anything else. But right now we simply don't need more bits for anything, so this should be fine. However, I am not sure how to best guarantee that the underlying data type (here:
unsigned int) always has exactly 32 bits. For the single-delay-value case (which represents total delay, but will also be interpreted as pure dendritic delay by some models) we could also just use 21 bits as before, but we don't need those remaining 11 bits for anything else, so there is no reason to use a bitfield here (which might add a tiny bit of unnecessary computational overhead). However, one must definitely ensure that we always have at least 21b for this value, i.e., enforce 32 bits.According to StackOverflow, this would be a solution:
I think we should therefore use these values in all locations where we want to specify size explicitly. Then we could also remove the StaticAssert calls, which become redundant.