-
Notifications
You must be signed in to change notification settings - Fork 195
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
Add distance / dot product function for comparing spike train similarity #2192
base: main
Are you sure you want to change the base?
Add distance / dot product function for comparing spike train similarity #2192
Conversation
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.
Just a couple docstring/assert comments while you're working on the draft.
Co-authored-by: Zach McKenzie <[email protected]>
@h-mayorquin I'm taking another look at this and it seems in good shape. Maybe we should add an option to the compare_* function to select the matching strategy? |
@samuelgarcia @h-mayorquin let's move forward woth this! |
What would be missing to move forward? |
Hey guys, after this weekend and yesterday and today of frustrations I decided to implement this. This needs some testing so I will put in draft.
Here is the property that I mentioned to you that you can compare to the agreement scores.
The agreement scores are:
1 / ((distance^2 / dot_product) + 1)
As you can see in this graph for the sortngs that @alejoe91 shared with me:
So on the left is the agreement scores calculated with the current formula on main, on the right there is the agrement scores calculate with the distance metric function from the PR.
They are not exactly the same. The distance metric penalizes non-matching burstings but as that is a corner case the overall structure is the same.
[EDIT 1]
I profiled the function against the
make_agreement_scores
in main at this point in time 2023 / 11 / 14:Now I compared two sortings 10 hours long with 1000 units each. It takes the function around 3 minutes in this case.
These are the results:
Gist:
https://gist.github.com/h-mayorquin/ecc2db36e768b8caf3a3f890b20611ff