Very large difference in sorting using SC2 vs Lupin with dense recordings
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 38/100
- Issue type
- Bug
- Clarity
- Needs clarification
- Activity status
- Quiet
- Tech stack
- python
- Domain
- machine-learning
Research direction
Start by reproducing the comparison with the described 3-minute 3Brain BioCAM recording, SC2 and Lupin defaults, and the stated preprocessing changes. Compare the unit distributions and contamination metrics, then investigate the iterative-isosplit clustering crash. Done means identifying the cause of the differing outputs or documenting the necessary preprocessing or parameters.
Written by the indexing model from the issue text.
Description
I've been comparing SC2 and Lupin on the same 3 minutes-long recording of a cerebellar slice on a 3Brain BioCAM.
Running both sorters with default params and their own preprocessing, apart from removing the calibrating channel and switching from unsigned to signed, the outputs are extremely different.
SC2 results in 4187 units, distributed across the entire chip :
Of those, most seem contaminated with an average isi_violations_ratio of 18.8, and if I apply a threshold of 0.5% of contaminating spikes, only 120 units remain.
Zooming in, it seems that basically every channel has its own unit :
(I labelled each localization directly with the unit ID, in a less-than-elegant way).
Looking at the templates, those units look like this :
Whereas units founds outside of channels and in more believable clusters look like this :
I'm pretty sure those "channel units" are actually signal from the calibrating electrode that gets propagated through the entire chip. Considering how it looks, I'm not surprised they get detected as spikes.
Lupin, on the other hand, returns 191 units.
The distribution across the chip is a lot more believable, but the units are still very contaminated, with an average isi_violations_ratio of 11.6, and only 38 units retained after the threshold described above.
Based on this, I had the following questions :
- Is there something specific to Lupin that allows it to effectively filter out those noisy units ? I've thought that applying a filter based on SNR or some template metric on the output of SC2 could help, but I haven't been successful so far.
- Despite a seemingly more conservative sorting, the units that Lupin returns are still very contaminated. Is there something that can be done to help ? I've tried tuning some of the clustering parameters without success. I've also tried swapping
iterative-hdbscanforiterative-isosplitin SC2 but the run then crashes at the clustering step.
Thanks !
- Dominant language
- Python
- Stars
- 855
- Forks
- 280
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 38
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from SpikeInterface/spikeinterface
-
testing
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
SpikeInterface/spikeinterface#4756 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
SpikeInterface/spikeinterface#4510 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
SpikeInterface/spikeinterface#4824 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 32/100
SpikeInterface/spikeinterface#4816 ·
Maintainers usually reply within 1 day
-
GatherToNpy/Zarr could pre-allocate stores when number of spike is knownPossibly taken @samuelgarcia claimed this 6 days ago. Openperformance
Difficulty 4/5 3-5 days Newbie friendliness 55/100
SpikeInterface/spikeinterface#4787 · 1 comment · 1 assignee ·
Maintainers usually reply within 1 day
All issues in SpikeInterface/spikeinterface
Similar issues
-
docs pydanty:is-working
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
pydantic/pydantic-ai#9800 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
[Bug]: With --api-server-count > 1, gauges such as vllm:num_requests_running have no samples until the first requestPossibly taken @roy6n23 claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
vllm-project/vllm#59988 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
pymc-devs/pymc-examples#897 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 91/100